diff --git a/tests/wpt/metadata/2dcontext/compositing/2d.composite.operation.clear.html.ini b/tests/wpt/metadata/2dcontext/compositing/2d.composite.operation.clear.html.ini new file mode 100644 index 00000000000..8ddda3e4602 --- /dev/null +++ b/tests/wpt/metadata/2dcontext/compositing/2d.composite.operation.clear.html.ini @@ -0,0 +1,5 @@ +[2d.composite.operation.clear.html] + type: testharness + [Canvas test: 2d.composite.operation.clear] + expected: FAIL + diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html.ini new file mode 100644 index 00000000000..fd39e5a9200 --- /dev/null +++ b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html.ini @@ -0,0 +1,5 @@ +[2d.drawImage.zerocanvas.html] + type: testharness + [Canvas test: 2d.drawImage.zerocanvas] + expected: FAIL + diff --git a/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini new file mode 100644 index 00000000000..c5c6c54bdb1 --- /dev/null +++ b/tests/wpt/metadata/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini @@ -0,0 +1,5 @@ +[2d.drawImage.zerosource.html] + type: testharness + [drawImage with zero-sized source rectangle draws nothing without exception] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 11844dae048..b5300424b2e 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -98,8 +98,8 @@ "url": "/XMLHttpRequest/send-authentication-prompt-manual.htm" }, { - "path": "ambient-light/AmbientLightSensor_onchange-manual.html", - "url": "/ambient-light/AmbientLightSensor_onchange-manual.html" + "path": "ambient-light/AmbientLightSensor_onerror-manual.https.html", + "url": "/ambient-light/AmbientLightSensor_onerror-manual.https.html" }, { "path": "annotation-model/annotations/annotationMusts-manual.html", @@ -133,6 +133,34 @@ "path": "annotation-protocol/server/server-manual.html", "url": "/annotation-protocol/server/server-manual.html" }, + { + "path": "annotation-vocab/01-validJSON-LD-manual.html", + "url": "/annotation-vocab/01-validJSON-LD-manual.html" + }, + { + "path": "annotation-vocab/02-context-to-triples-manual.html", + "url": "/annotation-vocab/02-context-to-triples-manual.html" + }, + { + "path": "annotation-vocab/03-graphs-are-isomorphic-manual.html", + "url": "/annotation-vocab/03-graphs-are-isomorphic-manual.html" + }, + { + "path": "annotation-vocab/04-graphs-convert-lossless-manual.html", + "url": "/annotation-vocab/04-graphs-convert-lossless-manual.html" + }, + { + "path": "annotation-vocab/05-ontology-parsed-as-valid-manual.html", + "url": "/annotation-vocab/05-ontology-parsed-as-valid-manual.html" + }, + { + "path": "annotation-vocab/06-ontology-internally-consistent-manual.html", + "url": "/annotation-vocab/06-ontology-internally-consistent-manual.html" + }, + { + "path": "auxclick/auxclick_event-manual.html", + "url": "/auxclick/auxclick_event-manual.html" + }, { "path": "battery-status/battery-charging-manual.html", "url": "/battery-status/battery-charging-manual.html" @@ -157,6 +185,14 @@ "path": "fullscreen/api/document-exit-fullscreen-manual.html", "url": "/fullscreen/api/document-exit-fullscreen-manual.html" }, + { + "path": "fullscreen/api/document-exit-fullscreen-timing-manual.html", + "url": "/fullscreen/api/document-exit-fullscreen-timing-manual.html" + }, + { + "path": "fullscreen/api/document-exit-fullscreen-twice-manual.html", + "url": "/fullscreen/api/document-exit-fullscreen-twice-manual.html" + }, { "path": "fullscreen/api/document-fullscreen-element-manual.html", "url": "/fullscreen/api/document-fullscreen-element-manual.html" @@ -189,6 +225,26 @@ "path": "fullscreen/api/element-ready-check-not-in-document-manual.html", "url": "/fullscreen/api/element-ready-check-not-in-document-manual.html" }, + { + "path": "fullscreen/api/element-request-fullscreen-and-exit-iframe-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-and-exit-iframe-manual.html" + }, + { + "path": "fullscreen/api/element-request-fullscreen-and-move-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-and-move-manual.html" + }, + { + "path": "fullscreen/api/element-request-fullscreen-and-move-to-iframe-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-and-move-to-iframe-manual.html" + }, + { + "path": "fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html" + }, + { + "path": "fullscreen/api/element-request-fullscreen-and-remove-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-and-remove-manual.html" + }, { "path": "fullscreen/api/element-request-fullscreen-manual.html", "url": "/fullscreen/api/element-request-fullscreen-manual.html" @@ -197,6 +253,10 @@ "path": "fullscreen/api/element-request-fullscreen-non-top-manual.html", "url": "/fullscreen/api/element-request-fullscreen-non-top-manual.html" }, + { + "path": "fullscreen/api/element-request-fullscreen-same-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-same-manual.html" + }, { "path": "fullscreen/api/element-request-fullscreen-svg-rect-manual.html", "url": "/fullscreen/api/element-request-fullscreen-svg-rect-manual.html" @@ -205,10 +265,26 @@ "path": "fullscreen/api/element-request-fullscreen-svg-svg-manual.html", "url": "/fullscreen/api/element-request-fullscreen-svg-svg-manual.html" }, + { + "path": "fullscreen/api/element-request-fullscreen-timing-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-timing-manual.html" + }, { "path": "fullscreen/api/element-request-fullscreen-top-manual.html", "url": "/fullscreen/api/element-request-fullscreen-top-manual.html" }, + { + "path": "fullscreen/api/element-request-fullscreen-twice-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-twice-manual.html" + }, + { + "path": "fullscreen/api/element-request-fullscreen-two-elements-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-two-elements-manual.html" + }, + { + "path": "fullscreen/api/element-request-fullscreen-two-iframes-manual.html", + "url": "/fullscreen/api/element-request-fullscreen-two-iframes-manual.html" + }, { "path": "fullscreen/model/remove-child-manual.html", "url": "/fullscreen/model/remove-child-manual.html" @@ -361,6 +437,10 @@ "path": "html-media-capture/capture_audio_cancel-manual.html", "url": "/html-media-capture/capture_audio_cancel-manual.html" }, + { + "path": "html-media-capture/capture_fallback_file_upload-manual.html", + "url": "/html-media-capture/capture_fallback_file_upload-manual.html" + }, { "path": "html-media-capture/capture_image-manual.html", "url": "/html-media-capture/capture_image-manual.html" @@ -809,6 +889,14 @@ "path": "html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-scrollamount-effect-manual.html", "url": "/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-scrollamount-effect-manual.html" }, + { + "path": "html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-start-manual.html", + "url": "/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-start-manual.html" + }, + { + "path": "html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-stop-manual.html", + "url": "/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-stop-manual.html" + }, { "path": "html/semantics/embedded-content/media-elements/audio_controls_present-manual.html", "url": "/html/semantics/embedded-content/media-elements/audio_controls_present-manual.html" @@ -1181,6 +1269,10 @@ "path": "pointerevents/pointerevent_attributes_nohover_pointers-manual.html", "url": "/pointerevents/pointerevent_attributes_nohover_pointers-manual.html" }, + { + "path": "pointerevents/pointerevent_boundary_events_in_capturing-manual.html", + "url": "/pointerevents/pointerevent_boundary_events_in_capturing-manual.html" + }, { "path": "pointerevents/pointerevent_capture_mouse-manual.html", "url": "/pointerevents/pointerevent_capture_mouse-manual.html" @@ -1201,10 +1293,6 @@ "path": "pointerevents/pointerevent_element_haspointercapture_release_pending_capture-manual.html", "url": "/pointerevents/pointerevent_element_haspointercapture_release_pending_capture-manual.html" }, - { - "path": "pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html", - "url": "/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html" - }, { "path": "pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html", "url": "/pointerevents/pointerevent_lostpointercapture_for_disconnected_node-manual.html" @@ -1293,6 +1381,14 @@ "path": "pointerevents/pointerevent_releasepointercapture_release_right_after_capture-manual.html", "url": "/pointerevents/pointerevent_releasepointercapture_release_right_after_capture-manual.html" }, + { + "path": "pointerevents/pointerevent_sequence_at_implicit_release_on_click-manual.html", + "url": "/pointerevents/pointerevent_sequence_at_implicit_release_on_click-manual.html" + }, + { + "path": "pointerevents/pointerevent_sequence_at_implicit_release_on_drag-manual.html", + "url": "/pointerevents/pointerevent_sequence_at_implicit_release_on_drag-manual.html" + }, { "path": "pointerevents/pointerevent_setpointercapture_disconnected-manual.html", "url": "/pointerevents/pointerevent_setpointercapture_disconnected-manual.html" @@ -1449,6 +1545,10 @@ "path": "pointerlock/pointerlock_shadow-manual.html", "url": "/pointerlock/pointerlock_shadow-manual.html" }, + { + "path": "presentation-api/controlling-ua/PresentationAvailability_onchange-manual.html", + "url": "/presentation-api/controlling-ua/PresentationAvailability_onchange-manual.html" + }, { "path": "presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html", "url": "/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html" @@ -4207,46 +4307,6 @@ ], "url": "/content-security-policy/font-src/font-whitelisted.html" }, - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html" - }, { "path": "html/dom/elements/global-attributes/dir_auto-EN-L.html", "references": [ @@ -12651,6 +12711,10 @@ "path": "IndexedDB/cursor-overloads.htm", "url": "/IndexedDB/cursor-overloads.htm" }, + { + "path": "IndexedDB/historical.html", + "url": "/IndexedDB/historical.html" + }, { "path": "IndexedDB/idb_binary_key_conversion.htm", "url": "/IndexedDB/idb_binary_key_conversion.htm" @@ -13583,6 +13647,14 @@ "path": "IndexedDB/idbobjectstore_put9.htm", "url": "/IndexedDB/idbobjectstore_put9.htm" }, + { + "path": "IndexedDB/idbrequest_error.html", + "url": "/IndexedDB/idbrequest_error.html" + }, + { + "path": "IndexedDB/idbrequest_result.html", + "url": "/IndexedDB/idbrequest_result.html" + }, { "path": "IndexedDB/idbtransaction-oncomplete.htm", "url": "/IndexedDB/idbtransaction-oncomplete.htm" @@ -13647,6 +13719,10 @@ "path": "IndexedDB/list_ordering.htm", "url": "/IndexedDB/list_ordering.htm" }, + { + "path": "IndexedDB/name-scopes.html", + "url": "/IndexedDB/name-scopes.html" + }, { "path": "IndexedDB/objectstore_keyorder.htm", "url": "/IndexedDB/objectstore_keyorder.htm" @@ -14692,24 +14768,36 @@ "url": "/XMLHttpRequest/xmlhttprequest-unsent.htm" }, { - "path": "ambient-light/AmbientLightSensor_browsing_context.html", - "url": "/ambient-light/AmbientLightSensor_browsing_context.html" + "path": "accelerometer/idlharness.https.html", + "url": "/accelerometer/idlharness.https.html" }, { - "path": "ambient-light/AmbientLightSensor_onstatechange.html", - "url": "/ambient-light/AmbientLightSensor_onstatechange.html" + "path": "ambient-light/AmbientLightSensor_browsing_context.https.html", + "url": "/ambient-light/AmbientLightSensor_browsing_context.https.html" }, { - "path": "ambient-light/AmbientLightSensor_start.html", - "url": "/ambient-light/AmbientLightSensor_start.html" + "path": "ambient-light/AmbientLightSensor_insecure_context.html", + "url": "/ambient-light/AmbientLightSensor_insecure_context.html" }, { - "path": "ambient-light/AmbientLightSensor_stop.html", - "url": "/ambient-light/AmbientLightSensor_stop.html" + "path": "ambient-light/AmbientLightSensor_onchange.https.html", + "url": "/ambient-light/AmbientLightSensor_onchange.https.html" }, { - "path": "ambient-light/idlharness.html", - "url": "/ambient-light/idlharness.html" + "path": "ambient-light/AmbientLightSensor_reading.https.html", + "url": "/ambient-light/AmbientLightSensor_reading.https.html" + }, + { + "path": "ambient-light/AmbientLightSensor_start.https.html", + "url": "/ambient-light/AmbientLightSensor_start.https.html" + }, + { + "path": "ambient-light/AmbientLightSensor_stop.https.html", + "url": "/ambient-light/AmbientLightSensor_stop.https.html" + }, + { + "path": "ambient-light/idlharness.https.html", + "url": "/ambient-light/idlharness.https.html" }, { "path": "app-uri/appURI_test.html", @@ -14731,6 +14819,10 @@ "path": "battery-status/battery-promise.html", "url": "/battery-status/battery-promise.html" }, + { + "path": "clear-site-data/navigation.html", + "url": "/clear-site-data/navigation.html" + }, { "path": "compat/webkit-text-fill-color-currentColor.html", "url": "/compat/webkit-text-fill-color-currentColor.html" @@ -15235,6 +15327,66 @@ "path": "content-security-policy/child-src/child-src-worker-blocked.sub.html", "url": "/content-security-policy/child-src/child-src-worker-blocked.sub.html" }, + { + "path": "content-security-policy/embedded-enforcement/allow_csp_from-header.html", + "url": "/content-security-policy/embedded-enforcement/allow_csp_from-header.html" + }, + { + "path": "content-security-policy/embedded-enforcement/embedding_csp-header.html", + "url": "/content-security-policy/embedded-enforcement/embedding_csp-header.html" + }, + { + "path": "content-security-policy/embedded-enforcement/iframe-csp-attribute.html", + "url": "/content-security-policy/embedded-enforcement/iframe-csp-attribute.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-general.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-general.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-hashes.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-hashes.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-hosts.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-hosts.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-paths.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-paths.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-ports.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-ports.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-protocols.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-protocols.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-none.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-none.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-self.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-self.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-strict_dynamic.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-strict_dynamic.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_eval.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_eval.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html" + }, + { + "path": "content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_inline.html", + "url": "/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_inline.html" + }, { "path": "content-security-policy/frame-ancestors/deep-allows-none.sub.html", "url": "/content-security-policy/frame-ancestors/deep-allows-none.sub.html" @@ -15423,6 +15575,10 @@ "path": "content-security-policy/script-src/script-src-strict_dynamic_in_img-src.html", "url": "/content-security-policy/script-src/script-src-strict_dynamic_in_img-src.html" }, + { + "path": "content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html", + "url": "/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html" + }, { "path": "content-security-policy/script-src/script-src-strict_dynamic_meta_tag.html", "url": "/content-security-policy/script-src/script-src-strict_dynamic_meta_tag.html" @@ -15647,6 +15803,10 @@ "path": "cors/status.htm", "url": "/cors/status.htm" }, + { + "path": "css-values/unset-value-storage.html", + "url": "/css-values/unset-value-storage.html" + }, { "path": "cssom-view/HTMLBody-ScrollArea_quirksmode.html", "url": "/cssom-view/HTMLBody-ScrollArea_quirksmode.html" @@ -15679,10 +15839,42 @@ "path": "cssom-view/scrollingElement.html", "url": "/cssom-view/scrollingElement.html" }, + { + "path": "cssom/CSSKeyframesRule.html", + "url": "/cssom/CSSKeyframesRule.html" + }, + { + "path": "cssom/CSSNamespaceRule.html", + "url": "/cssom/CSSNamespaceRule.html" + }, + { + "path": "cssom/CSSRuleList.html", + "url": "/cssom/CSSRuleList.html" + }, + { + "path": "cssom/CSSStyleRule.html", + "url": "/cssom/CSSStyleRule.html" + }, + { + "path": "cssom/CSSStyleSheet.html", + "url": "/cssom/CSSStyleSheet.html" + }, + { + "path": "cssom/MediaList.html", + "url": "/cssom/MediaList.html" + }, + { + "path": "cssom/StyleSheetList.html", + "url": "/cssom/StyleSheetList.html" + }, { "path": "cssom/serialize-values.html", "url": "/cssom/serialize-values.html" }, + { + "path": "cssom/shorthand-serialization.html", + "url": "/cssom/shorthand-serialization.html" + }, { "path": "custom-elements/CustomElementRegistry.html", "url": "/custom-elements/CustomElementRegistry.html" @@ -15867,226 +16059,6 @@ "path": "custom-elements/upgrading/upgrading-parser-created-element.html", "url": "/custom-elements/upgrading/upgrading-parser-created-element.html" }, - { - "path": "custom-elements/v0/concepts/custom-elements-type-naming.html", - "url": "/custom-elements/v0/concepts/custom-elements-type-naming.html" - }, - { - "path": "custom-elements/v0/creating-and-passing-registries/new-registry-test.html", - "url": "/custom-elements/v0/creating-and-passing-registries/new-registry-test.html" - }, - { - "path": "custom-elements/v0/creating-and-passing-registries/no-registry-test.html", - "url": "/custom-elements/v0/creating-and-passing-registries/no-registry-test.html" - }, - { - "path": "custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html", - "url": "/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html" - }, - { - "path": "custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html", - "url": "/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html", - "url": "/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html" - }, - { - "path": "custom-elements/v0/instantiating/changing-is-attribute.html", - "url": "/custom-elements/v0/instantiating/changing-is-attribute.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html", - "url": "/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-constructor-local-name.html", - "url": "/custom-elements/v0/instantiating/custom-element-constructor-local-name.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-constructor-namespace.html", - "url": "/custom-elements/v0/instantiating/custom-element-constructor-namespace.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-constructor-node-document.html", - "url": "/custom-elements/v0/instantiating/custom-element-constructor-node-document.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-constructor-prototype.html", - "url": "/custom-elements/v0/instantiating/custom-element-constructor-prototype.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-prototype.html", - "url": "/custom-elements/v0/instantiating/custom-element-prototype.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-type-is-attribute.html", - "url": "/custom-elements/v0/instantiating/custom-element-type-is-attribute.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html", - "url": "/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html" - }, - { - "path": "custom-elements/v0/instantiating/custom-element-type-local-name.html", - "url": "/custom-elements/v0/instantiating/custom-element-type-local-name.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html" - }, - { - "path": "custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html", - "url": "/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html" - }, - { - "path": "custom-elements/v0/instantiating/non-configurable-constructor-property.html", - "url": "/custom-elements/v0/instantiating/non-configurable-constructor-property.html" - }, - { - "path": "custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html", - "url": "/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html" - }, - { - "path": "custom-elements/v0/instantiating/unchanged-attribute.html", - "url": "/custom-elements/v0/instantiating/unchanged-attribute.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html" - }, - { - "path": "custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html", - "url": "/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html" - }, - { - "path": "custom-elements/v0/registering/element-registration-algorithm-no-registry.html", - "url": "/custom-elements/v0/registering/element-registration-algorithm-no-registry.html" - }, - { - "path": "custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html", - "url": "/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html" - }, - { - "path": "custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html", - "url": "/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html", - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html", - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-elements-interface-html-element.html", - "url": "/custom-elements/v0/registering/unresolved-elements-interface-html-element.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html", - "url": "/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html" - }, - { - "path": "custom-elements/v0/registering/unresolved-elements-interface-svg-element.html", - "url": "/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html" - }, { "path": "dom/collections/HTMLCollection-as-proto-length-get-throws.html", "url": "/dom/collections/HTMLCollection-as-proto-length-get-throws.html" @@ -16123,6 +16095,10 @@ "path": "dom/events/CustomEvent.html", "url": "/dom/events/CustomEvent.html" }, + { + "path": "dom/events/Event-cancelBubble.html", + "url": "/dom/events/Event-cancelBubble.html" + }, { "path": "dom/events/Event-constants.html", "url": "/dom/events/Event-constants.html" @@ -16139,6 +16115,10 @@ "path": "dom/events/Event-defaultPrevented.html", "url": "/dom/events/Event-defaultPrevented.html" }, + { + "path": "dom/events/Event-dispatch-bubble-canceled.html", + "url": "/dom/events/Event-dispatch-bubble-canceled.html" + }, { "path": "dom/events/Event-dispatch-bubbles-false.html", "url": "/dom/events/Event-dispatch-bubbles-false.html" @@ -16159,6 +16139,10 @@ "path": "dom/events/Event-dispatch-handlers-changed.html", "url": "/dom/events/Event-dispatch-handlers-changed.html" }, + { + "path": "dom/events/Event-dispatch-multiple-cancelBubble.html", + "url": "/dom/events/Event-dispatch-multiple-cancelBubble.html" + }, { "path": "dom/events/Event-dispatch-multiple-stopPropagation.html", "url": "/dom/events/Event-dispatch-multiple-stopPropagation.html" @@ -17559,14 +17543,6 @@ "path": "encrypted-media/drm-events-session-closed-event.html", "url": "/encrypted-media/drm-events-session-closed-event.html" }, - { - "path": "encrypted-media/drm-events.html", - "url": "/encrypted-media/drm-events.html" - }, - { - "path": "encrypted-media/drm-expiration.html", - "url": "/encrypted-media/drm-expiration.html" - }, { "path": "encrypted-media/drm-generate-request-disallowed-input.html", "url": "/encrypted-media/drm-generate-request-disallowed-input.html" @@ -17575,110 +17551,18 @@ "path": "encrypted-media/drm-invalid-license.html", "url": "/encrypted-media/drm-invalid-license.html" }, - { - "path": "encrypted-media/drm-keystatuses-multiple-sessions.html", - "url": "/encrypted-media/drm-keystatuses-multiple-sessions.html" - }, - { - "path": "encrypted-media/drm-keystatuses.html", - "url": "/encrypted-media/drm-keystatuses.html" - }, { "path": "encrypted-media/drm-mp4-onencrypted.html", "url": "/encrypted-media/drm-mp4-onencrypted.html" }, { - "path": "encrypted-media/drm-mp4-playback-destroy-persistent-license.html", - "url": "/encrypted-media/drm-mp4-playback-destroy-persistent-license.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-persistent-license-events.html", - "url": "/encrypted-media/drm-mp4-playback-persistent-license-events.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-persistent-license.html", - "url": "/encrypted-media/drm-mp4-playback-persistent-license.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-persistent-usage-record-events.html", - "url": "/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html", - "url": "/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-multikey.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-multikey.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-multisession.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-multisession.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-two-videos.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-two-videos.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary-waitingforkey.html", - "url": "/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html" - }, - { - "path": "encrypted-media/drm-mp4-playback-temporary.html", - "url": "/encrypted-media/drm-mp4-playback-temporary.html" + "path": "encrypted-media/drm-mp4-requestmediakeysystemaccess.html", + "url": "/encrypted-media/drm-mp4-requestmediakeysystemaccess.html" }, { "path": "encrypted-media/drm-mp4-reset-src-after-setmediakeys.html", "url": "/encrypted-media/drm-mp4-reset-src-after-setmediakeys.html" }, - { - "path": "encrypted-media/drm-mp4-setmediakeys-again-after-playback.html", - "url": "/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html" - }, - { - "path": "encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html", - "url": "/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html" - }, - { - "path": "encrypted-media/drm-mp4-setmediakeys-at-same-time.html", - "url": "/encrypted-media/drm-mp4-setmediakeys-at-same-time.html" - }, - { - "path": "encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html", - "url": "/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html" - }, - { - "path": "encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html", - "url": "/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html" - }, - { - "path": "encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html", - "url": "/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html" - }, { "path": "encrypted-media/drm-mp4-setmediakeys.html", "url": "/encrypted-media/drm-mp4-setmediakeys.html" @@ -17699,18 +17583,10 @@ "path": "encrypted-media/drm-mp4-unique-origin.html", "url": "/encrypted-media/drm-mp4-unique-origin.html" }, - { - "path": "encrypted-media/drm-mp4-waiting-for-a-key.html", - "url": "/encrypted-media/drm-mp4-waiting-for-a-key.html" - }, { "path": "encrypted-media/drm-not-callable-after-createsession.html", "url": "/encrypted-media/drm-not-callable-after-createsession.html" }, - { - "path": "encrypted-media/drm-temporary-license-type.html", - "url": "/encrypted-media/drm-temporary-license-type.html" - }, { "path": "encrypted-media/idlharness.html", "url": "/encrypted-media/idlharness.html" @@ -18327,6 +18203,10 @@ "path": "fetch/api/request/multi-globals/url-parsing.html", "url": "/fetch/api/request/multi-globals/url-parsing.html" }, + { + "path": "fetch/api/request/request-bad-port.html", + "url": "/fetch/api/request/request-bad-port.html" + }, { "path": "fetch/api/request/request-cache-default-conditional.html", "url": "/fetch/api/request/request-cache-default-conditional.html" @@ -18491,6 +18371,14 @@ "path": "fetch/nosniff/worker.html", "url": "/fetch/nosniff/worker.html" }, + { + "path": "fullscreen/api/document-exit-fullscreen-active-document.html", + "url": "/fullscreen/api/document-exit-fullscreen-active-document.html" + }, + { + "path": "fullscreen/api/document-fullscreen-enabled-active-document.html", + "url": "/fullscreen/api/document-fullscreen-enabled-active-document.html" + }, { "path": "fullscreen/api/document-fullscreen-enabled.html", "url": "/fullscreen/api/document-fullscreen-enabled.html" @@ -18499,6 +18387,14 @@ "path": "fullscreen/api/document-onfullscreenerror.html", "url": "/fullscreen/api/document-onfullscreenerror.html" }, + { + "path": "fullscreen/api/element-request-fullscreen-not-allowed.html", + "url": "/fullscreen/api/element-request-fullscreen-not-allowed.html" + }, + { + "path": "fullscreen/api/historical.html", + "url": "/fullscreen/api/historical.html" + }, { "path": "gamepad/idlharness.html", "url": "/gamepad/idlharness.html" @@ -18543,6 +18439,10 @@ "path": "geolocation-API/watchPosition_permission_deny.html", "url": "/geolocation-API/watchPosition_permission_deny.html" }, + { + "path": "gyroscope/idlharness.https.html", + "url": "/gyroscope/idlharness.https.html" + }, { "path": "hr-time/basic.html", "url": "/hr-time/basic.html" @@ -18579,10 +18479,6 @@ "path": "html-imports/html-link-element/import-attribute.html", "url": "/html-imports/html-link-element/import-attribute.html" }, - { - "path": "html-media-capture/capture_fallback_file_upload.html", - "url": "/html-media-capture/capture_fallback_file_upload.html" - }, { "path": "html-media-capture/capture_reflect.html", "url": "/html-media-capture/capture_reflect.html" @@ -18639,6 +18535,10 @@ "path": "html/browsers/browsing-the-web/history-traversal/popstate_event.html", "url": "/html/browsers/browsing-the-web/history-traversal/popstate_event.html" }, + { + "path": "html/browsers/browsing-the-web/history-traversal/same-url.html", + "url": "/html/browsers/browsing-the-web/history-traversal/same-url.html" + }, { "path": "html/browsers/browsing-the-web/history-traversal/unset_context_name-1.html", "url": "/html/browsers/browsing-the-web/history-traversal/unset_context_name-1.html" @@ -20295,6 +20195,26 @@ "path": "html/semantics/document-metadata/the-link-element/link-style-error-01.html", "url": "/html/semantics/document-metadata/the-link-element/link-style-error-01.html" }, + { + "path": "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html", + "url": "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html" + }, + { + "path": "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html", + "url": "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html" + }, + { + "path": "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html", + "url": "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html" + }, + { + "path": "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html", + "url": "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html" + }, + { + "path": "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html", + "url": "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html" + }, { "path": "html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html", "url": "/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html" @@ -21803,10 +21723,6 @@ "path": "html/semantics/forms/form-submission-0/getactionurl.html", "url": "/html/semantics/forms/form-submission-0/getactionurl.html" }, - { - "path": "html/semantics/forms/form-submission-0/submit-entity-body.html", - "url": "/html/semantics/forms/form-submission-0/submit-entity-body.html" - }, { "path": "html/semantics/forms/form-submission-0/url-encoded.html", "url": "/html/semantics/forms/form-submission-0/url-encoded.html" @@ -21815,6 +21731,10 @@ "path": "html/semantics/forms/historical.html", "url": "/html/semantics/forms/historical.html" }, + { + "path": "html/semantics/forms/resetting-a-form/reset-event.html", + "url": "/html/semantics/forms/resetting-a-form/reset-event.html" + }, { "path": "html/semantics/forms/resetting-a-form/reset-form.html", "url": "/html/semantics/forms/resetting-a-form/reset-form.html" @@ -22131,6 +22051,10 @@ "path": "html/semantics/forms/the-select-element/select-remove.html", "url": "/html/semantics/forms/the-select-element/select-remove.html" }, + { + "path": "html/semantics/forms/the-select-element/select-value.html", + "url": "/html/semantics/forms/the-select-element/select-value.html" + }, { "path": "html/semantics/forms/the-select-element/selected-index.html", "url": "/html/semantics/forms/the-select-element/selected-index.html" @@ -22855,10 +22779,18 @@ "path": "html/webappapis/atob/base64.html", "url": "/html/webappapis/atob/base64.html" }, + { + "path": "html/webappapis/idle-callbacks/basic.html", + "url": "/html/webappapis/idle-callbacks/basic.html" + }, { "path": "html/webappapis/idle-callbacks/callback-exception.html", "url": "/html/webappapis/idle-callbacks/callback-exception.html" }, + { + "path": "html/webappapis/idle-callbacks/callback-idle-periods.html", + "url": "/html/webappapis/idle-callbacks/callback-idle-periods.html" + }, { "path": "html/webappapis/idle-callbacks/callback-iframe.html", "url": "/html/webappapis/idle-callbacks/callback-iframe.html" @@ -22871,6 +22803,10 @@ "path": "html/webappapis/idle-callbacks/callback-multiple-calls.html", "url": "/html/webappapis/idle-callbacks/callback-multiple-calls.html" }, + { + "path": "html/webappapis/idle-callbacks/callback-timeout-with-raf.html", + "url": "/html/webappapis/idle-callbacks/callback-timeout-with-raf.html" + }, { "path": "html/webappapis/idle-callbacks/callback-timeout.html", "url": "/html/webappapis/idle-callbacks/callback-timeout.html" @@ -22907,6 +22843,10 @@ "path": "html/webappapis/scripting/events/event-handler-javascript.html", "url": "/html/webappapis/scripting/events/event-handler-javascript.html" }, + { + "path": "html/webappapis/scripting/events/event-handler-onauxclick.html", + "url": "/html/webappapis/scripting/events/event-handler-onauxclick.html" + }, { "path": "html/webappapis/scripting/events/event-handler-onresize.html", "url": "/html/webappapis/scripting/events/event-handler-onresize.html" @@ -22991,6 +22931,10 @@ "path": "html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html", "url": "/html/webappapis/scripting/processing-model-2/compile-error-in-setTimeout.html" }, + { + "path": "html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html", + "url": "/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html" + }, { "path": "html/webappapis/scripting/processing-model-2/compile-error-same-origin.html", "url": "/html/webappapis/scripting/processing-model-2/compile-error-same-origin.html" @@ -23035,6 +22979,10 @@ "path": "html/webappapis/scripting/processing-model-2/runtime-error-in-window-onerror.html", "url": "/html/webappapis/scripting/processing-model-2/runtime-error-in-window-onerror.html" }, + { + "path": "html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html", + "url": "/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html" + }, { "path": "html/webappapis/scripting/processing-model-2/runtime-error-same-origin.html", "url": "/html/webappapis/scripting/processing-model-2/runtime-error-same-origin.html" @@ -23187,6 +23135,10 @@ "path": "innerText/setter.html", "url": "/innerText/setter.html" }, + { + "path": "input-events/idlharness.html", + "url": "/input-events/idlharness.html" + }, { "path": "js/behaviours/SetPrototypeOf-window.html", "url": "/js/behaviours/SetPrototypeOf-window.html" @@ -23243,6 +23195,10 @@ "path": "js/builtins/WeakMap.prototype-properties.html", "url": "/js/builtins/WeakMap.prototype-properties.html" }, + { + "path": "magnetometer/idlharness.https.html", + "url": "/magnetometer/idlharness.https.html" + }, { "path": "mathml/presentation-markup/fractions/frac-1.html", "url": "/mathml/presentation-markup/fractions/frac-1.html" @@ -24731,6 +24687,82 @@ "path": "navigation-timing/idlharness.html", "url": "/navigation-timing/idlharness.html" }, + { + "path": "navigation-timing/nav2_idlharness.html", + "url": "/navigation-timing/nav2_idlharness.html" + }, + { + "path": "navigation-timing/nav2_test_attributes_exist.html", + "url": "/navigation-timing/nav2_test_attributes_exist.html" + }, + { + "path": "navigation-timing/nav2_test_attributes_values.html", + "url": "/navigation-timing/nav2_test_attributes_values.html" + }, + { + "path": "navigation-timing/nav2_test_document_open.html", + "url": "/navigation-timing/nav2_test_document_open.html" + }, + { + "path": "navigation-timing/nav2_test_instance_accessors.html", + "url": "/navigation-timing/nav2_test_instance_accessors.html" + }, + { + "path": "navigation-timing/nav2_test_navigate_within_document.html", + "url": "/navigation-timing/nav2_test_navigate_within_document.html" + }, + { + "path": "navigation-timing/nav2_test_navigation_type_backforward.html", + "url": "/navigation-timing/nav2_test_navigation_type_backforward.html" + }, + { + "path": "navigation-timing/nav2_test_navigation_type_navigate.html", + "url": "/navigation-timing/nav2_test_navigation_type_navigate.html" + }, + { + "path": "navigation-timing/nav2_test_navigation_type_reload.html", + "url": "/navigation-timing/nav2_test_navigation_type_reload.html" + }, + { + "path": "navigation-timing/nav2_test_open_blank_page.html", + "url": "/navigation-timing/nav2_test_open_blank_page.html" + }, + { + "path": "navigation-timing/nav2_test_redirect_none.html", + "url": "/navigation-timing/nav2_test_redirect_none.html" + }, + { + "path": "navigation-timing/nav2_test_redirect_server.html", + "url": "/navigation-timing/nav2_test_redirect_server.html" + }, + { + "path": "navigation-timing/nav2_test_redirect_xserver.html", + "url": "/navigation-timing/nav2_test_redirect_xserver.html" + }, + { + "path": "navigation-timing/nav2_test_redirect_xserver_opt_in.html", + "url": "/navigation-timing/nav2_test_redirect_xserver_opt_in.html" + }, + { + "path": "navigation-timing/nav2_test_unique_nav_instances.html", + "url": "/navigation-timing/nav2_test_unique_nav_instances.html" + }, + { + "path": "navigation-timing/nav2_test_unloadEvents_no_previous_document.html", + "url": "/navigation-timing/nav2_test_unloadEvents_no_previous_document.html" + }, + { + "path": "navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html", + "url": "/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html" + }, + { + "path": "navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html", + "url": "/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html" + }, + { + "path": "navigation-timing/nav2_test_unloadEvents_with_previous_document.html", + "url": "/navigation-timing/nav2_test_unloadEvents_with_previous_document.html" + }, { "path": "navigation-timing/test_document_open.html", "url": "/navigation-timing/test_document_open.html" @@ -24839,6 +24871,5854 @@ "path": "notifications/permission.html", "url": "/notifications/permission.html" }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.lighter.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.lighter.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.xor.html", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.xor.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.lighter.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.lighter.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.xor.html", + "url": "/offscreen-canvas/compositing/2d.composite.clip.xor.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.clip.xor.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.clip.xor.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.default.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.image.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.range.html", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.lighter.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.lighter.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.lighter.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.lighter.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.source-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.source-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.xor.html", + "url": "/offscreen-canvas/compositing/2d.composite.image.xor.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.image.xor.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.image.xor.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.casesensitive.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.clear.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.clear.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.clear.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.clear.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.darker.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.darker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.darker.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.darker.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.default.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.default.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.default.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.default.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.get.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.get.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.get.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.get.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.highlight.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.highlight.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.over.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.unrecognised.html", + "url": "/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.lighter.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.lighter.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.xor.html", + "url": "/offscreen-canvas/compositing/2d.composite.solid.xor.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.solid.xor.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.solid.xor.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.lighter.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.lighter.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-over.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-over.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.xor.html", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.xor.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html" + }, + { + "path": "offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js", + "url": "/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.html" + }, + { + "path": "offscreen-canvas/conformance-requirements/2d.coordinatespace.html", + "url": "/offscreen-canvas/conformance-requirements/2d.coordinatespace.html" + }, + { + "path": "offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js", + "url": "/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.html" + }, + { + "path": "offscreen-canvas/conformance-requirements/2d.missingargs.html", + "url": "/offscreen-canvas/conformance-requirements/2d.missingargs.html" + }, + { + "path": "offscreen-canvas/conformance-requirements/2d.missingargs.worker.js", + "url": "/offscreen-canvas/conformance-requirements/2d.missingargs.worker.html" + }, + { + "path": "offscreen-canvas/conformance-requirements/2d.voidreturn.html", + "url": "/offscreen-canvas/conformance-requirements/2d.voidreturn.html" + }, + { + "path": "offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js", + "url": "/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.html" + }, + { + "path": "offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js", + "url": "/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html" + }, + { + "path": "offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js", + "url": "/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html" + }, + { + "path": "offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js", + "url": "/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.html" + }, + { + "path": "offscreen-canvas/image-smoothing/image.smoothing.html", + "url": "/offscreen-canvas/image-smoothing/image.smoothing.html" + }, + { + "path": "offscreen-canvas/image-smoothing/image.smoothing.worker.js", + "url": "/offscreen-canvas/image-smoothing/image.smoothing.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.butt.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.butt.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.butt.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.butt.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.closed.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.closed.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.closed.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.closed.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.invalid.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.invalid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.open.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.open.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.open.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.open.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.round.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.round.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.round.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.round.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.square.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.square.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.square.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.square.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.valid.html", + "url": "/offscreen-canvas/line-styles/2d.line.cap.valid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cap.valid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cap.valid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cross.html", + "url": "/offscreen-canvas/line-styles/2d.line.cross.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.cross.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.cross.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.defaults.html", + "url": "/offscreen-canvas/line-styles/2d.line.defaults.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.defaults.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.defaults.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.bevel.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.bevel.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.bevel.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.bevel.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.closed.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.closed.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.closed.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.closed.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.invalid.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.invalid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.invalid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.invalid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.miter.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.miter.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.miter.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.miter.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.open.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.open.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.open.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.open.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.parallel.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.parallel.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.parallel.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.parallel.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.round.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.round.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.round.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.round.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.valid.html", + "url": "/offscreen-canvas/line-styles/2d.line.join.valid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.join.valid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.join.valid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.acute.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.acute.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.acute.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.acute.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.exceeded.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.exceeded.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.invalid.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.invalid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.lineedge.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.lineedge.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.obtuse.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.obtuse.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.rightangle.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.rightangle.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.valid.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.valid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.valid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.valid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.within.html", + "url": "/offscreen-canvas/line-styles/2d.line.miter.within.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.miter.within.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.miter.within.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.union.html", + "url": "/offscreen-canvas/line-styles/2d.line.union.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.union.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.union.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.basic.html", + "url": "/offscreen-canvas/line-styles/2d.line.width.basic.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.basic.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.width.basic.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.invalid.html", + "url": "/offscreen-canvas/line-styles/2d.line.width.invalid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.invalid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.width.invalid.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.scaledefault.html", + "url": "/offscreen-canvas/line-styles/2d.line.width.scaledefault.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.transformed.html", + "url": "/offscreen-canvas/line-styles/2d.line.width.transformed.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.transformed.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.width.transformed.worker.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.valid.html", + "url": "/offscreen-canvas/line-styles/2d.line.width.valid.html" + }, + { + "path": "offscreen-canvas/line-styles/2d.line.width.valid.worker.js", + "url": "/offscreen-canvas/line-styles/2d.line.width.valid.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.4.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.4.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.5.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.5.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.6.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.6.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.default.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.default.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.default.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.default.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.empty.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.empty.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.empty.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.empty.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.end.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.end.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.end.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.end.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.negative.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.negative.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.negative.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.negative.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.nonempty.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.nonempty.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.scale.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.scale.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.scale.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.scale.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.4.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.4.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.5.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.5.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.4.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.zero.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.zero.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.zero.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.zero.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.zeroradius.html", + "url": "/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.negative.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.negative.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.scale.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.scale.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.transformation.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.beginPath.html", + "url": "/offscreen-canvas/path-objects/2d.path.beginPath.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.beginPath.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.beginPath.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.basic.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.basic.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.basic.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.basic.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.empty.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.empty.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.empty.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.empty.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.intersect.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.intersect.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.unaffected.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.unaffected.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.winding.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.winding.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.winding.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.clip.winding.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.closePath.empty.html", + "url": "/offscreen-canvas/path-objects/2d.path.closePath.empty.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.closePath.newline.html", + "url": "/offscreen-canvas/path-objects/2d.path.closePath.newline.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html", + "url": "/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.closed.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.overlap.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.overlap.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.add.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.add.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.initial.html", + "url": "/offscreen-canvas/path-objects/2d.path.initial.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.initial.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.initial.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.multiple.html", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.closed.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.closed.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.closed.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.closed.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.end.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.end.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.end.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.end.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.negative.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.negative.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.negative.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.negative.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.newsubpath.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.nonfinite.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.selfintersect.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.winding.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.winding.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.winding.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.winding.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.1.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.2.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.3.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.3.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.4.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.4.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.5.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.5.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.6.html", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.6.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.empty.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.empty.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.overlap.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.overlap.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.line.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.scale1.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.scale1.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.scale2.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.scale2.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.skew.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.skew.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.unaffected.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.union.html", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.union.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.stroke.union.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.stroke.union.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.transformation.basic.html", + "url": "/offscreen-canvas/path-objects/2d.path.transformation.basic.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.transformation.changing.html", + "url": "/offscreen-canvas/path-objects/2d.path.transformation.changing.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.transformation.multiple.html", + "url": "/offscreen-canvas/path-objects/2d.path.transformation.multiple.html" + }, + { + "path": "offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js", + "url": "/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html" + }, + { + "path": "offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js", + "url": "/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.3.html", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.3.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.4.html", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.4.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.5.html", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.5.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.alpha.html", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.basic.html", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.basic.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.clip.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.clip.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.clip.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.clip.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.clip.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.clip.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.clip.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.clip.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.clip.3.html", + "url": "/offscreen-canvas/shadows/2d.shadow.clip.3.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.clip.3.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.clip.3.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.composite.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.composite.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.composite.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.composite.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.composite.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.composite.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.composite.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.composite.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.composite.3.html", + "url": "/offscreen-canvas/shadows/2d.shadow.composite.3.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.composite.3.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.composite.3.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.blur.html", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.blur.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.off.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.off.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.off.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.off.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.x.html", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.x.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.x.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.x.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.y.html", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.y.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.enable.y.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.enable.y.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.alpha.html", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.basic.html", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.basic.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.alpha.html", + "url": "/offscreen-canvas/shadows/2d.shadow.image.alpha.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.basic.html", + "url": "/offscreen-canvas/shadows/2d.shadow.image.basic.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.basic.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.image.basic.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.scale.html", + "url": "/offscreen-canvas/shadows/2d.shadow.image.scale.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.scale.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.image.scale.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.section.html", + "url": "/offscreen-canvas/shadows/2d.shadow.image.section.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.section.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.image.section.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.transparent.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.transparent.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.negativeX.html", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.negativeY.html", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.positiveX.html", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.positiveY.html", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.outside.html", + "url": "/offscreen-canvas/shadows/2d.shadow.outside.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.outside.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.outside.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.alpha.html", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.basic.html", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.basic.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.basic.html", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.basic.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.join.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.join.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.join.3.html", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.transform.1.html", + "url": "/offscreen-canvas/shadows/2d.shadow.transform.1.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.transform.1.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.transform.1.worker.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.transform.2.html", + "url": "/offscreen-canvas/shadows/2d.shadow.transform.2.html" + }, + { + "path": "offscreen-canvas/shadows/2d.shadow.transform.2.worker.js", + "url": "/offscreen-canvas/shadows/2d.shadow.transform.2.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html" + }, + { + "path": "offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js", + "url": "/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.casesensitive.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.emptystring.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.emptystring.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.colour.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.colour.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.different.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.path.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.same.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html", + "url": "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.default.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.large.html", + "url": "/offscreen-canvas/the-offscreen-canvas/size.large.html" + }, + { + "path": "offscreen-canvas/the-offscreen-canvas/size.large.worker.js", + "url": "/offscreen-canvas/the-offscreen-canvas/size.large.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.order.html", + "url": "/offscreen-canvas/transformations/2d.transformation.order.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.order.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.order.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.direction.html", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.direction.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.radians.html", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.radians.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.wrap.html", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.zero.html", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.zero.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.basic.html", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.basic.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.large.html", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.large.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.large.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.large.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.multiple.html", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.multiple.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.negative.html", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.negative.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.zero.html", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.zero.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html", + "url": "/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html", + "url": "/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html", + "url": "/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.identity.html", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.identity.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.multiply.html", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.multiply.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.skewed.html", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.skewed.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.translate.basic.html", + "url": "/offscreen-canvas/transformations/2d.transformation.translate.basic.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html", + "url": "/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html" + }, + { + "path": "offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js", + "url": "/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.html" + }, { "path": "old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html", "url": "/old-tests/submission/Infraware/Forms/contents/Forms/Not_Use/input_autocomplete.html" @@ -25703,6 +31583,18 @@ "path": "page-visibility/unload.html", "url": "/page-visibility/unload.html" }, + { + "path": "payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html", + "url": "/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html" + }, + { + "path": "payment-request/allowpaymentrequest/active-document-same-origin.https.html", + "url": "/payment-request/allowpaymentrequest/active-document-same-origin.https.html" + }, + { + "path": "payment-request/allowpaymentrequest/basic.https.html", + "url": "/payment-request/allowpaymentrequest/basic.https.html" + }, { "path": "payment-request/interfaces.https.html", "url": "/payment-request/interfaces.https.html" @@ -25743,10 +31635,18 @@ "path": "performance-timeline/po-resource.html", "url": "/performance-timeline/po-resource.html" }, + { + "path": "pointerevents/idlharness.html", + "url": "/pointerevents/idlharness.html" + }, { "path": "pointerevents/pointerevent_constructor.html", "url": "/pointerevents/pointerevent_constructor.html" }, + { + "path": "pointerevents/pointerevent_on_event_handlers.html", + "url": "/pointerevents/pointerevent_on_event_handlers.html" + }, { "path": "pointerevents/pointerevent_touch-action-illegal.html", "url": "/pointerevents/pointerevent_touch-action-illegal.html" @@ -25763,6 +31663,58 @@ "path": "pointerlock/idlharness.html", "url": "/pointerlock/idlharness.html" }, + { + "path": "preload/avoid_delaying_onload_link_preload.html", + "url": "/preload/avoid_delaying_onload_link_preload.html" + }, + { + "path": "preload/delaying_onload_link_preload_after_discovery.html", + "url": "/preload/delaying_onload_link_preload_after_discovery.html" + }, + { + "path": "preload/download_resources.html", + "url": "/preload/download_resources.html" + }, + { + "path": "preload/dynamic_adding_preload.html", + "url": "/preload/dynamic_adding_preload.html" + }, + { + "path": "preload/link_header_preload.html", + "url": "/preload/link_header_preload.html" + }, + { + "path": "preload/link_header_preload_delay_onload.html", + "url": "/preload/link_header_preload_delay_onload.html" + }, + { + "path": "preload/onerror_event.html", + "url": "/preload/onerror_event.html" + }, + { + "path": "preload/onload_event.html", + "url": "/preload/onload_event.html" + }, + { + "path": "preload/preload-csp.sub.html", + "url": "/preload/preload-csp.sub.html" + }, + { + "path": "preload/preload-default-csp.sub.html", + "url": "/preload/preload-default-csp.sub.html" + }, + { + "path": "preload/preload_with_type.html", + "url": "/preload/preload_with_type.html" + }, + { + "path": "preload/single_download_late_used_preload.html", + "url": "/preload/single_download_late_used_preload.html" + }, + { + "path": "preload/single_download_preload.html", + "url": "/preload/single_download_preload.html" + }, { "path": "presentation-api/controlling-ua/PresentationRequest_error.html", "url": "/presentation-api/controlling-ua/PresentationRequest_error.html" @@ -31199,6 +37151,18 @@ "path": "resource-timing/resource-timing.html", "url": "/resource-timing/resource-timing.html" }, + { + "path": "resource-timing/resource_cached.htm", + "url": "/resource-timing/resource_cached.htm" + }, + { + "path": "resource-timing/resource_connection_reuse.html", + "url": "/resource-timing/resource_connection_reuse.html" + }, + { + "path": "resource-timing/resource_dynamic_insertion.html", + "url": "/resource-timing/resource_dynamic_insertion.html" + }, { "path": "resource-timing/test_resource_timing.html", "url": "/resource-timing/test_resource_timing.html" @@ -31320,8 +37284,8 @@ "url": "/selectors/child-indexed-pseudo-class.html" }, { - "path": "service-workers/cache-storage/serviceworker/credentials.html", - "url": "/service-workers/cache-storage/serviceworker/credentials.html" + "path": "service-workers/cache-storage/serviceworker/credentials.https.html", + "url": "/service-workers/cache-storage/serviceworker/credentials.https.html" }, { "path": "service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html", @@ -32151,6 +38115,10 @@ "path": "typedarrays/constructors.html", "url": "/typedarrays/constructors.html" }, + { + "path": "uievents/constructors/inputevent-constructor.html", + "url": "/uievents/constructors/inputevent-constructor.html" + }, { "path": "uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html", "url": "/uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html" @@ -32175,6 +38143,34 @@ "path": "uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html", "url": "/uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html" }, + { + "path": "upgrade-insecure-requests/iframe-redirect-upgrade.https.html", + "url": "/upgrade-insecure-requests/iframe-redirect-upgrade.https.html" + }, + { + "path": "upgrade-insecure-requests/iframe-upgrade.https.html", + "url": "/upgrade-insecure-requests/iframe-upgrade.https.html" + }, + { + "path": "upgrade-insecure-requests/image-redirect-upgrade.https.html", + "url": "/upgrade-insecure-requests/image-redirect-upgrade.https.html" + }, + { + "path": "upgrade-insecure-requests/image-upgrade.https.html", + "url": "/upgrade-insecure-requests/image-upgrade.https.html" + }, + { + "path": "upgrade-insecure-requests/websocket-upgrade.https.html", + "url": "/upgrade-insecure-requests/websocket-upgrade.https.html" + }, + { + "path": "url/a-element-origin-xhtml.xhtml", + "url": "/url/a-element-origin-xhtml.xhtml" + }, + { + "path": "url/a-element-origin.html", + "url": "/url/a-element-origin.html" + }, { "path": "url/a-element-xhtml.xhtml", "url": "/url/a-element-xhtml.xhtml" @@ -32199,6 +38195,10 @@ "path": "url/url-constructor.html", "url": "/url/url-constructor.html" }, + { + "path": "url/url-origin.html", + "url": "/url/url-origin.html" + }, { "path": "url/url-setters.html", "url": "/url/url-setters.html" @@ -32303,6 +38303,10 @@ "path": "vibration/silent-ignore.html", "url": "/vibration/silent-ignore.html" }, + { + "path": "vr/idlharness.html", + "url": "/vr/idlharness.html" + }, { "path": "web-animations/animation-model/animation-types/discrete-animation.html", "url": "/web-animations/animation-model/animation-types/discrete-animation.html" @@ -35363,6 +41367,26 @@ "path": "webmessaging/Transferred_objects_unusable.sub.htm", "url": "/webmessaging/Transferred_objects_unusable.sub.htm" }, + { + "path": "webmessaging/broadcastchannel/basics.html", + "url": "/webmessaging/broadcastchannel/basics.html" + }, + { + "path": "webmessaging/broadcastchannel/blobs.html", + "url": "/webmessaging/broadcastchannel/blobs.html" + }, + { + "path": "webmessaging/broadcastchannel/interface.html", + "url": "/webmessaging/broadcastchannel/interface.html" + }, + { + "path": "webmessaging/broadcastchannel/sandbox.html", + "url": "/webmessaging/broadcastchannel/sandbox.html" + }, + { + "path": "webmessaging/broadcastchannel/workers.html", + "url": "/webmessaging/broadcastchannel/workers.html" + }, { "path": "webmessaging/event.data.sub.htm", "url": "/webmessaging/event.data.sub.htm" @@ -35399,6 +41423,10 @@ "path": "webmessaging/message-channels/004.html", "url": "/webmessaging/message-channels/004.html" }, + { + "path": "webmessaging/message-channels/close.html", + "url": "/webmessaging/message-channels/close.html" + }, { "path": "webmessaging/postMessage_ArrayBuffer.sub.htm", "url": "/webmessaging/postMessage_ArrayBuffer.sub.htm" @@ -35667,6 +41695,14 @@ "path": "webmessaging/without-ports/029.html", "url": "/webmessaging/without-ports/029.html" }, + { + "path": "webrtc/RTCDataChannelEvent-constructor.html", + "url": "/webrtc/RTCDataChannelEvent-constructor.html" + }, + { + "path": "webrtc/RTCPeerConnectionIceEvent-constructor.html", + "url": "/webrtc/RTCPeerConnectionIceEvent-constructor.html" + }, { "path": "webrtc/datachannel-emptystring.html", "url": "/webrtc/datachannel-emptystring.html" @@ -37595,6 +43631,10 @@ "path": "workers/nested_worker.worker.js", "url": "/workers/nested_worker.worker.html" }, + { + "path": "workers/opaque-origin.html", + "url": "/workers/opaque-origin.html" + }, { "path": "workers/postMessage_DataCloneErr.htm", "url": "/workers/postMessage_DataCloneErr.htm" @@ -38090,21 +44130,6 @@ "timeout": "long", "url": "/cors/status-async.htm" }, - { - "path": "custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html", - "timeout": "long", - "url": "/custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html" - }, - { - "path": "custom-elements/v0/concepts/custom-elements-type-allowed-chars.html", - "timeout": "long", - "url": "/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html" - }, - { - "path": "custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html", - "timeout": "long", - "url": "/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html" - }, { "path": "dom/nodes/Document-characterSet-normalization.html", "timeout": "long", @@ -38310,6 +44335,46 @@ "timeout": "long", "url": "/encrypted-media/clearkey-mp4-requestmediakeysystemaccess.html" }, + { + "path": "encrypted-media/drm-events.html", + "timeout": "long", + "url": "/encrypted-media/drm-events.html" + }, + { + "path": "encrypted-media/drm-expiration.html", + "timeout": "long", + "url": "/encrypted-media/drm-expiration.html" + }, + { + "path": "encrypted-media/drm-keystatuses-multiple-sessions.html", + "timeout": "long", + "url": "/encrypted-media/drm-keystatuses-multiple-sessions.html" + }, + { + "path": "encrypted-media/drm-keystatuses.html", + "timeout": "long", + "url": "/encrypted-media/drm-keystatuses.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-destroy-persistent-license.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-destroy-persistent-license.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-license-events.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-persistent-license-events.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-license.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-persistent-license.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-usage-record-events.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html" + }, { "path": "encrypted-media/drm-mp4-playback-persistent-usage-record.html", "timeout": "long", @@ -38325,11 +44390,26 @@ "timeout": "long", "url": "/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html" }, + { + "path": "encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html" + }, { "path": "encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.html", "timeout": "long", "url": "/encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.html" }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html" + }, { "path": "encrypted-media/drm-mp4-playback-temporary-events.html", "timeout": "long", @@ -38351,9 +44431,89 @@ "url": "/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html" }, { - "path": "encrypted-media/drm-mp4-requestmediakeysystemaccess.html", + "path": "encrypted-media/drm-mp4-playback-temporary-multikey.html", "timeout": "long", - "url": "/encrypted-media/drm-mp4-requestmediakeysystemaccess.html" + "url": "/encrypted-media/drm-mp4-playback-temporary-multikey.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-multisession.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-multisession.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-two-videos.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-two-videos.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-waitingforkey.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary.html" + }, + { + "path": "encrypted-media/drm-mp4-setmediakeys-again-after-playback.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html" + }, + { + "path": "encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html" + }, + { + "path": "encrypted-media/drm-mp4-setmediakeys-at-same-time.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-setmediakeys-at-same-time.html" + }, + { + "path": "encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html" + }, + { + "path": "encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html" + }, + { + "path": "encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html" + }, + { + "path": "encrypted-media/drm-mp4-waiting-for-a-key.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-waiting-for-a-key.html" + }, + { + "path": "encrypted-media/drm-temporary-license-type.html", + "timeout": "long", + "url": "/encrypted-media/drm-temporary-license-type.html" }, { "path": "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm", @@ -38410,6 +44570,11 @@ "timeout": "long", "url": "/html/browsers/history/the-history-interface/007.html" }, + { + "path": "html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html", + "timeout": "long", + "url": "/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html" + }, { "path": "html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html", "timeout": "long", @@ -38560,6 +44725,11 @@ "timeout": "long", "url": "/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html" }, + { + "path": "html/semantics/forms/form-submission-0/submit-entity-body.html", + "timeout": "long", + "url": "/html/semantics/forms/form-submission-0/submit-entity-body.html" + }, { "path": "html/semantics/forms/textfieldselection/selection.html", "timeout": "long", @@ -39675,83 +45845,7 @@ "local_changes": { "deleted": [], "deleted_reftests": {}, - "items": { - "testharness": { - "css-values/unset-value-storage.html": [ - { - "path": "css-values/unset-value-storage.html", - "url": "/css-values/unset-value-storage.html" - } - ], - "cssom/CSSKeyframesRule.html": [ - { - "path": "cssom/CSSKeyframesRule.html", - "url": "/cssom/CSSKeyframesRule.html" - } - ], - "cssom/CSSNamespaceRule.html": [ - { - "path": "cssom/CSSNamespaceRule.html", - "url": "/cssom/CSSNamespaceRule.html" - } - ], - "cssom/CSSRuleList.html": [ - { - "path": "cssom/CSSRuleList.html", - "url": "/cssom/CSSRuleList.html" - } - ], - "cssom/CSSStyleRule.html": [ - { - "path": "cssom/CSSStyleRule.html", - "url": "/cssom/CSSStyleRule.html" - } - ], - "cssom/CSSStyleSheet.html": [ - { - "path": "cssom/CSSStyleSheet.html", - "url": "/cssom/CSSStyleSheet.html" - } - ], - "cssom/MediaList.html": [ - { - "path": "cssom/MediaList.html", - "url": "/cssom/MediaList.html" - } - ], - "cssom/StyleSheetList.html": [ - { - "path": "cssom/StyleSheetList.html", - "url": "/cssom/StyleSheetList.html" - } - ], - "cssom/shorthand-serialization.html": [ - { - "path": "cssom/shorthand-serialization.html", - "url": "/cssom/shorthand-serialization.html" - } - ], - "fetch/api/request/request-bad-port.html": [ - { - "path": "fetch/api/request/request-bad-port.html", - "url": "/fetch/api/request/request-bad-port.html" - } - ], - "html/semantics/forms/form-submission-0/submit-entity-body.html": [ - { - "path": "html/semantics/forms/form-submission-0/submit-entity-body.html", - "timeout": "long", - "url": "/html/semantics/forms/form-submission-0/submit-entity-body.html" - } - ], - "html/semantics/forms/the-select-element/select-value.html": [ - { - "path": "html/semantics/forms/the-select-element/select-value.html", - "url": "/html/semantics/forms/the-select-element/select-value.html" - } - ] - } - }, + "items": {}, "reftest_nodes": {} }, "reftest_nodes": { @@ -40331,54 +46425,6 @@ "url": "/content-security-policy/font-src/font-whitelisted.html" } ], - "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html": [ - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html" - } - ], - "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html": [ - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html" - } - ], - "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html": [ - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html" - } - ], - "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html": [ - { - "path": "custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html", - "references": [ - [ - "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html", - "==" - ] - ], - "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html" - } - ], "html/dom/elements/global-attributes/dir_auto-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-EN-L.html", @@ -43115,18 +49161,6 @@ "url": "/mathml/relations/css-styling/display-1.html" } ], - "mathml/relations/css-styling/lengths-1-ref.html": [ - { - "path": "mathml/relations/css-styling/lengths-1-ref.html", - "references": [ - [ - "/mathml/relations/css-styling/lengths-1-ref.html", - "==" - ] - ], - "url": "/mathml/relations/css-styling/lengths-1-ref.html" - } - ], "mathml/relations/css-styling/lengths-1.html": [ { "path": "mathml/relations/css-styling/lengths-1.html", @@ -46392,7 +52426,7 @@ } ] }, - "rev": "e8bfc205e36ad699601212cd50083870bad9a75d", + "rev": "3137d1d2d7757366a69f8a449b458b5057e0e81e", "url_base": "/", "version": 3 } diff --git a/tests/wpt/metadata/dom/events/Event-cancelBubble.html.ini b/tests/wpt/metadata/dom/events/Event-cancelBubble.html.ini new file mode 100644 index 00000000000..266447e4c08 --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-cancelBubble.html.ini @@ -0,0 +1,26 @@ +[Event-cancelBubble.html] + type: testharness + [cancelBubble must be false when an event is initially created.] + expected: FAIL + + [Initializing an event must set cancelBubble to false.] + expected: FAIL + + [stopPropagation() must set cancelBubble to true.] + expected: FAIL + + [stopImmediatePropagation() must set cancelBubble to true.] + expected: FAIL + + [Event.cancelBubble=false must have no effect.] + expected: FAIL + + [Event.cancelBubble=false must have no effect during event propagation.] + expected: FAIL + + [cancelBubble must be false after an event has been dispatched.] + expected: FAIL + + [Event.cancelBubble=true must set the stop propagation flag.] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-bubble-canceled.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-bubble-canceled.html.ini new file mode 100644 index 00000000000..f98def06bcf --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-dispatch-bubble-canceled.html.ini @@ -0,0 +1,5 @@ +[Event-dispatch-bubble-canceled.html] + type: testharness + [Setting cancelBubble=true prior to dispatchEvent()] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-multiple-cancelBubble.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-multiple-cancelBubble.html.ini new file mode 100644 index 00000000000..3b40ae33df9 --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-dispatch-multiple-cancelBubble.html.ini @@ -0,0 +1,5 @@ +[Event-dispatch-multiple-cancelBubble.html] + type: testharness + [Multiple dispatchEvent() and cancelBubble] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-initEvent.html.ini b/tests/wpt/metadata/dom/events/Event-initEvent.html.ini new file mode 100644 index 00000000000..5e70cc65e7f --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-initEvent.html.ini @@ -0,0 +1,5 @@ +[Event-initEvent.html] + type: testharness + [Calling initEvent must unset the stop propagation flag.] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-propagation.html.ini b/tests/wpt/metadata/dom/events/Event-propagation.html.ini new file mode 100644 index 00000000000..a1baee903f0 --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-propagation.html.ini @@ -0,0 +1,5 @@ +[Event-propagation.html] + type: testharness + [After cancelBubble=true] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini b/tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini new file mode 100644 index 00000000000..bf7d693b4db --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini @@ -0,0 +1,5 @@ +[Node-cloneNode.html] + type: testharness + [implementation.createDocument] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/basic/request-headers-worker.html.ini b/tests/wpt/metadata/fetch/api/basic/request-headers-worker.html.ini index 4c228581bae..81cb01e0939 100644 --- a/tests/wpt/metadata/fetch/api/basic/request-headers-worker.html.ini +++ b/tests/wpt/metadata/fetch/api/basic/request-headers-worker.html.ini @@ -54,3 +54,21 @@ [Fetch with POST with URLSearchParams body] expected: FAIL + [Fetch with GET and mode "cors" does not need an Origin header] + expected: FAIL + + [Fetch with POST and mode "same-origin" needs an Origin header] + expected: FAIL + + [Fetch with POST and mode "no-cors" needs an Origin header] + expected: FAIL + + [Fetch with PUT and mode "same-origin" needs an Origin header] + expected: FAIL + + [Fetch with TacO and mode "same-origin" needs an Origin header] + expected: FAIL + + [Fetch with TacO and mode "cors" needs an Origin header] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/basic/request-headers.html.ini b/tests/wpt/metadata/fetch/api/basic/request-headers.html.ini index 4361ade4d59..decac375344 100644 --- a/tests/wpt/metadata/fetch/api/basic/request-headers.html.ini +++ b/tests/wpt/metadata/fetch/api/basic/request-headers.html.ini @@ -54,3 +54,21 @@ [Fetch with POST with URLSearchParams body] expected: FAIL + [Fetch with GET and mode "cors" does not need an Origin header] + expected: FAIL + + [Fetch with POST and mode "same-origin" needs an Origin header] + expected: FAIL + + [Fetch with POST and mode "no-cors" needs an Origin header] + expected: FAIL + + [Fetch with PUT and mode "same-origin" needs an Origin header] + expected: FAIL + + [Fetch with TacO and mode "same-origin" needs an Origin header] + expected: FAIL + + [Fetch with TacO and mode "cors" needs an Origin header] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini new file mode 100644 index 00000000000..0321618e55a --- /dev/null +++ b/tests/wpt/metadata/fetch/api/headers/headers-basic.html.ini @@ -0,0 +1,5 @@ +[headers-basic.html] + type: testharness + [Create headers with existing headers with custom iterator] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/request/request-idl.html.ini b/tests/wpt/metadata/fetch/api/request/request-idl.html.ini index 7bb88b0081d..b8eb86cce97 100644 --- a/tests/wpt/metadata/fetch/api/request/request-idl.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-idl.html.ini @@ -1,3 +1,20 @@ [request-idl.html] type: testharness - expected: ERROR + [Request interface: operation arrayBuffer()] + expected: FAIL + + [Request interface: operation blob()] + expected: FAIL + + [Request interface: operation formData()] + expected: FAIL + + [Request interface: operation json()] + expected: FAIL + + [Request interface: operation text()] + expected: FAIL + + [Request interface: new Request("") must inherit property "arrayBuffer" with the proper type (14)] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/response/response-consume.html.ini b/tests/wpt/metadata/fetch/api/response/response-consume.html.ini index 4235ac35fee..259a0f14757 100644 --- a/tests/wpt/metadata/fetch/api/response/response-consume.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-consume.html.ini @@ -81,3 +81,6 @@ [Consume response's body: from fetch to arrayBuffer] expected: FAIL + [Consume response's body: from multipart form data blob to formData] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/response/response-idl.html.ini b/tests/wpt/metadata/fetch/api/response/response-idl.html.ini index 6b6489d8871..015543189cb 100644 --- a/tests/wpt/metadata/fetch/api/response/response-idl.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-idl.html.ini @@ -1,3 +1,26 @@ [response-idl.html] type: testharness - expected: ERROR + [Response interface: attribute body] + expected: FAIL + + [Response interface: operation arrayBuffer()] + expected: FAIL + + [Response interface: operation blob()] + expected: FAIL + + [Response interface: operation formData()] + expected: FAIL + + [Response interface: operation json()] + expected: FAIL + + [Response interface: operation text()] + expected: FAIL + + [Response interface: new Response() must inherit property "body" with the proper type (8)] + expected: FAIL + + [Response interface: new Response() must inherit property "arrayBuffer" with the proper type (11)] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/nosniff/image.html.ini b/tests/wpt/metadata/fetch/nosniff/image.html.ini deleted file mode 100644 index d335ef05fb5..00000000000 --- a/tests/wpt/metadata/fetch/nosniff/image.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[image.html] - type: testharness - [URL query: ] - expected: FAIL - - [URL query: ?type=] - expected: FAIL - - [URL query: ?type=x] - expected: FAIL - - [URL query: ?type=x/x] - expected: FAIL - diff --git a/tests/wpt/metadata/fullscreen/api/document-exit-fullscreen-active-document.html.ini b/tests/wpt/metadata/fullscreen/api/document-exit-fullscreen-active-document.html.ini new file mode 100644 index 00000000000..160a13ef6bc --- /dev/null +++ b/tests/wpt/metadata/fullscreen/api/document-exit-fullscreen-active-document.html.ini @@ -0,0 +1,5 @@ +[document-exit-fullscreen-active-document.html] + type: testharness + [Document#exitFullscreen() when the document is not the active document] + expected: FAIL + diff --git a/tests/wpt/metadata/fullscreen/api/document-fullscreen-enabled-active-document.html.ini b/tests/wpt/metadata/fullscreen/api/document-fullscreen-enabled-active-document.html.ini new file mode 100644 index 00000000000..ed8d192b0db --- /dev/null +++ b/tests/wpt/metadata/fullscreen/api/document-fullscreen-enabled-active-document.html.ini @@ -0,0 +1,5 @@ +[document-fullscreen-enabled-active-document.html] + type: testharness + [Document#fullscreenEnabled when the document is not the active document] + expected: FAIL + diff --git a/tests/wpt/metadata/fullscreen/api/element-request-fullscreen-not-allowed.html.ini b/tests/wpt/metadata/fullscreen/api/element-request-fullscreen-not-allowed.html.ini new file mode 100644 index 00000000000..ac0d5fe481f --- /dev/null +++ b/tests/wpt/metadata/fullscreen/api/element-request-fullscreen-not-allowed.html.ini @@ -0,0 +1,6 @@ +[element-request-fullscreen-not-allowed.html] + type: testharness + expected: TIMEOUT + [Element#requestFullscreen() when not allowed to request fullscreen] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/same-url.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/same-url.html.ini new file mode 100644 index 00000000000..e5063d4a991 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/same-url.html.ini @@ -0,0 +1,5 @@ +[same-url.html] + type: testharness + [Test same-URL navigation and its effects on history] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html.ini new file mode 100644 index 00000000000..e40bf7825d7 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html.ini @@ -0,0 +1,47 @@ +[cross-origin-objects-exceptions.html] + type: testharness + [Basic sanity-checking] + expected: FAIL + + [Only whitelisted properties are accessible cross-origin] + expected: FAIL + + [[[GetPrototypeOf\]\] should return null] + expected: FAIL + + [[[SetPrototypeOf\]\] should throw] + expected: FAIL + + [[[PreventExtensions\]\] should throw for cross-origin objects] + expected: FAIL + + [[[GetOwnProperty\]\] - Property descriptors for cross-origin properties should be set up correctly] + expected: FAIL + + [[[Delete\]\] Should throw on cross-origin objects] + expected: FAIL + + [[[DefineOwnProperty\]\] Should throw for cross-origin objects] + expected: FAIL + + [[[Enumerate\]\] should return an empty iterator] + expected: FAIL + + [[[OwnPropertyKeys\]\] should return all properties from cross-origin objects] + expected: FAIL + + [Cross-origin functions get local Function.prototype] + expected: FAIL + + [Cross-origin Window accessors get local Function.prototype] + expected: FAIL + + [Same-origin observers get different functions for cross-origin objects] + expected: FAIL + + [Same-origin observers get different accessors for cross-origin Window] + expected: FAIL + + [Same-origin observers get different accessors for cross-origin Location] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 24f7bf07de4..54293b1a360 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -9831,3 +9831,156 @@ [MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],[object Object\])] expected: FAIL + [Document interface: attribute onauxclick] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type (91)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (131)] + expected: FAIL + + [Document interface: new Document() must inherit property "onauxclick" with the proper type (91)] + expected: FAIL + + [Document interface: new Document() must inherit property "onmousewheel" with the proper type (131)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onauxclick" with the proper type (91)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousewheel" with the proper type (131)] + expected: FAIL + + [HTMLElement interface: attribute onauxclick] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type (19)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (59)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (82)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (83)] + expected: FAIL + + [HTMLLinkElement interface: attribute nonce] + expected: FAIL + + [HTMLLinkElement interface: attribute integrity] + expected: FAIL + + [HTMLLinkElement interface: attribute referrerPolicy] + expected: FAIL + + [HTMLLinkElement interface: document.createElement("link") must inherit property "nonce" with the proper type (5)] + expected: FAIL + + [HTMLLinkElement interface: document.createElement("link") must inherit property "integrity" with the proper type (6)] + expected: FAIL + + [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type (9)] + expected: FAIL + + [HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type (10)] + expected: FAIL + + [HTMLAnchorElement interface: attribute referrerPolicy] + expected: FAIL + + [HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type (8)] + expected: FAIL + + [HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type (10)] + expected: FAIL + + [HTMLImageElement interface: attribute referrerPolicy] + expected: FAIL + + [HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type (13)] + expected: FAIL + + [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type (15)] + expected: FAIL + + [HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type (13)] + expected: FAIL + + [HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type (15)] + expected: FAIL + + [HTMLIFrameElement interface: attribute allowUserMedia] + expected: FAIL + + [HTMLIFrameElement interface: attribute allowPaymentRequest] + expected: FAIL + + [HTMLIFrameElement interface: attribute referrerPolicy] + expected: FAIL + + [HTMLIFrameElement interface: operation getSVGDocument()] + expected: FAIL + + [HTMLAreaElement interface: attribute referrerPolicy] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type (8)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type (9)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type (10)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type (11)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type (12)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type (13)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type (14)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type (15)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type (16)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type (17)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type (18)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type (19)] + expected: FAIL + + [HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type (20)] + expected: FAIL + + [HTMLDialogElement interface: operation show()] + expected: FAIL + + [HTMLDialogElement interface: operation showModal()] + expected: FAIL + + [Window interface: attribute onauxclick] + expected: FAIL + + [Window interface: window must inherit property "onauxclick" with the proper type (39)] + expected: FAIL + + [Window interface: window must inherit property "onmousewheel" with the proper type (79)] + expected: FAIL + + [Window interface: window must inherit property "createImageBitmap" with the proper type (120)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/reflection-metadata.html.ini b/tests/wpt/metadata/html/dom/reflection-metadata.html.ini index 74061a4a1b7..b4c8344e29c 100644 --- a/tests/wpt/metadata/html/dom/reflection-metadata.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-metadata.html.ini @@ -10020,3 +10020,531 @@ [style.type: IDL set to object "test-valueOf"] expected: FAIL + [link.nonce: typeof IDL attribute] + expected: FAIL + + [link.nonce: IDL get with DOM attribute unset] + expected: FAIL + + [link.nonce: setAttribute() to ""] + expected: FAIL + + [link.nonce: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [link.nonce: setAttribute() to undefined] + expected: FAIL + + [link.nonce: setAttribute() to 7] + expected: FAIL + + [link.nonce: setAttribute() to 1.5] + expected: FAIL + + [link.nonce: setAttribute() to true] + expected: FAIL + + [link.nonce: setAttribute() to false] + expected: FAIL + + [link.nonce: setAttribute() to object "[object Object\]"] + expected: FAIL + + [link.nonce: setAttribute() to NaN] + expected: FAIL + + [link.nonce: setAttribute() to Infinity] + expected: FAIL + + [link.nonce: setAttribute() to -Infinity] + expected: FAIL + + [link.nonce: setAttribute() to "\\0"] + expected: FAIL + + [link.nonce: setAttribute() to null] + expected: FAIL + + [link.nonce: setAttribute() to object "test-toString"] + expected: FAIL + + [link.nonce: setAttribute() to object "test-valueOf"] + expected: FAIL + + [link.nonce: IDL set to ""] + expected: FAIL + + [link.nonce: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [link.nonce: IDL set to undefined] + expected: FAIL + + [link.nonce: IDL set to 7] + expected: FAIL + + [link.nonce: IDL set to 1.5] + expected: FAIL + + [link.nonce: IDL set to true] + expected: FAIL + + [link.nonce: IDL set to false] + expected: FAIL + + [link.nonce: IDL set to object "[object Object\]"] + expected: FAIL + + [link.nonce: IDL set to NaN] + expected: FAIL + + [link.nonce: IDL set to Infinity] + expected: FAIL + + [link.nonce: IDL set to -Infinity] + expected: FAIL + + [link.nonce: IDL set to "\\0"] + expected: FAIL + + [link.nonce: IDL set to null] + expected: FAIL + + [link.nonce: IDL set to object "test-toString"] + expected: FAIL + + [link.nonce: IDL set to object "test-valueOf"] + expected: FAIL + + [link.integrity: typeof IDL attribute] + expected: FAIL + + [link.integrity: IDL get with DOM attribute unset] + expected: FAIL + + [link.integrity: setAttribute() to ""] + expected: FAIL + + [link.integrity: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [link.integrity: setAttribute() to undefined] + expected: FAIL + + [link.integrity: setAttribute() to 7] + expected: FAIL + + [link.integrity: setAttribute() to 1.5] + expected: FAIL + + [link.integrity: setAttribute() to true] + expected: FAIL + + [link.integrity: setAttribute() to false] + expected: FAIL + + [link.integrity: setAttribute() to object "[object Object\]"] + expected: FAIL + + [link.integrity: setAttribute() to NaN] + expected: FAIL + + [link.integrity: setAttribute() to Infinity] + expected: FAIL + + [link.integrity: setAttribute() to -Infinity] + expected: FAIL + + [link.integrity: setAttribute() to "\\0"] + expected: FAIL + + [link.integrity: setAttribute() to null] + expected: FAIL + + [link.integrity: setAttribute() to object "test-toString"] + expected: FAIL + + [link.integrity: setAttribute() to object "test-valueOf"] + expected: FAIL + + [link.integrity: IDL set to ""] + expected: FAIL + + [link.integrity: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [link.integrity: IDL set to undefined] + expected: FAIL + + [link.integrity: IDL set to 7] + expected: FAIL + + [link.integrity: IDL set to 1.5] + expected: FAIL + + [link.integrity: IDL set to true] + expected: FAIL + + [link.integrity: IDL set to false] + expected: FAIL + + [link.integrity: IDL set to object "[object Object\]"] + expected: FAIL + + [link.integrity: IDL set to NaN] + expected: FAIL + + [link.integrity: IDL set to Infinity] + expected: FAIL + + [link.integrity: IDL set to -Infinity] + expected: FAIL + + [link.integrity: IDL set to "\\0"] + expected: FAIL + + [link.integrity: IDL set to null] + expected: FAIL + + [link.integrity: IDL set to object "test-toString"] + expected: FAIL + + [link.integrity: IDL set to object "test-valueOf"] + expected: FAIL + + [link.referrerPolicy: typeof IDL attribute] + expected: FAIL + + [link.referrerPolicy: IDL get with DOM attribute unset] + expected: FAIL + + [link.referrerPolicy: setAttribute() to ""] + expected: FAIL + + [link.referrerPolicy: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [link.referrerPolicy: setAttribute() to undefined] + expected: FAIL + + [link.referrerPolicy: setAttribute() to 7] + expected: FAIL + + [link.referrerPolicy: setAttribute() to 1.5] + expected: FAIL + + [link.referrerPolicy: setAttribute() to true] + expected: FAIL + + [link.referrerPolicy: setAttribute() to false] + expected: FAIL + + [link.referrerPolicy: setAttribute() to object "[object Object\]"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to NaN] + expected: FAIL + + [link.referrerPolicy: setAttribute() to Infinity] + expected: FAIL + + [link.referrerPolicy: setAttribute() to -Infinity] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to null] + expected: FAIL + + [link.referrerPolicy: setAttribute() to object "test-toString"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to object "test-valueOf"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "no-referrer"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xno-referrer"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "no-referrer\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "o-referrer"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "NO-REFERRER"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "no-referrer-when-downgrade"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xno-referrer-when-downgrade"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "no-referrer-when-downgrade\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "o-referrer-when-downgrade"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "NO-REFERRER-WHEN-DOWNGRADE"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "same-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xsame-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "same-origin\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "ame-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "SAME-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xorigin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "origin\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "rigin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "ORIGIN"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "strict-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xstrict-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "strict-origin\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "trict-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "STRICT-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xorigin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "origin-when-cross-origin\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "rigin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xstrict-origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "trict-origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "unsafe-url"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "xunsafe-url"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "unsafe-url\\0"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "nsafe-url"] + expected: FAIL + + [link.referrerPolicy: setAttribute() to "UNSAFE-URL"] + expected: FAIL + + [link.referrerPolicy: IDL set to ""] + expected: FAIL + + [link.referrerPolicy: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [link.referrerPolicy: IDL set to undefined] + expected: FAIL + + [link.referrerPolicy: IDL set to 7] + expected: FAIL + + [link.referrerPolicy: IDL set to 1.5] + expected: FAIL + + [link.referrerPolicy: IDL set to true] + expected: FAIL + + [link.referrerPolicy: IDL set to false] + expected: FAIL + + [link.referrerPolicy: IDL set to object "[object Object\]"] + expected: FAIL + + [link.referrerPolicy: IDL set to NaN] + expected: FAIL + + [link.referrerPolicy: IDL set to Infinity] + expected: FAIL + + [link.referrerPolicy: IDL set to -Infinity] + expected: FAIL + + [link.referrerPolicy: IDL set to "\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to null] + expected: FAIL + + [link.referrerPolicy: IDL set to object "test-toString"] + expected: FAIL + + [link.referrerPolicy: IDL set to object "test-valueOf"] + expected: FAIL + + [link.referrerPolicy: IDL set to "no-referrer"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xno-referrer"] + expected: FAIL + + [link.referrerPolicy: IDL set to "no-referrer\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "o-referrer"] + expected: FAIL + + [link.referrerPolicy: IDL set to "NO-REFERRER"] + expected: FAIL + + [link.referrerPolicy: IDL set to "no-referrer-when-downgrade"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xno-referrer-when-downgrade"] + expected: FAIL + + [link.referrerPolicy: IDL set to "no-referrer-when-downgrade\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "o-referrer-when-downgrade"] + expected: FAIL + + [link.referrerPolicy: IDL set to "NO-REFERRER-WHEN-DOWNGRADE"] + expected: FAIL + + [link.referrerPolicy: IDL set to "same-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xsame-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "same-origin\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "ame-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "SAME-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: IDL set to "origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xorigin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "origin\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "rigin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "ORIGIN"] + expected: FAIL + + [link.referrerPolicy: IDL set to "strict-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xstrict-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "strict-origin\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "trict-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "STRICT-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: IDL set to "origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xorigin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "origin-when-cross-origin\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "rigin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: IDL set to "strict-origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xstrict-origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "strict-origin-when-cross-origin\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "trict-origin-when-cross-origin"] + expected: FAIL + + [link.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [link.referrerPolicy: IDL set to "unsafe-url"] + expected: FAIL + + [link.referrerPolicy: IDL set to "xunsafe-url"] + expected: FAIL + + [link.referrerPolicy: IDL set to "unsafe-url\\0"] + expected: FAIL + + [link.referrerPolicy: IDL set to "nsafe-url"] + expected: FAIL + + [link.referrerPolicy: IDL set to "UNSAFE-URL"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/reflection-misc.html.ini b/tests/wpt/metadata/html/dom/reflection-misc.html.ini index c14c806b41a..d5201c817db 100644 --- a/tests/wpt/metadata/html/dom/reflection-misc.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-misc.html.ini @@ -17514,3 +17514,195 @@ [undefinedelement.tabIndex: IDL set to -2147483648] expected: FAIL + [script.nonce: typeof IDL attribute] + expected: FAIL + + [script.nonce: IDL get with DOM attribute unset] + expected: FAIL + + [script.nonce: setAttribute() to ""] + expected: FAIL + + [script.nonce: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [script.nonce: setAttribute() to undefined] + expected: FAIL + + [script.nonce: setAttribute() to 7] + expected: FAIL + + [script.nonce: setAttribute() to 1.5] + expected: FAIL + + [script.nonce: setAttribute() to true] + expected: FAIL + + [script.nonce: setAttribute() to false] + expected: FAIL + + [script.nonce: setAttribute() to object "[object Object\]"] + expected: FAIL + + [script.nonce: setAttribute() to NaN] + expected: FAIL + + [script.nonce: setAttribute() to Infinity] + expected: FAIL + + [script.nonce: setAttribute() to -Infinity] + expected: FAIL + + [script.nonce: setAttribute() to "\\0"] + expected: FAIL + + [script.nonce: setAttribute() to null] + expected: FAIL + + [script.nonce: setAttribute() to object "test-toString"] + expected: FAIL + + [script.nonce: setAttribute() to object "test-valueOf"] + expected: FAIL + + [script.nonce: IDL set to ""] + expected: FAIL + + [script.nonce: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [script.nonce: IDL set to undefined] + expected: FAIL + + [script.nonce: IDL set to 7] + expected: FAIL + + [script.nonce: IDL set to 1.5] + expected: FAIL + + [script.nonce: IDL set to true] + expected: FAIL + + [script.nonce: IDL set to false] + expected: FAIL + + [script.nonce: IDL set to object "[object Object\]"] + expected: FAIL + + [script.nonce: IDL set to NaN] + expected: FAIL + + [script.nonce: IDL set to Infinity] + expected: FAIL + + [script.nonce: IDL set to -Infinity] + expected: FAIL + + [script.nonce: IDL set to "\\0"] + expected: FAIL + + [script.nonce: IDL set to null] + expected: FAIL + + [script.nonce: IDL set to object "test-toString"] + expected: FAIL + + [script.nonce: IDL set to object "test-valueOf"] + expected: FAIL + + [script.integrity: typeof IDL attribute] + expected: FAIL + + [script.integrity: IDL get with DOM attribute unset] + expected: FAIL + + [script.integrity: setAttribute() to ""] + expected: FAIL + + [script.integrity: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [script.integrity: setAttribute() to undefined] + expected: FAIL + + [script.integrity: setAttribute() to 7] + expected: FAIL + + [script.integrity: setAttribute() to 1.5] + expected: FAIL + + [script.integrity: setAttribute() to true] + expected: FAIL + + [script.integrity: setAttribute() to false] + expected: FAIL + + [script.integrity: setAttribute() to object "[object Object\]"] + expected: FAIL + + [script.integrity: setAttribute() to NaN] + expected: FAIL + + [script.integrity: setAttribute() to Infinity] + expected: FAIL + + [script.integrity: setAttribute() to -Infinity] + expected: FAIL + + [script.integrity: setAttribute() to "\\0"] + expected: FAIL + + [script.integrity: setAttribute() to null] + expected: FAIL + + [script.integrity: setAttribute() to object "test-toString"] + expected: FAIL + + [script.integrity: setAttribute() to object "test-valueOf"] + expected: FAIL + + [script.integrity: IDL set to ""] + expected: FAIL + + [script.integrity: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [script.integrity: IDL set to undefined] + expected: FAIL + + [script.integrity: IDL set to 7] + expected: FAIL + + [script.integrity: IDL set to 1.5] + expected: FAIL + + [script.integrity: IDL set to true] + expected: FAIL + + [script.integrity: IDL set to false] + expected: FAIL + + [script.integrity: IDL set to object "[object Object\]"] + expected: FAIL + + [script.integrity: IDL set to NaN] + expected: FAIL + + [script.integrity: IDL set to Infinity] + expected: FAIL + + [script.integrity: IDL set to -Infinity] + expected: FAIL + + [script.integrity: IDL set to "\\0"] + expected: FAIL + + [script.integrity: IDL set to null] + expected: FAIL + + [script.integrity: IDL set to object "test-toString"] + expected: FAIL + + [script.integrity: IDL set to object "test-valueOf"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/reflection-text.html.ini b/tests/wpt/metadata/html/dom/reflection-text.html.ini index 2ba5073e928..7edf81d53a0 100644 --- a/tests/wpt/metadata/html/dom/reflection-text.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-text.html.ini @@ -34851,3 +34851,339 @@ [wbr.tabIndex: IDL set to -2147483648] expected: FAIL + [a.referrerPolicy: typeof IDL attribute] + expected: FAIL + + [a.referrerPolicy: IDL get with DOM attribute unset] + expected: FAIL + + [a.referrerPolicy: setAttribute() to ""] + expected: FAIL + + [a.referrerPolicy: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [a.referrerPolicy: setAttribute() to undefined] + expected: FAIL + + [a.referrerPolicy: setAttribute() to 7] + expected: FAIL + + [a.referrerPolicy: setAttribute() to 1.5] + expected: FAIL + + [a.referrerPolicy: setAttribute() to true] + expected: FAIL + + [a.referrerPolicy: setAttribute() to false] + expected: FAIL + + [a.referrerPolicy: setAttribute() to object "[object Object\]"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to NaN] + expected: FAIL + + [a.referrerPolicy: setAttribute() to Infinity] + expected: FAIL + + [a.referrerPolicy: setAttribute() to -Infinity] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to null] + expected: FAIL + + [a.referrerPolicy: setAttribute() to object "test-toString"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to object "test-valueOf"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "no-referrer"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xno-referrer"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "no-referrer\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "o-referrer"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "NO-REFERRER"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "no-referrer-when-downgrade"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xno-referrer-when-downgrade"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "no-referrer-when-downgrade\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "o-referrer-when-downgrade"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "NO-REFERRER-WHEN-DOWNGRADE"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "same-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xsame-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "same-origin\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "ame-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "SAME-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xorigin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "origin\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "rigin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "ORIGIN"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "strict-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xstrict-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "strict-origin\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "trict-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "STRICT-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xorigin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "origin-when-cross-origin\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "rigin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xstrict-origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "trict-origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "unsafe-url"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "xunsafe-url"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "unsafe-url\\0"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "nsafe-url"] + expected: FAIL + + [a.referrerPolicy: setAttribute() to "UNSAFE-URL"] + expected: FAIL + + [a.referrerPolicy: IDL set to ""] + expected: FAIL + + [a.referrerPolicy: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo "] + expected: FAIL + + [a.referrerPolicy: IDL set to undefined] + expected: FAIL + + [a.referrerPolicy: IDL set to 7] + expected: FAIL + + [a.referrerPolicy: IDL set to 1.5] + expected: FAIL + + [a.referrerPolicy: IDL set to true] + expected: FAIL + + [a.referrerPolicy: IDL set to false] + expected: FAIL + + [a.referrerPolicy: IDL set to object "[object Object\]"] + expected: FAIL + + [a.referrerPolicy: IDL set to NaN] + expected: FAIL + + [a.referrerPolicy: IDL set to Infinity] + expected: FAIL + + [a.referrerPolicy: IDL set to -Infinity] + expected: FAIL + + [a.referrerPolicy: IDL set to "\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to null] + expected: FAIL + + [a.referrerPolicy: IDL set to object "test-toString"] + expected: FAIL + + [a.referrerPolicy: IDL set to object "test-valueOf"] + expected: FAIL + + [a.referrerPolicy: IDL set to "no-referrer"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xno-referrer"] + expected: FAIL + + [a.referrerPolicy: IDL set to "no-referrer\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "o-referrer"] + expected: FAIL + + [a.referrerPolicy: IDL set to "NO-REFERRER"] + expected: FAIL + + [a.referrerPolicy: IDL set to "no-referrer-when-downgrade"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xno-referrer-when-downgrade"] + expected: FAIL + + [a.referrerPolicy: IDL set to "no-referrer-when-downgrade\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "o-referrer-when-downgrade"] + expected: FAIL + + [a.referrerPolicy: IDL set to "NO-REFERRER-WHEN-DOWNGRADE"] + expected: FAIL + + [a.referrerPolicy: IDL set to "same-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xsame-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "same-origin\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "ame-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "SAME-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: IDL set to "origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xorigin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "origin\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "rigin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "ORIGIN"] + expected: FAIL + + [a.referrerPolicy: IDL set to "strict-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xstrict-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "strict-origin\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "trict-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "STRICT-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: IDL set to "origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xorigin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "origin-when-cross-origin\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "rigin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: IDL set to "strict-origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xstrict-origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "strict-origin-when-cross-origin\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "trict-origin-when-cross-origin"] + expected: FAIL + + [a.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN"] + expected: FAIL + + [a.referrerPolicy: IDL set to "unsafe-url"] + expected: FAIL + + [a.referrerPolicy: IDL set to "xunsafe-url"] + expected: FAIL + + [a.referrerPolicy: IDL set to "unsafe-url\\0"] + expected: FAIL + + [a.referrerPolicy: IDL set to "nsafe-url"] + expected: FAIL + + [a.referrerPolicy: IDL set to "UNSAFE-URL"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini new file mode 100644 index 00000000000..31cc9479ba2 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html.ini @@ -0,0 +1,3 @@ +[allow-scripts-flag-changing-1.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini new file mode 100644 index 00000000000..ae277f7405b --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html.ini @@ -0,0 +1,3 @@ +[allow-scripts-flag-changing-2.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html.ini new file mode 100644 index 00000000000..a4c2207ab74 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html.ini @@ -0,0 +1,3 @@ +[dynamic-append.html] + type: testharness + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html.ini new file mode 100644 index 00000000000..07dd3f915c2 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html.ini @@ -0,0 +1,3 @@ +[moving-documents.html] + type: testharness + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html.ini new file mode 100644 index 00000000000..e88e24f90d0 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html.ini @@ -0,0 +1,5 @@ +[not-in-shadow-tree.html] + type: testharness + [Meta refresh only applies while in the document tree, not in a shadow tree] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini index 021d2d2fa06..7d040c9c4c0 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html.ini @@ -9,9 +9,3 @@ [iframe-sandbox-allowfullscreen-dialog] expected: FAIL - [iframe-noload-noallowfullscreen] - expected: FAIL - - [iframe-noload-allowfullscreen] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/idle-callbacks/basic.html.ini b/tests/wpt/metadata/html/webappapis/idle-callbacks/basic.html.ini new file mode 100644 index 00000000000..3dc6bf39d61 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/idle-callbacks/basic.html.ini @@ -0,0 +1,20 @@ +[basic.html] + type: testharness + [window.requestIdleCallback is defined] + expected: FAIL + + [window.cancelIdleCallback is defined] + expected: FAIL + + [window.requestIdleCallback() returns a number] + expected: FAIL + + [window.cancelIdleCallback() returns undefined] + expected: FAIL + + [requestIdleCallback schedules callbacks] + expected: FAIL + + [cancelIdleCallback cancels callbacks] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-idle-periods.html.ini b/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-idle-periods.html.ini new file mode 100644 index 00000000000..ac23a24ab20 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-idle-periods.html.ini @@ -0,0 +1,9 @@ +[callback-idle-periods.html] + type: testharness + expected: ERROR + [requestIdleCallback can run multiple different requestIdleCallback callbacks in the same idle period.] + expected: FAIL + + [Check that if an idle callback calls requestIdleCallback the new callback doesn't run in the current idle period.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-timeout-with-raf.html.ini b/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-timeout-with-raf.html.ini new file mode 100644 index 00000000000..d5f94e35b64 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/idle-callbacks/callback-timeout-with-raf.html.ini @@ -0,0 +1,8 @@ +[callback-timeout-with-raf.html] + type: testharness + [requestIdleCallback not scheduled when event loop is busy.] + expected: FAIL + + [requestIdleCallback scheduled with timeout when event loop is busy.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini new file mode 100644 index 00000000000..492f3a98da6 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/events/event-handler-onauxclick.html.ini @@ -0,0 +1,3 @@ +[event-handler-onauxclick.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index 7ba5d85c476..e68ebc02c41 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1 +1 @@ -395981742475612eac7ef0bd484b4ae1bc1dd4a8 \ No newline at end of file +81ca858678953105ee97f482eb3900729fa4d696 \ No newline at end of file diff --git a/tests/wpt/metadata/navigation-timing/nav2_idlharness.html.ini b/tests/wpt/metadata/navigation-timing/nav2_idlharness.html.ini new file mode 100644 index 00000000000..5654187aafc --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_idlharness.html.ini @@ -0,0 +1,47 @@ +[nav2_idlharness.html] + type: testharness + [PerformanceNavigationTiming interface: existence and properties of interface object] + expected: FAIL + + [PerformanceNavigationTiming interface object length] + expected: FAIL + + [PerformanceNavigationTiming interface object name] + expected: FAIL + + [PerformanceNavigationTiming interface: existence and properties of interface prototype object] + expected: FAIL + + [PerformanceNavigationTiming interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute unloadEventStart] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute unloadEventEnd] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute domInteractive] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute domContentLoadedEventStart] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute domContentLoadedEventEnd] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute domComplete] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute loadEventStart] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute loadEventEnd] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute type] + expected: FAIL + + [PerformanceNavigationTiming interface: attribute redirectCount] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_attributes_exist.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_attributes_exist.html.ini new file mode 100644 index 00000000000..d5aa84ebe6f --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_attributes_exist.html.ini @@ -0,0 +1,5 @@ +[nav2_test_attributes_exist.html] + type: testharness + [Performance navigation timing entries are observable.] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_attributes_values.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_attributes_values.html.ini new file mode 100644 index 00000000000..c70527cfed7 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_attributes_values.html.ini @@ -0,0 +1,5 @@ +[nav2_test_attributes_values.html] + type: testharness + [Performance navigation timing instance's value is reasonable.] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini new file mode 100644 index 00000000000..d2a706e2d16 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_document_open.html.ini @@ -0,0 +1,3 @@ +[nav2_test_document_open.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_instance_accessors.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_instance_accessors.html.ini new file mode 100644 index 00000000000..a75dbdb2c0c --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_instance_accessors.html.ini @@ -0,0 +1,5 @@ +[nav2_test_instance_accessors.html] + type: testharness + [Performance navigation timing entries are accessible through three different accessors.] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini new file mode 100644 index 00000000000..ab6bcca4ec1 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigate_within_document.html.ini @@ -0,0 +1,3 @@ +[nav2_test_navigate_within_document.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini new file mode 100644 index 00000000000..32037a0f758 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_backforward.html.ini @@ -0,0 +1,3 @@ +[nav2_test_navigation_type_backforward.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_navigate.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_navigate.html.ini new file mode 100644 index 00000000000..e14d5984612 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_navigate.html.ini @@ -0,0 +1,5 @@ +[nav2_test_navigation_type_navigate.html] + type: testharness + [Navigation type to be navigate.] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini new file mode 100644 index 00000000000..d228bee3e72 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_navigation_type_reload.html.ini @@ -0,0 +1,3 @@ +[nav2_test_navigation_type_reload.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini new file mode 100644 index 00000000000..5fe0d9f313f --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_open_blank_page.html.ini @@ -0,0 +1,3 @@ +[nav2_test_open_blank_page.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_none.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_none.html.ini new file mode 100644 index 00000000000..e3727d63e81 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_none.html.ini @@ -0,0 +1,5 @@ +[nav2_test_redirect_none.html] + type: testharness + [Naivation without redirects.] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini new file mode 100644 index 00000000000..90bfeed274c --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_server.html.ini @@ -0,0 +1,3 @@ +[nav2_test_redirect_server.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini new file mode 100644 index 00000000000..809815ce175 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver.html.ini @@ -0,0 +1,3 @@ +[nav2_test_redirect_xserver.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini new file mode 100644 index 00000000000..f0581f5429f --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_redirect_xserver_opt_in.html.ini @@ -0,0 +1,3 @@ +[nav2_test_redirect_xserver_opt_in.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unique_nav_instances.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unique_nav_instances.html.ini new file mode 100644 index 00000000000..695df4f36e3 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unique_nav_instances.html.ini @@ -0,0 +1,5 @@ +[nav2_test_unique_nav_instances.html] + type: testharness + [Each window has a unique nav timing 2 instance.] + expected: FAIL + diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini new file mode 100644 index 00000000000..fc4faa38ddc --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_no_previous_document.html.ini @@ -0,0 +1,3 @@ +[nav2_test_unloadEvents_no_previous_document.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html.ini new file mode 100644 index 00000000000..ed513658727 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html.ini @@ -0,0 +1,3 @@ +[nav2_test_unloadEvents_previous_document_cross_origin.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini new file mode 100644 index 00000000000..334e12092a5 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html.ini @@ -0,0 +1,3 @@ +[nav2_test_unloadEvents_with_cross_origin_redirects.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini new file mode 100644 index 00000000000..c4b9e3696e7 --- /dev/null +++ b/tests/wpt/metadata/navigation-timing/nav2_test_unloadEvents_with_previous_document.html.ini @@ -0,0 +1,3 @@ +[nav2_test_unloadEvents_with_previous_document.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/uievents/constructors/inputevent-constructor.html.ini b/tests/wpt/metadata/uievents/constructors/inputevent-constructor.html.ini new file mode 100644 index 00000000000..6cbae2e0058 --- /dev/null +++ b/tests/wpt/metadata/uievents/constructors/inputevent-constructor.html.ini @@ -0,0 +1,14 @@ +[inputevent-constructor.html] + type: testharness + [InputEvent constructor without InputEventInit.] + expected: FAIL + + [InputEvent construtor with InputEventInit where data is null] + expected: FAIL + + [InputEvent construtor with InputEventInit where data is empty string] + expected: FAIL + + [InputEvent construtor with InputEventInit where data is non empty string] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini b/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini new file mode 100644 index 00000000000..a2733e59c15 --- /dev/null +++ b/tests/wpt/metadata/url/a-element-origin-xhtml.xhtml.ini @@ -0,0 +1,8 @@ +[a-element-origin-xhtml.xhtml] + type: testharness + [Parsing origin: against ] + expected: FAIL + + [Parsing origin: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element-origin.html.ini b/tests/wpt/metadata/url/a-element-origin.html.ini new file mode 100644 index 00000000000..3a6915a3204 --- /dev/null +++ b/tests/wpt/metadata/url/a-element-origin.html.ini @@ -0,0 +1,8 @@ +[a-element-origin.html] + type: testharness + [Parsing origin: against ] + expected: FAIL + + [Parsing origin: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini index a922573a689..4ef4002ed19 100644 --- a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini +++ b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini @@ -6,3 +6,24 @@ [Parsing: against ] expected: FAIL + [Parsing: <#β> against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element.html.ini b/tests/wpt/metadata/url/a-element.html.ini index 2ba0d5823e8..7e402bd312c 100644 --- a/tests/wpt/metadata/url/a-element.html.ini +++ b/tests/wpt/metadata/url/a-element.html.ini @@ -6,3 +6,24 @@ [Parsing: against ] expected: FAIL + [Parsing: <#β> against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-constructor.html.ini b/tests/wpt/metadata/url/url-constructor.html.ini index 6c177284507..c3721bf9e24 100644 --- a/tests/wpt/metadata/url/url-constructor.html.ini +++ b/tests/wpt/metadata/url/url-constructor.html.ini @@ -6,3 +6,24 @@ [Parsing: against ] expected: FAIL + [Parsing: <#β> against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-origin.html.ini b/tests/wpt/metadata/url/url-origin.html.ini new file mode 100644 index 00000000000..a78d01831e9 --- /dev/null +++ b/tests/wpt/metadata/url/url-origin.html.ini @@ -0,0 +1,8 @@ +[url-origin.html] + type: testharness + [Origin parsing: against ] + expected: FAIL + + [Origin parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/url-setters.html.ini b/tests/wpt/metadata/url/url-setters.html.ini index 12c268fa20b..39590be1596 100644 --- a/tests/wpt/metadata/url/url-setters.html.ini +++ b/tests/wpt/metadata/url/url-setters.html.ini @@ -396,3 +396,18 @@ [: Setting .hash = '%c3%89té' Bytes already percent-encoded are left as-is] expected: FAIL + [URL: Setting .hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed] + expected: FAIL + + [: Setting .hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed] + expected: FAIL + + [: Setting .hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed] + expected: FAIL + + [URL: Setting .hash = '%c3%89té' Bytes already percent-encoded are left as-is] + expected: FAIL + + [: Setting .hash = '%c3%89té' Bytes already percent-encoded are left as-is] + expected: FAIL + diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini index 78f5aa7b940..22325f1fe6d 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/reading/read-pixels-test.html.ini @@ -2,4 +2,3 @@ type: testharness expected: TIMEOUT bug: https://github.com/servo/servo/issues/14380 - diff --git a/tests/wpt/metadata/fetch/api/headers/headers-idl.html.ini b/tests/wpt/metadata/workers/opaque-origin.html.ini similarity index 64% rename from tests/wpt/metadata/fetch/api/headers/headers-idl.html.ini rename to tests/wpt/metadata/workers/opaque-origin.html.ini index 0dcbdbf0434..3eb04ccfff3 100644 --- a/tests/wpt/metadata/fetch/api/headers/headers-idl.html.ini +++ b/tests/wpt/metadata/workers/opaque-origin.html.ini @@ -1,3 +1,3 @@ -[headers-idl.html] +[opaque-origin.html] type: testharness expected: ERROR diff --git a/tests/wpt/mozilla/meta/mozilla/bluetooth/advertisingEvent/watchAdvertisements-succeeds.html.ini b/tests/wpt/mozilla/meta/mozilla/bluetooth/advertisingEvent/watchAdvertisements-succeeds.html.ini index da628804692..1f76e4693ce 100644 --- a/tests/wpt/mozilla/meta/mozilla/bluetooth/advertisingEvent/watchAdvertisements-succeeds.html.ini +++ b/tests/wpt/mozilla/meta/mozilla/bluetooth/advertisingEvent/watchAdvertisements-succeeds.html.ini @@ -2,3 +2,4 @@ type: testharness [watchAdvertisements should succeed.] expected: FAIL + diff --git a/tests/wpt/web-platform-tests/2dcontext/compositing/2d.composite.operation.clear.html b/tests/wpt/web-platform-tests/2dcontext/compositing/2d.composite.operation.clear.html index 7212cd05f1e..8f1b834ae27 100644 --- a/tests/wpt/web-platform-tests/2dcontext/compositing/2d.composite.operation.clear.html +++ b/tests/wpt/web-platform-tests/2dcontext/compositing/2d.composite.operation.clear.html @@ -21,7 +21,7 @@ _addTest(function(canvas, ctx) { ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'clear'; -_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); +_assertSame(ctx.globalCompositeOperation, 'clear', "ctx.globalCompositeOperation", "'clear'"); }); diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html index e14f5d3b361..5f1c7fa6d6e 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html @@ -25,15 +25,15 @@ ctx.fillRect(0, 0, 100, 50); var canvas2 = document.createElement('canvas'); canvas2.width = 0; canvas2.height = 10; -assert_throws("INVALID_STATE_ERR", function() { ctx.drawImage(canvas2, 0, 0); }); +ctx.drawImage(canvas2, 0, 0); canvas2.width = 10; canvas2.height = 0; -assert_throws("INVALID_STATE_ERR", function() { ctx.drawImage(canvas2, 0, 0); }); +ctx.drawImage(canvas2, 0, 0); canvas2.width = 0; canvas2.height = 0; -assert_throws("INVALID_STATE_ERR", function() { ctx.drawImage(canvas2, 0, 0); }); +ctx.drawImage(canvas2, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html index 6906284e00a..be04a70588c 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html @@ -8,7 +8,7 @@

2d.drawImage.zerosource

-

drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR

+

drawImage with zero-sized source rectangle draws nothing without exception

Actual output:

@@ -16,14 +16,14 @@

Expected output:

    \n' % (s) - - images = '' - for i in test.get('images', []): - id = i.split('/')[-1] - if '/' not in i: - used_images[i] = 1 - i = '../images/%s' % i - images += '\n' % (i,id) - mochi_images = images.replace('../images/', 'image_') - if W3CMODE: images = images.replace("../images/", "/images/") - - fonts = '' - fonthack = '' - for i in test.get('fonts', []): - fonts += '@font-face {\n font-family: %s;\n src: url("/fonts/%s.ttf");\n}\n' % (i, i) - # Browsers require the font to actually be used in the page - if test.get('fonthack', 1): - fonthack += 'A\n' % i - if fonts: - fonts = '\n' % fonts - - fallback = test.get('fallback', '

    FAIL (fallback content)

    ') - - desc = test.get('desc', '') - escaped_desc = simpleEscapeJS(desc) - template_params = { - 'name':name, 'name_wrapped':name_wrapped, 'backrefs':backref_html(name), - 'mapped_name':mapped_name, - 'desc':desc, 'escaped_desc':escaped_desc, - 'prev':prev, 'next':next, 'refs':refs, 'notes':notes, 'images':images, - 'fonts':fonts, 'fonthack':fonthack, - 'canvas':canvas, 'expected':expectation_html, 'code':code, 'scripts':scripts, - 'mochi_name':mochi_name, 'mochi_desc':mochi_desc, 'mochi_code':mochi_code, - 'mochi_setup':mochi_setup, 'mochi_footer':mochi_footer, 'mochi_images':mochi_images, - 'fallback':fallback - } - - if W3CMODE: - f = codecs.open('%s/%s.html' % (TESTOUTPUTDIR, mapped_name), 'w', 'utf-8') - f.write(templates['w3c'] % template_params) - else: - f = codecs.open('%s/%s.html' % (TESTOUTPUTDIR, name), 'w', 'utf-8') - f.write(templates['standalone'] % template_params) - - f = codecs.open('%s/framed.%s.html' % (TESTOUTPUTDIR, name), 'w', 'utf-8') - f.write(templates['framed'] % template_params) - - f = codecs.open('%s/minimal.%s.html' % (TESTOUTPUTDIR, name), 'w', 'utf-8') - f.write(templates['minimal'] % template_params) - - if mochitest: - mochitests.append(name) - f = codecs.open('%s/mochitests/test_%s.html' % (MISCOUTPUTDIR, name), 'w', 'utf-8') - f.write(templates['mochitest'] % template_params) - -def write_mochitest_makefile(): - f = open('%s/mochitests/Makefile.in' % MISCOUTPUTDIR, 'w') - f.write(templates['mochitest.Makefile']) - files = ['test_%s.html' % n for n in mochitests] + ['image_%s' % n for n in used_images] - chunksize = 100 - chunks = [] - for i in range(0, len(files), chunksize): - chunk = files[i:i+chunksize] - name = '_TEST_FILES_%d' % (i / chunksize) - chunks.append(name) - f.write('%s = \\\n' % name) - for file in chunk: f.write('\t%s \\\n' % file) - f.write('\t$(NULL)\n\n') - f.write('# split up into groups to work around command-line length limits\n') - for name in chunks: - f.write('libs:: $(%s)\n\t$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)\n\n' % name) - -if not W3CMODE: - for i in used_images: - shutil.copyfile("../../images/%s" % i, "%s/mochitests/image_%s" % (MISCOUTPUTDIR, i)) - write_mochitest_makefile() - -print - -def write_index(): - f = open('%s/index.html' % TESTOUTPUTDIR, 'w') - f.write(templates['index.w3c' if W3CMODE else 'index'] % { 'updated':time.strftime('%Y-%m-%d', time.gmtime()) }) - f.write('\n
      \n') - depth = 1 - for category in category_names: - name = category[1:-1] or '' - count = len(category_contents_all[category]) - new_depth = category.count('.') - while new_depth < depth: f.write(' '*(depth-1) + '
    \n'); depth -= 1 - f.write(' '*depth + templates['index.w3c.category.item' if W3CMODE else 'index.category.item'] % (name or 'all', name, count, '' if count==1 else 's')) - while new_depth+1 > depth: f.write(' '*depth + '
    \n'); depth -= 1 - -def write_category_indexes(): - for category in category_names: - name = (category[1:-1] or 'all') - - f = open('%s/index.%s.html' % (TESTOUTPUTDIR, name), 'w') - f.write(templates['index.w3c.frame' if W3CMODE else 'index.frame'] % { 'backrefs':backref_html(name), 'category':name }) - for item in category_contents_all[category]: - f.write(templates['index.w3c.frame.item' if W3CMODE else 'index.frame.item'] % item) - -def write_reportgen(): - f = open('%s/reportgen.html' % MISCOUTPUTDIR, 'w') - items_text = ',\n'.join(('"%s"' % item) for item in category_contents_all['.']) - f.write(templates['reportgen'] % {'items':items_text }) - -def write_results(): - results = {} - uas = [] - uastrings = {} - for item in category_contents_all['.']: results[item] = {} - - f = open('%s/results.html' % MISCOUTPUTDIR, 'w') - f.write(templates['results']) - - if not os.path.exists('results.yaml'): - print "Can't find results.yaml" - else: - for resultset in yaml.load(open('results.yaml', "r").read()): - #title = "%s (%s)" % (resultset['ua'], resultset['time']) - title = resultset['name'] - #assert title not in uas # don't allow repetitions - if title not in uas: - uas.append(title) - uastrings[title] = resultset['ua'] - else: - assert uastrings[title] == resultset['ua'] - for r in resultset['results']: - if r['id'] not in results: - print 'Skipping results for removed test %s' % r['id'] - continue - results[r['id']][title] = ( - r['status'].lower(), - re.sub(r'%(..)', lambda m: chr(int(m.group(1), 16)), - re.sub(r'%u(....)', lambda m: unichr(int(m.group(1), 16)), - r['notes'])).encode('utf8') - ) - - passes = {} - for ua in uas: - f.write('%s\n' % (uastrings[ua], ua)) - passes[ua] = 0 - for id in category_contents_all['.']: - f.write('# %s\n' % (id, id, id, id)) - for ua in uas: - status, details = results[id].get(ua, ('', '')) - f.write('
      %s
    \n' % (status, details)) - if status == 'pass': passes[ua] += 1 - f.write('Passes\n') - for ua in uas: - f.write('%.1f%%\n' % ((100.0 * passes[ua]) / len(category_contents_all['.']))) - f.write('\n') - for ua in uas: - f.write('%s\n' % ua) - f.write('\n') - -def getNodeText(node): - t, offsets = '', [] - - # Skip over any previous annotations we added - if node.nodeType == node.ELEMENT_NODE and 'testrefs' in node.getAttribute('class').split(' '): - return t, offsets - - if node.nodeType == node.TEXT_NODE: - val = node.nodeValue - val = val.replace(unichr(0xa0), ' ') # replace  s - t += val - offsets += [ (node, len(node.nodeValue)) ] - for n in node.childNodes: - child_t, child_offsets = getNodeText(n) - t += child_t - offsets += child_offsets - return t, offsets - -def htmlSerializer(element): - element.normalize() - rv = [] - specialtext = ['style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'noscript'] - empty = ['area', 'base', 'basefont', 'bgsound', 'br', 'col', 'embed', 'frame', - 'hr', 'img', 'input', 'link', 'meta', 'param', 'spacer', 'wbr'] - - def serializeElement(element): - if element.nodeType == Node.DOCUMENT_TYPE_NODE: - rv.append("" % element.name) - elif element.nodeType == Node.DOCUMENT_NODE: - for child in element.childNodes: - serializeElement(child) - elif element.nodeType == Node.COMMENT_NODE: - rv.append("" % element.nodeValue) - elif element.nodeType == Node.TEXT_NODE: - unescaped = False - n = element.parentNode - while n is not None: - if n.nodeName in specialtext: - unescaped = True - break - n = n.parentNode - if unescaped: - rv.append(element.nodeValue) - else: - rv.append(escapeHTML(element.nodeValue)) - else: - rv.append("<%s" % element.nodeName) - if element.hasAttributes(): - for name, value in element.attributes.items(): - rv.append(' %s="%s"' % (name, escapeHTML(value))) - rv.append(">") - if element.nodeName not in empty: - for child in element.childNodes: - serializeElement(child) - rv.append("" % element.nodeName) - serializeElement(element) - return '\n' + ''.join(rv) - -def write_annotated_spec(): - # Load the stripped-down XHTMLised copy of the spec - doc = xml.dom.minidom.parse(open('current-work-canvas.xhtml', 'r')) - - # Insert our new stylesheet - n = doc.getElementsByTagName('head')[0].appendChild(doc.createElement('link')) - n.setAttribute('rel', 'stylesheet') - n.setAttribute('href', '../common/canvas-spec.css' if W3CMODE else '../spectest.css') - n.setAttribute('type', 'text/css') - - spec_assertion_patterns = [] - for a in spec_assertions: - # Warn about problems - if a['id'] not in spec_refs: - print "Unused spec statement %s" % a['id'] - - pattern_text = a['text'] - - if 'keyword' in a: - # Explicit keyword override - keyword = a['keyword'] - else: - # Extract the marked keywords, and remove the markers - keyword = 'none' - for kw in ['must', 'should', 'required']: - if ('*%s*' % kw) in pattern_text: - keyword = kw - pattern_text = pattern_text.replace('*%s*' % kw, kw) - break - # Make sure there wasn't >1 keyword - for kw in ['must', 'should', 'required']: - assert('*%s*' % kw not in pattern_text) - - # Convert the special pattern format into regexp syntax - pattern_text = (pattern_text. - # Escape relevant characters - replace('*', r'\*'). - replace('+', r'\+'). - replace('.', r'\.'). - replace('(', r'\('). - replace(')', r'\)'). - replace('[', r'\['). - replace(']', r'\]'). - # Convert special sequences back into unescaped regexp code - replace(' ', r'\s+'). - replace(r'<\.\.\.>', r'.+'). - replace('<^>', r'()'). - replace('', r'\s*?\n') - ) - pattern = re.compile(pattern_text, re.S) - spec_assertion_patterns.append( (a['id'], pattern, keyword, a.get('previously', None)) ) - matched_assertions = {} - - def process_element(e): - if e.nodeType == e.ELEMENT_NODE and (e.getAttribute('class') == 'impl' or e.hasAttribute('data-component')): - for c in e.childNodes: - process_element(c) - return - - t, offsets = getNodeText(e) - for id, pattern, keyword, previously in spec_assertion_patterns: - m = pattern.search(t) - if m: - # When the pattern-match isn't enough to uniquely identify a sentence, - # allow explicit back-references to earlier paragraphs - if previously: - if len(previously) >= 3: - n, text, exp = previously - else: - n, text = previously - exp = True - node = e - while n and node.previousSibling: - node = node.previousSibling - n -= 1 - if (text not in getNodeText(node)[0]) == exp: - continue # discard this match - - if id in matched_assertions: - print "Spec statement %s matches multiple places" % id - matched_assertions[id] = True - - if m.lastindex != 1: - print "Spec statement %s has incorrect number of match groups" % id - - end = m.end(1) - end_node = None - for end_node, o in offsets: - if end < o: - break - end -= o - assert(end_node) - - n1 = doc.createElement('span') - n1.setAttribute('class', 'testrefs kw-%s' % keyword) - n1.setAttribute('id', 'testrefs.%s' % id) - n1.appendChild(doc.createTextNode(' ')) - - n = n1.appendChild(doc.createElement('a')) - n.setAttribute('href', '#testrefs.%s' % id) - n.setAttribute('title', id) - n.appendChild(doc.createTextNode('#')) - - n1.appendChild(doc.createTextNode(' ')) - for test_id in spec_refs.get(id, []): - n = n1.appendChild(doc.createElement('a')) - n.setAttribute('href', '../canvas/%s.html' % test_id) - n.appendChild(doc.createTextNode(test_id)) - n1.appendChild(doc.createTextNode(' ')) - n0 = doc.createTextNode(end_node.nodeValue[:end]) - n2 = doc.createTextNode(end_node.nodeValue[end:]) - - p = end_node.parentNode - p.replaceChild(n2, end_node) - p.insertBefore(n1, n2) - p.insertBefore(n0, n1) - - t, offsets = getNodeText(e) - - for e in doc.getElementsByTagName('body')[0].childNodes: - process_element(e) - - for s in spec_assertions: - if s['id'] not in matched_assertions: - print "Annotation incomplete: Unmatched spec statement %s" % s['id'] - - # Convert from XHTML back to HTML - doc.documentElement.removeAttribute('xmlns') - doc.documentElement.setAttribute('lang', doc.documentElement.getAttribute('xml:lang')) - - head = doc.documentElement.getElementsByTagName('head')[0] - head.insertBefore(doc.createElement('meta'), head.firstChild).setAttribute('charset', 'UTF-8') - - f = codecs.open('%s/canvas.html' % SPECOUTPUTDIR, 'w', 'utf-8') - f.write(htmlSerializer(doc)) - -if not W3CMODE: - write_index() - write_category_indexes() - write_reportgen() - write_results() - write_annotated_spec() +genTestUtils('../../2dcontext', '../../2dcontext', 'templates.yaml', 'name2dir.yaml', False) diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/gentestutils.py b/tests/wpt/web-platform-tests/2dcontext/tools/gentestutils.py new file mode 100644 index 00000000000..4aaf816c93a --- /dev/null +++ b/tests/wpt/web-platform-tests/2dcontext/tools/gentestutils.py @@ -0,0 +1,814 @@ +# Copyright (c) 2010 Philip Taylor +# Released under the BSD license and W3C Test Suite License: see LICENSE.txt + +# Current code status: +# +# This was originally written for use at +# http://philip.html5.org/tests/canvas/suite/tests/ +# +# It has been adapted for use with the Web Platform Test Suite suite at +# https://github.com/w3c/web-platform-tests/ +# +# The W3C version excludes a number of features (multiple versions of each test +# case of varying verbosity, Mozilla mochitests, semi-automated test harness) +# to focus on simply providing reviewable test cases. It also expects a different +# directory structure. +# This code attempts to support both versions, but the non-W3C version hasn't +# been tested recently and is probably broken. + +# To update or add test cases: +# +# * Modify the tests*.yaml files. +# 'name' is an arbitrary hierarchical name to help categorise tests. +# 'desc' is a rough description of what behaviour the test aims to test. +# 'testing' is a list of references to spec.yaml, to show which spec sentences +# this test case is primarily testing. +# 'code' is JavaScript code to execute, with some special commands starting with '@' +# 'expected' is what the final canvas output should be: a string 'green' or 'clear' +# (100x50 images in both cases), or a string 'size 100 50' (or any other size) +# followed by Python code using Pycairo to generate the image. +# +# * Run "python gentest.py". +# This requires a few Python modules which might not be ubiquitous. +# It has only been tested on Linux. +# It will usually emit some warnings, which ideally should be fixed but can +# generally be safely ignored. +# +# * Test the tests, add new ones to Git, remove deleted ones from Git, etc. + +import re +import codecs +import time +import os +import shutil +import sys +import xml.dom.minidom +from xml.dom.minidom import Node + +import cairo + +try: + import syck as yaml # compatible and lots faster +except ImportError: + import yaml + +def genTestUtils(TESTOUTPUTDIR, IMAGEOUTPUTDIR, TEMPLATEFILE, NAME2DIRFILE, ISOFFSCREENCANVAS): + + # Default mode is for the W3C test suite; the --standalone option + # generates various extra files that aren't needed there + W3CMODE = True + if '--standalone' in sys.argv: + W3CMODE = False + + MISCOUTPUTDIR = './output' + SPECOUTPUTDIR = '../../annotated-spec' + + SPECOUTPUTPATH = '../annotated-spec' # relative to TESTOUTPUTDIR + + def simpleEscapeJS(str): + return str.replace('\\', '\\\\').replace('"', '\\"') + + def escapeJS(str): + str = simpleEscapeJS(str) + str = re.sub(r'\[(\w+)\]', r'[\\""+(\1)+"\\"]', str) # kind of an ugly hack, for nicer failure-message output + return str + + def escapeHTML(str): + return str.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"') + + def expand_nonfinite(method, argstr, tail): + """ + >>> print expand_nonfinite('f', '<0 a>, <0 b>', ';') + f(a, 0); + f(0, b); + f(a, b); + >>> print expand_nonfinite('f', '<0 a>, <0 b c>, <0 d>', ';') + f(a, 0, 0); + f(0, b, 0); + f(0, c, 0); + f(0, 0, d); + f(a, b, 0); + f(a, b, d); + f(a, 0, d); + f(0, b, d); + """ + # argstr is ", ..." (where usually + # 'invalid' is Infinity/-Infinity/NaN) + args = [] + for arg in argstr.split(', '): + a = re.match('<(.*)>', arg).group(1) + args.append(a.split(' ')) + calls = [] + # Start with the valid argument list + call = [ args[j][0] for j in range(len(args)) ] + # For each argument alone, try setting it to all its invalid values: + for i in range(len(args)): + for a in args[i][1:]: + c2 = call[:] + c2[i] = a + calls.append(c2) + # For all combinations of >= 2 arguments, try setting them to their + # first invalid values. (Don't do all invalid values, because the + # number of combinations explodes.) + def f(c, start, depth): + for i in range(start, len(args)): + if len(args[i]) > 1: + a = args[i][1] + c2 = c[:] + c2[i] = a + if depth > 0: calls.append(c2) + f(c2, i+1, depth+1) + f(call, 0, 0) + + return '\n'.join('%s(%s)%s' % (method, ', '.join(c), tail) for c in calls) + + # Run with --test argument to run unit tests + if len(sys.argv) > 1 and sys.argv[1] == '--test': + import doctest + doctest.testmod() + sys.exit() + + templates = yaml.load(open(TEMPLATEFILE, "r").read()) + name_mapping = yaml.load(open(NAME2DIRFILE, "r").read()) + + SPECFILE = 'spec.yaml' + if ISOFFSCREENCANVAS: + SPECFILE = '../../2dcontext/tools/spec.yaml' + spec_assertions = [] + for s in yaml.load(open(SPECFILE, "r").read())['assertions']: + if 'meta' in s: + eval(compile(s['meta'], '', 'exec'), {}, {'assertions':spec_assertions}) + else: + spec_assertions.append(s) + + tests = [] + TESTSFILES = ['tests.yaml', 'tests2d.yaml', 'tests2dtext.yaml'] + if ISOFFSCREENCANVAS: + TESTSFILES = ['tests2d.yaml'] + for t in sum([ yaml.load(open(f, "r").read()) for f in TESTSFILES], []): + if 'DISABLED' in t: + continue + if 'meta' in t: + eval(compile(t['meta'], '', 'exec'), {}, {'tests':tests}) + else: + tests.append(t) + + category_names = [] + category_contents_direct = {} + category_contents_all = {} + + spec_ids = {} + for t in spec_assertions: spec_ids[t['id']] = True + spec_refs = {} + + def backref_html(name): + backrefs = [] + c = '' + for p in name.split('.')[:-1]: + c += '.'+p + backrefs.append('%s.' % (c, p)) + backrefs.append(name.split('.')[-1]) + return ''.join(backrefs) + + def make_flat_image(filename, w, h, r,g,b,a): + if os.path.exists('%s/%s' % (IMAGEOUTPUTDIR, filename)): + return filename + surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) + cr = cairo.Context(surface) + cr.set_source_rgba(r, g, b, a) + cr.rectangle(0, 0, w, h) + cr.fill() + surface.write_to_png('%s/%s' % (IMAGEOUTPUTDIR, filename)) + return filename + + # Ensure the test output directories exist + testdirs = [TESTOUTPUTDIR, IMAGEOUTPUTDIR, MISCOUTPUTDIR] + if not W3CMODE: testdirs.append('%s/mochitests' % MISCOUTPUTDIR) + else: + for map_dir in set(name_mapping.values()): + testdirs.append("%s/%s" % (TESTOUTPUTDIR, map_dir)) + for d in testdirs: + try: os.mkdir(d) + except: pass # ignore if it already exists + + mochitests = [] + used_images = {} + + def expand_test_code(code): + code = re.sub(r'@nonfinite ([^(]+)\(([^)]+)\)(.*)', lambda m: expand_nonfinite(m.group(1), m.group(2), m.group(3)), code) # must come before '@assert throws' + + if ISOFFSCREENCANVAS: + code = re.sub(r'@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);', + r'_assertPixel(offscreenCanvas, \1, \2, "\1", "\2");', + code) + else: + code = re.sub(r'@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);', + r'_assertPixel(canvas, \1, \2, "\1", "\2");', + code) + + if ISOFFSCREENCANVAS: + code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);', + r'_assertPixelApprox(offscreenCanvas, \1, \2, "\1", "\2", 2);', + code) + else: + code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);', + r'_assertPixelApprox(canvas, \1, \2, "\1", "\2", 2);', + code) + + if ISOFFSCREENCANVAS: + code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+/- (\d+);', + r'_assertPixelApprox(offscreenCanvas, \1, \2, "\1", "\2", \3);', + code) + else: + code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+/- (\d+);', + r'_assertPixelApprox(canvas, \1, \2, "\1", "\2", \3);', + code) + + code = re.sub(r'@assert throws (\S+_ERR) (.*);', + r'assert_throws("\1", function() { \2; });', + code) + + code = re.sub(r'@assert throws (\S+Error) (.*);', + r'assert_throws(new \1(), function() { \2; });', + code) + + code = re.sub(r'@assert throws (.*);', + r'assert_throws(null, function() { \1; });', + code) + + code = re.sub(r'@assert (.*) === (.*);', + lambda m: '_assertSame(%s, %s, "%s", "%s");' + % (m.group(1), m.group(2), escapeJS(m.group(1)), escapeJS(m.group(2))) + , code) + + code = re.sub(r'@assert (.*) !== (.*);', + lambda m: '_assertDifferent(%s, %s, "%s", "%s");' + % (m.group(1), m.group(2), escapeJS(m.group(1)), escapeJS(m.group(2))) + , code) + + code = re.sub(r'@assert (.*) =~ (.*);', + lambda m: 'assert_regexp_match(%s, %s);' + % (m.group(1), m.group(2)) + , code) + + code = re.sub(r'@assert (.*);', + lambda m: '_assert(%s, "%s");' + % (m.group(1), escapeJS(m.group(1))) + , code) + + code = re.sub(r' @moz-todo', '', code) + + code = re.sub(r'@moz-UniversalBrowserRead;', + "" + , code) + + assert('@' not in code) + + return code + + def expand_mochitest_code(code): + code = re.sub(r'@nonfinite ([^(]+)\(([^)]+)\)(.*)', lambda m: expand_nonfinite(m.group(1), m.group(2), m.group(3)), code) + + code = re.sub(r'@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);', + r'isPixel(ctx, \1, \2, "\1", "\2", 0);', + code) + + code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);', + r'isPixel(ctx, \1, \2, "\1", "\2", 2);', + code) + + code = re.sub(r'@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+/- (\d+);', + r'isPixel(ctx, \1, \2, "\1", "\2", \3);', + code) + + code = re.sub(r'@assert throws (\S+_ERR) (.*);', + lambda m: 'var _thrown = undefined; try {\n %s;\n} catch (e) { _thrown = e }; ok(_thrown && _thrown.code == DOMException.%s, "should throw %s");' + % (m.group(2), m.group(1), m.group(1)) + , code) + + code = re.sub(r'@assert throws (\S+Error) (.*);', + lambda m: 'var _thrown = undefined; try {\n %s;\n} catch (e) { _thrown = e }; ok(_thrown && (_thrown instanceof %s), "should throw %s");' + % (m.group(2), m.group(1), m.group(1)) + , code) + + code = re.sub(r'@assert throws (.*);', + lambda m: 'try { var _thrown = false;\n %s;\n} catch (e) { _thrown = true; } finally { ok(_thrown, "should throw exception"); }' + % (m.group(1)) + , code) + + code = re.sub(r'@assert (.*) =~ (.*);', + lambda m: 'ok(%s.match(%s), "%s.match(%s)");' + % (m.group(1), m.group(2), escapeJS(m.group(1)), escapeJS(m.group(2))) + , code) + + code = re.sub(r'@assert (.*);', + lambda m: 'ok(%s, "%s");' + % (m.group(1), escapeJS(m.group(1))) + , code) + + code = re.sub(r'((?:^|\n|;)\s*)ok(.*;) @moz-todo', + lambda m: '%stodo%s' + % (m.group(1), m.group(2)) + , code) + + code = re.sub(r'((?:^|\n|;)\s*)(is.*;) @moz-todo', + lambda m: '%stodo_%s' + % (m.group(1), m.group(2)) + , code) + + code = re.sub(r'@moz-UniversalBrowserRead;', + "netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');" + , code) + + code = code.replace('../images/', 'image_') + + assert '@' not in code, '@ not in code:\n%s' % code + + return code + + used_tests = {} + for i in range(len(tests)): + test = tests[i] + + name = test['name'] + print "\r(%s)" % name, " "*32, "\t", + + if name in used_tests: + print "Test %s is defined twice" % name + used_tests[name] = 1 + + mapped_name = None + for mn in sorted(name_mapping.keys(), key=len, reverse=True): + if name.startswith(mn): + mapped_name = "%s/%s" % (name_mapping[mn], name) + break + if not mapped_name: + print "LIKELY ERROR: %s has no defined target directory mapping" % name + if ISOFFSCREENCANVAS: + continue + else: + mapped_name = name + if 'manual' in test: + mapped_name += "-manual" + + cat_total = '' + for cat_part in [''] + name.split('.')[:-1]: + cat_total += cat_part+'.' + if not cat_total in category_names: category_names.append(cat_total) + category_contents_all.setdefault(cat_total, []).append(name) + category_contents_direct.setdefault(cat_total, []).append(name) + + for ref in test.get('testing', []): + if ref not in spec_ids: + print "Test %s uses nonexistent spec point %s" % (name, ref) + spec_refs.setdefault(ref, []).append(name) + #if not (len(test.get('testing', [])) or 'mozilla' in test): + if not test.get('testing', []): + print "Test %s doesn't refer to any spec points" % name + + if test.get('expected', '') == 'green' and re.search(r'@assert pixel .* 0,0,0,0;', test['code']): + print "Probable incorrect pixel test in %s" % name + + code = expand_test_code(test['code']) + + mochitest = not (W3CMODE or 'manual' in test or 'disabled' in test.get('mozilla', {})) + if mochitest: + mochi_code = expand_mochitest_code(test['code']) + + mochi_name = name + if 'mozilla' in test: + if 'throws' in test['mozilla']: + mochi_code = templates['mochitest.exception'] % mochi_code + if 'bug' in test['mozilla']: + mochi_name = "%s - bug %s" % (name, test['mozilla']['bug']) + + if 'desc' in test: + mochi_desc = '\n' % test['desc'] + else: + mochi_desc = '' + + if 'deferTest' in mochi_code: + mochi_setup = '' + mochi_footer = '' + else: + mochi_setup = '' + mochi_footer = 'SimpleTest.finish();\n' + + for f in ['isPixel', 'todo_isPixel', 'deferTest', 'wrapFunction']: + if f in mochi_code: + mochi_setup += templates['mochitest.%s' % f] + else: + if not W3CMODE: + print "Skipping mochitest for %s" % name + mochi_name = '' + mochi_desc = '' + mochi_code = '' + mochi_setup = '' + mochi_footer = '' + + expectation_html = '' + if 'expected' in test and test['expected'] is not None: + expected = test['expected'] + expected_img = None + if expected == 'green': + expected_img = make_flat_image('green-100x50.png', 100, 50, 0,1,0,1) + if W3CMODE: expected_img = "/images/" + expected_img + elif expected == 'clear': + expected_img = make_flat_image('clear-100x50.png', 100, 50, 0,0,0,0) + if W3CMODE: expected_img = "/images/" + expected_img + else: + if ';' in expected: print "Found semicolon in %s" % name + expected = re.sub(r'^size (\d+) (\d+)', + r'surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, \1, \2)\ncr = cairo.Context(surface)', + expected) + + if mapped_name.endswith("-manual"): + png_name = mapped_name[:-len("-manual")] + else: + png_name = mapped_name + expected += "\nsurface.write_to_png('%s/%s.png')\n" % (IMAGEOUTPUTDIR, png_name) + eval(compile(expected, '' % test['name'], 'exec'), {}, {'cairo':cairo}) + expected_img = "%s.png" % name + + if expected_img: + expectation_html = ('

    Expected output:' + + '

    ' % (expected_img)) + + canvas = test.get('canvas', 'width="100" height="50"') + + prev = tests[i-1]['name'] if i != 0 else 'index' + next = tests[i+1]['name'] if i != len(tests)-1 else 'index' + + name_wrapped = name.replace('.', '.​') # (see https://bugzilla.mozilla.org/show_bug.cgi?id=376188) + + refs = ''.join('

  • %s\n' % (SPECOUTPUTPATH, n,n) for n in test.get('testing', [])) + if not W3CMODE and 'mozilla' in test and 'bug' in test['mozilla']: + refs += '
  • Bugzilla' % test['mozilla']['bug'] + + notes = '

    %s' % test['notes'] if 'notes' in test else '' + + scripts = '' + for s in test.get('scripts', []): + scripts += '\n' % (s) + + images = '' + for i in test.get('images', []): + id = i.split('/')[-1] + if '/' not in i: + used_images[i] = 1 + i = '../images/%s' % i + images += '\n' % (i,id) + mochi_images = images.replace('../images/', 'image_') + if W3CMODE: images = images.replace("../images/", "/images/") + + fonts = '' + fonthack = '' + for i in test.get('fonts', []): + fonts += '@font-face {\n font-family: %s;\n src: url("/fonts/%s.ttf");\n}\n' % (i, i) + # Browsers require the font to actually be used in the page + if test.get('fonthack', 1): + fonthack += 'A\n' % i + if fonts: + fonts = '\n' % fonts + + fallback = test.get('fallback', '

    FAIL (fallback content)

    ') + + desc = test.get('desc', '') + escaped_desc = simpleEscapeJS(desc) + template_params = { + 'name':name, 'name_wrapped':name_wrapped, 'backrefs':backref_html(name), + 'mapped_name':mapped_name, + 'desc':desc, 'escaped_desc':escaped_desc, + 'prev':prev, 'next':next, 'refs':refs, 'notes':notes, 'images':images, + 'fonts':fonts, 'fonthack':fonthack, + 'canvas':canvas, 'expected':expectation_html, 'code':code, 'scripts':scripts, + 'mochi_name':mochi_name, 'mochi_desc':mochi_desc, 'mochi_code':mochi_code, + 'mochi_setup':mochi_setup, 'mochi_footer':mochi_footer, 'mochi_images':mochi_images, + 'fallback':fallback + } + + if W3CMODE: + f = codecs.open('%s/%s.html' % (TESTOUTPUTDIR, mapped_name), 'w', 'utf-8') + f.write(templates['w3c'] % template_params) + if ISOFFSCREENCANVAS: + f = codecs.open('%s/%s.worker.js' % (TESTOUTPUTDIR, mapped_name), 'w', 'utf-8') + f.write(templates['w3cworker'] % template_params) + else: + f = codecs.open('%s/%s.html' % (TESTOUTPUTDIR, name), 'w', 'utf-8') + f.write(templates['standalone'] % template_params) + + f = codecs.open('%s/framed.%s.html' % (TESTOUTPUTDIR, name), 'w', 'utf-8') + f.write(templates['framed'] % template_params) + + f = codecs.open('%s/minimal.%s.html' % (TESTOUTPUTDIR, name), 'w', 'utf-8') + f.write(templates['minimal'] % template_params) + + if mochitest: + mochitests.append(name) + f = codecs.open('%s/mochitests/test_%s.html' % (MISCOUTPUTDIR, name), 'w', 'utf-8') + f.write(templates['mochitest'] % template_params) + + def write_mochitest_makefile(): + f = open('%s/mochitests/Makefile.in' % MISCOUTPUTDIR, 'w') + f.write(templates['mochitest.Makefile']) + files = ['test_%s.html' % n for n in mochitests] + ['image_%s' % n for n in used_images] + chunksize = 100 + chunks = [] + for i in range(0, len(files), chunksize): + chunk = files[i:i+chunksize] + name = '_TEST_FILES_%d' % (i / chunksize) + chunks.append(name) + f.write('%s = \\\n' % name) + for file in chunk: f.write('\t%s \\\n' % file) + f.write('\t$(NULL)\n\n') + f.write('# split up into groups to work around command-line length limits\n') + for name in chunks: + f.write('libs:: $(%s)\n\t$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)\n\n' % name) + + if not W3CMODE: + for i in used_images: + shutil.copyfile("../../images/%s" % i, "%s/mochitests/image_%s" % (MISCOUTPUTDIR, i)) + write_mochitest_makefile() + + print + + def write_index(): + f = open('%s/index.html' % TESTOUTPUTDIR, 'w') + f.write(templates['index.w3c' if W3CMODE else 'index'] % { 'updated':time.strftime('%Y-%m-%d', time.gmtime()) }) + f.write('\n
      \n') + depth = 1 + for category in category_names: + name = category[1:-1] or '' + count = len(category_contents_all[category]) + new_depth = category.count('.') + while new_depth < depth: f.write(' '*(depth-1) + '
    \n'); depth -= 1 + f.write(' '*depth + templates['index.w3c.category.item' if W3CMODE else 'index.category.item'] % (name or 'all', name, count, '' if count==1 else 's')) + while new_depth+1 > depth: f.write(' '*depth + '
      \n'); depth += 1 + for item in category_contents_direct.get(category, []): + f.write(' '*depth + '
    • %s\n' % (item, item) ) + while 0 < depth: f.write(' '*(depth-1) + '
    \n'); depth -= 1 + + def write_category_indexes(): + for category in category_names: + name = (category[1:-1] or 'all') + + f = open('%s/index.%s.html' % (TESTOUTPUTDIR, name), 'w') + f.write(templates['index.w3c.frame' if W3CMODE else 'index.frame'] % { 'backrefs':backref_html(name), 'category':name }) + for item in category_contents_all[category]: + f.write(templates['index.w3c.frame.item' if W3CMODE else 'index.frame.item'] % item) + + def write_reportgen(): + f = open('%s/reportgen.html' % MISCOUTPUTDIR, 'w') + items_text = ',\n'.join(('"%s"' % item) for item in category_contents_all['.']) + f.write(templates['reportgen'] % {'items':items_text }) + + def write_results(): + results = {} + uas = [] + uastrings = {} + for item in category_contents_all['.']: results[item] = {} + + f = open('%s/results.html' % MISCOUTPUTDIR, 'w') + f.write(templates['results']) + + if not os.path.exists('results.yaml'): + print "Can't find results.yaml" + else: + for resultset in yaml.load(open('results.yaml', "r").read()): + #title = "%s (%s)" % (resultset['ua'], resultset['time']) + title = resultset['name'] + #assert title not in uas # don't allow repetitions + if title not in uas: + uas.append(title) + uastrings[title] = resultset['ua'] + else: + assert uastrings[title] == resultset['ua'] + for r in resultset['results']: + if r['id'] not in results: + print 'Skipping results for removed test %s' % r['id'] + continue + results[r['id']][title] = ( + r['status'].lower(), + re.sub(r'%(..)', lambda m: chr(int(m.group(1), 16)), + re.sub(r'%u(....)', lambda m: unichr(int(m.group(1), 16)), + r['notes'])).encode('utf8') + ) + + passes = {} + for ua in uas: + f.write('%s\n' % (uastrings[ua], ua)) + passes[ua] = 0 + for id in category_contents_all['.']: + f.write('# %s\n' % (id, id, id, id)) + for ua in uas: + status, details = results[id].get(ua, ('', '')) + f.write('
      %s
    \n' % (status, details)) + if status == 'pass': passes[ua] += 1 + f.write('Passes\n') + for ua in uas: + f.write('%.1f%%\n' % ((100.0 * passes[ua]) / len(category_contents_all['.']))) + f.write('\n') + for ua in uas: + f.write('%s\n' % ua) + f.write('\n') + + def getNodeText(node): + t, offsets = '', [] + + # Skip over any previous annotations we added + if node.nodeType == node.ELEMENT_NODE and 'testrefs' in node.getAttribute('class').split(' '): + return t, offsets + + if node.nodeType == node.TEXT_NODE: + val = node.nodeValue + val = val.replace(unichr(0xa0), ' ') # replace  s + t += val + offsets += [ (node, len(node.nodeValue)) ] + for n in node.childNodes: + child_t, child_offsets = getNodeText(n) + t += child_t + offsets += child_offsets + return t, offsets + + def htmlSerializer(element): + element.normalize() + rv = [] + specialtext = ['style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'noscript'] + empty = ['area', 'base', 'basefont', 'bgsound', 'br', 'col', 'embed', 'frame', + 'hr', 'img', 'input', 'link', 'meta', 'param', 'spacer', 'wbr'] + + def serializeElement(element): + if element.nodeType == Node.DOCUMENT_TYPE_NODE: + rv.append("" % element.name) + elif element.nodeType == Node.DOCUMENT_NODE: + for child in element.childNodes: + serializeElement(child) + elif element.nodeType == Node.COMMENT_NODE: + rv.append("" % element.nodeValue) + elif element.nodeType == Node.TEXT_NODE: + unescaped = False + n = element.parentNode + while n is not None: + if n.nodeName in specialtext: + unescaped = True + break + n = n.parentNode + if unescaped: + rv.append(element.nodeValue) + else: + rv.append(escapeHTML(element.nodeValue)) + else: + rv.append("<%s" % element.nodeName) + if element.hasAttributes(): + for name, value in element.attributes.items(): + rv.append(' %s="%s"' % (name, escapeHTML(value))) + rv.append(">") + if element.nodeName not in empty: + for child in element.childNodes: + serializeElement(child) + rv.append("" % element.nodeName) + serializeElement(element) + return '\n' + ''.join(rv) + + def write_annotated_spec(): + # Load the stripped-down XHTMLised copy of the spec + doc = xml.dom.minidom.parse(open('current-work-canvas.xhtml', 'r')) + + # Insert our new stylesheet + n = doc.getElementsByTagName('head')[0].appendChild(doc.createElement('link')) + n.setAttribute('rel', 'stylesheet') + n.setAttribute('href', '../common/canvas-spec.css' if W3CMODE else '../spectest.css') + n.setAttribute('type', 'text/css') + + spec_assertion_patterns = [] + for a in spec_assertions: + # Warn about problems + if a['id'] not in spec_refs: + print "Unused spec statement %s" % a['id'] + + pattern_text = a['text'] + + if 'keyword' in a: + # Explicit keyword override + keyword = a['keyword'] + else: + # Extract the marked keywords, and remove the markers + keyword = 'none' + for kw in ['must', 'should', 'required']: + if ('*%s*' % kw) in pattern_text: + keyword = kw + pattern_text = pattern_text.replace('*%s*' % kw, kw) + break + # Make sure there wasn't >1 keyword + for kw in ['must', 'should', 'required']: + assert('*%s*' % kw not in pattern_text) + + # Convert the special pattern format into regexp syntax + pattern_text = (pattern_text. + # Escape relevant characters + replace('*', r'\*'). + replace('+', r'\+'). + replace('.', r'\.'). + replace('(', r'\('). + replace(')', r'\)'). + replace('[', r'\['). + replace(']', r'\]'). + # Convert special sequences back into unescaped regexp code + replace(' ', r'\s+'). + replace(r'<\.\.\.>', r'.+'). + replace('<^>', r'()'). + replace('', r'\s*?\n') + ) + pattern = re.compile(pattern_text, re.S) + spec_assertion_patterns.append( (a['id'], pattern, keyword, a.get('previously', None)) ) + matched_assertions = {} + + def process_element(e): + if e.nodeType == e.ELEMENT_NODE and (e.getAttribute('class') == 'impl' or e.hasAttribute('data-component')): + for c in e.childNodes: + process_element(c) + return + + t, offsets = getNodeText(e) + for id, pattern, keyword, previously in spec_assertion_patterns: + m = pattern.search(t) + if m: + # When the pattern-match isn't enough to uniquely identify a sentence, + # allow explicit back-references to earlier paragraphs + if previously: + if len(previously) >= 3: + n, text, exp = previously + else: + n, text = previously + exp = True + node = e + while n and node.previousSibling: + node = node.previousSibling + n -= 1 + if (text not in getNodeText(node)[0]) == exp: + continue # discard this match + + if id in matched_assertions: + print "Spec statement %s matches multiple places" % id + matched_assertions[id] = True + + if m.lastindex != 1: + print "Spec statement %s has incorrect number of match groups" % id + + end = m.end(1) + end_node = None + for end_node, o in offsets: + if end < o: + break + end -= o + assert(end_node) + + n1 = doc.createElement('span') + n1.setAttribute('class', 'testrefs kw-%s' % keyword) + n1.setAttribute('id', 'testrefs.%s' % id) + n1.appendChild(doc.createTextNode(' ')) + + n = n1.appendChild(doc.createElement('a')) + n.setAttribute('href', '#testrefs.%s' % id) + n.setAttribute('title', id) + n.appendChild(doc.createTextNode('#')) + + n1.appendChild(doc.createTextNode(' ')) + for test_id in spec_refs.get(id, []): + n = n1.appendChild(doc.createElement('a')) + n.setAttribute('href', '../canvas/%s.html' % test_id) + n.appendChild(doc.createTextNode(test_id)) + n1.appendChild(doc.createTextNode(' ')) + n0 = doc.createTextNode(end_node.nodeValue[:end]) + n2 = doc.createTextNode(end_node.nodeValue[end:]) + + p = end_node.parentNode + p.replaceChild(n2, end_node) + p.insertBefore(n1, n2) + p.insertBefore(n0, n1) + + t, offsets = getNodeText(e) + + for e in doc.getElementsByTagName('body')[0].childNodes: + process_element(e) + + for s in spec_assertions: + if s['id'] not in matched_assertions: + print "Annotation incomplete: Unmatched spec statement %s" % s['id'] + + # Convert from XHTML back to HTML + doc.documentElement.removeAttribute('xmlns') + doc.documentElement.setAttribute('lang', doc.documentElement.getAttribute('xml:lang')) + + head = doc.documentElement.getElementsByTagName('head')[0] + head.insertBefore(doc.createElement('meta'), head.firstChild).setAttribute('charset', 'UTF-8') + + f = codecs.open('%s/canvas.html' % SPECOUTPUTDIR, 'w', 'utf-8') + f.write(htmlSerializer(doc)) + + if not W3CMODE: + write_index() + write_category_indexes() + write_reportgen() + write_results() + write_annotated_spec() diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/spec.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/spec.yaml index 12b7d6be990..eb462067ad2 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/spec.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/spec.yaml @@ -181,6 +181,8 @@ assertions: text: "copy<^>" - id: 2d.composite.xor text: "xor<^>" + - id: 2d.composite.clear + text: "clear<^>" - id: 2d.composite.operation.casesensitive text: "These values are all case-sensitive<^> <...> they *must* be used exactly as shown." @@ -584,9 +586,9 @@ assertions: text: "If the image argument is <...> an HTMLVideoElement object whose readyState attribute is either HAVE_NOTHING or HAVE_METADATA<^>, then the implementation *must* return without drawing anything." - id: 2d.drawImage.zerocanvas previously: [ 10, "dw and dh" ] - text: "If the image argument is an HTMLCanvasElement object with either a horizontal dimension or a vertical dimension equal to zero, then the implementation *must* raise an INVALID_STATE_ERR exception<^>." + text: "If the image argument is an HTMLCanvasElement object with either a horizontal dimension or a vertical dimension equal to zero, then the implementation *must* return without drawing anything<^>." - id: 2d.drawImage.zerosource - text: "If one of the sw or sh arguments is zero<^>, the implementation *must* raise an INDEX_SIZE_ERR exception." + text: "If one of the sw or sh arguments is zero<^>, the implementation *must* return without drawing anything." - id: 2d.drawImage.paint text: "When drawImage() is invoked, the region of the image specified by the source rectangle *must* be painted on the region of the canvas specified by the destination rectangle<^>, after applying the current transformation matrix to the points of the destination rectangle." - id: 2d.drawImage.original diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml index 20a77dbd1f5..9e1f6dde42e 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml @@ -1307,7 +1307,7 @@ code: | ctx.globalCompositeOperation = 'xor'; ctx.globalCompositeOperation = 'clear'; - @assert ctx.globalCompositeOperation === 'xor'; + @assert ctx.globalCompositeOperation === 'clear'; - name: 2d.composite.operation.highlight testing: @@ -8772,7 +8772,7 @@ expected: green - name: 2d.drawImage.zerosource - desc: drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR + desc: drawImage with zero-sized source rectangle draws nothing without exception testing: - 2d.drawImage.zerosource images: @@ -8780,9 +8780,9 @@ code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); - @assert throws INDEX_SIZE_ERR ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); @assert pixel 50,25 ==~ 0,255,0,255; expected: green @@ -9001,15 +9001,15 @@ var canvas2 = document.createElement('canvas'); canvas2.width = 0; canvas2.height = 10; - @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); + ctx.drawImage(canvas2, 0, 0); canvas2.width = 10; canvas2.height = 0; - @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); + ctx.drawImage(canvas2, 0, 0); canvas2.width = 0; canvas2.height = 0; - @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); + ctx.drawImage(canvas2, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; expected: green diff --git a/tests/wpt/web-platform-tests/FileAPI/OWNERS b/tests/wpt/web-platform-tests/FileAPI/OWNERS index 03bb9336574..7e93ac00d50 100644 --- a/tests/wpt/web-platform-tests/FileAPI/OWNERS +++ b/tests/wpt/web-platform-tests/FileAPI/OWNERS @@ -1,6 +1,6 @@ @inexorabletash -@plehegar @zqzhang @zcorpan @jdm @Ms2ger +@mkruisselbrink diff --git a/tests/wpt/web-platform-tests/FileAPI/blob/Blob-slice.html b/tests/wpt/web-platform-tests/FileAPI/blob/Blob-slice.html index 0ecea79c8c7..03fe6ca5343 100644 --- a/tests/wpt/web-platform-tests/FileAPI/blob/Blob-slice.html +++ b/tests/wpt/web-platform-tests/FileAPI/blob/Blob-slice.html @@ -36,6 +36,30 @@ test(function() { desc: "blob2." }); + test_blob(function() { + return new Blob().slice(0,0,null); + }, { + expected: "", + type: "null", + desc: "null type Blob slice" + }); + + test_blob(function() { + return new Blob().slice(0,0,undefined); + }, { + expected: "", + type: "", + desc: "undefined type Blob slice" + }); + + test_blob(function() { + return new Blob().slice(0,0); + }, { + expected: "", + type: "", + desc: "no type Blob slice" + }); + var arrayBuffer = new ArrayBuffer(16); var int8View = new Int8Array(arrayBuffer); for (var i = 0; i < 16; i++) { diff --git a/tests/wpt/web-platform-tests/IndexedDB/historical.html b/tests/wpt/web-platform-tests/IndexedDB/historical.html new file mode 100644 index 00000000000..73d78c81676 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/historical.html @@ -0,0 +1,66 @@ + + +IndexedDB: Historical features + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbkeyrange.htm b/tests/wpt/web-platform-tests/IndexedDB/idbkeyrange.htm index dd6e5f7e50e..a7f4934e095 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/idbkeyrange.htm +++ b/tests/wpt/web-platform-tests/IndexedDB/idbkeyrange.htm @@ -17,6 +17,15 @@ assert_false(keyRange.upperOpen, "keyRange.upperOpen"); }, "IDBKeyRange.only() - returns an IDBKeyRange and the properties are set correctly"); + test( function() { + assert_throws('DataError', function() { IDBKeyRange.only(undefined); }, 'undefined is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.only(null); }, 'null is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.only({}); }, 'Object is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.only(Symbol()); }, 'Symbol is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.only(true); }, 'boolean is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.only(() => {}); }, 'function is not a valid key'); + }, "IDBKeyRange.only() - throws on invalid keys"); + // lowerBound test( function() { var keyRange = IDBKeyRange.lowerBound(1, true) @@ -32,6 +41,15 @@ assert_false(keyRange.lowerOpen, "keyRange.lowerOpen"); }, "IDBKeyRange.lowerBound() - 'open' parameter has correct default set"); + test( function() { + assert_throws('DataError', function() { IDBKeyRange.lowerBound(undefined); }, 'undefined is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.lowerBound(null); }, 'null is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.lowerBound({}); }, 'Object is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.lowerBound(Symbol()); }, 'Symbol is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.lowerBound(true); }, 'boolean is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.lowerBound(() => {}); }, 'function is not a valid key'); + }, "IDBKeyRange.lowerBound() - throws on invalid keys"); + // upperBound test( function() { var keyRange = IDBKeyRange.upperBound(1, true); @@ -47,6 +65,15 @@ assert_false(keyRange.upperOpen, "keyRange.upperOpen"); }, "IDBKeyRange.upperBound() - 'open' parameter has correct default set"); + test( function() { + assert_throws('DataError', function() { IDBKeyRange.upperBound(undefined); }, 'undefined is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.upperBound(null); }, 'null is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.upperBound({}); }, 'Object is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.upperBound(Symbol()); }, 'Symbol is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.upperBound(true); }, 'boolean is not a valid key'); + assert_throws('DataError', function() { IDBKeyRange.upperBound(() => {}); }, 'function is not a valid key'); + }, "IDBKeyRange.upperBound() - throws on invalid keys"); + // bound test( function() { var keyRange = IDBKeyRange.bound(1, 2, true, true); diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbrequest_error.html b/tests/wpt/web-platform-tests/IndexedDB/idbrequest_error.html new file mode 100644 index 00000000000..ae16b695a3f --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbrequest_error.html @@ -0,0 +1,25 @@ + + +IDBRequest.error + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbrequest_result.html b/tests/wpt/web-platform-tests/IndexedDB/idbrequest_result.html new file mode 100644 index 00000000000..29786290163 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbrequest_result.html @@ -0,0 +1,25 @@ + + +IDBRequest.result + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.html b/tests/wpt/web-platform-tests/IndexedDB/interfaces.html index 55e752f2630..033ea7b6246 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/interfaces.html +++ b/tests/wpt/web-platform-tests/IndexedDB/interfaces.html @@ -11,28 +11,35 @@ diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl b/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl index de196bf2d3a..f34061997a0 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl +++ b/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl @@ -1,157 +1,211 @@ -enum IDBTransactionMode { - "readonly", - "readwrite", - "versionchange" +[Exposed=(Window,Worker)] +interface IDBRequest : EventTarget { + readonly attribute any result; + readonly attribute DOMException? error; + readonly attribute (IDBObjectStore or IDBIndex or IDBCursor)? source; + readonly attribute IDBTransaction? transaction; + readonly attribute IDBRequestReadyState readyState; + + // Event handlers: + attribute EventHandler onsuccess; + attribute EventHandler onerror; }; enum IDBRequestReadyState { - "pending", - "done" -}; - -[Exposed=(Window,Worker)] -interface IDBKeyRange { - readonly attribute any lower; - readonly attribute any upper; - readonly attribute boolean lowerOpen; - readonly attribute boolean upperOpen; - static IDBKeyRange only (any value); - static IDBKeyRange lowerBound (any lower, optional boolean open = false); - static IDBKeyRange upperBound (any upper, optional boolean open = false); - static IDBKeyRange bound (any lower, any upper, optional boolean lowerOpen = false, optional boolean upperOpen = false); -}; - -enum IDBCursorDirection { - "next", - "nextunique", - "prev", - "prevunique" -}; - -dictionary IDBObjectStoreParameters { - (DOMString or sequence)? keyPath = null; - boolean autoIncrement = false; -}; - -dictionary IDBIndexParameters { - boolean unique = false; - boolean multiEntry = false; -}; - -dictionary IDBVersionChangeEventInit : EventInit { - unsigned long long oldVersion = 0; - unsigned long long? newVersion = null; -}; - -[Exposed=(Window,Worker)] -interface IDBRequest : EventTarget { - readonly attribute any result; - readonly attribute DOMError error; - readonly attribute (IDBObjectStore or IDBIndex or IDBCursor)? source; - readonly attribute IDBTransaction transaction; - readonly attribute IDBRequestReadyState readyState; - attribute EventHandler onsuccess; - attribute EventHandler onerror; + "pending", + "done" }; [Exposed=(Window,Worker)] interface IDBOpenDBRequest : IDBRequest { - attribute EventHandler onblocked; - attribute EventHandler onupgradeneeded; + // Event handlers: + attribute EventHandler onblocked; + attribute EventHandler onupgradeneeded; }; [Exposed=(Window,Worker), Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict)] interface IDBVersionChangeEvent : Event { - readonly attribute unsigned long long oldVersion; - readonly attribute unsigned long long? newVersion; + readonly attribute unsigned long long oldVersion; + readonly attribute unsigned long long? newVersion; }; -[NoInterfaceObject] -interface IDBEnvironment { - readonly attribute IDBFactory indexedDB; +dictionary IDBVersionChangeEventInit : EventInit { + unsigned long long oldVersion = 0; + unsigned long long? newVersion = null; +}; + +partial interface WindowOrWorkerGlobalScope { + [SameObject] readonly attribute IDBFactory indexedDB; }; [Exposed=(Window,Worker)] interface IDBFactory { - IDBOpenDBRequest open (DOMString name, [EnforceRange] optional unsigned long long version); - IDBOpenDBRequest deleteDatabase (DOMString name); - short cmp (any first, any second); + IDBOpenDBRequest open(DOMString name, + [EnforceRange] optional unsigned long long version); + IDBOpenDBRequest deleteDatabase(DOMString name); + + short cmp(any first, any second); }; [Exposed=(Window,Worker)] interface IDBDatabase : EventTarget { - readonly attribute DOMString name; - readonly attribute unsigned long long version; - readonly attribute DOMStringList objectStoreNames; - IDBObjectStore createObjectStore (DOMString name, optional IDBObjectStoreParameters optionalParameters); - void deleteObjectStore (DOMString name); - IDBTransaction transaction ((DOMString or sequence) storeNames, optional IDBTransactionMode mode = "readonly"); - void close (); - attribute EventHandler onabort; - attribute EventHandler onclose; - attribute EventHandler onerror; - attribute EventHandler onversionchange; + readonly attribute DOMString name; + readonly attribute unsigned long long version; + readonly attribute DOMStringList objectStoreNames; + + IDBTransaction transaction((DOMString or sequence) storeNames, + optional IDBTransactionMode mode = "readonly"); + void close(); + + IDBObjectStore createObjectStore(DOMString name, + optional IDBObjectStoreParameters options); + void deleteObjectStore(DOMString name); + + // Event handlers: + attribute EventHandler onabort; + attribute EventHandler onclose; + attribute EventHandler onerror; + attribute EventHandler onversionchange; +}; + +dictionary IDBObjectStoreParameters { + (DOMString or sequence)? keyPath = null; + boolean autoIncrement = false; }; [Exposed=(Window,Worker)] interface IDBObjectStore { - attribute DOMString name; - readonly attribute any keyPath; - readonly attribute DOMStringList indexNames; - readonly attribute IDBTransaction transaction; - readonly attribute boolean autoIncrement; - IDBRequest put (any value, optional any key); - IDBRequest add (any value, optional any key); - IDBRequest delete (any key); - IDBRequest get (any key); - IDBRequest clear (); - IDBRequest openCursor (optional any range, optional IDBCursorDirection direction = "next"); - IDBIndex createIndex (DOMString name, (DOMString or sequence) keyPath, optional IDBIndexParameters optionalParameters); - IDBIndex index (DOMString name); - void deleteIndex (DOMString indexName); - IDBRequest count (optional any key); + attribute DOMString name; + readonly attribute any keyPath; + readonly attribute DOMStringList indexNames; + readonly attribute IDBTransaction transaction; + readonly attribute boolean autoIncrement; + + IDBRequest put(any value, optional any key); + IDBRequest add(any value, optional any key); + IDBRequest delete(any query); + IDBRequest clear(); + IDBRequest get(any query); + IDBRequest getKey(any query); + IDBRequest getAll(optional any query, + [EnforceRange] optional unsigned long count); + IDBRequest getAllKeys(optional any query, + [EnforceRange] optional unsigned long count); + IDBRequest count(optional any query); + + IDBRequest openCursor(optional any query, + optional IDBCursorDirection direction = "next"); + IDBRequest openKeyCursor(optional any query, + optional IDBCursorDirection direction = "next"); + + IDBIndex index(DOMString name); + + IDBIndex createIndex(DOMString name, + (DOMString or sequence) keyPath, + optional IDBIndexParameters options); + void deleteIndex(DOMString indexName); +}; + +dictionary IDBIndexParameters { + boolean unique = false; + boolean multiEntry = false; }; [Exposed=(Window,Worker)] interface IDBIndex { - attribute DOMString name; - readonly attribute IDBObjectStore objectStore; - readonly attribute any keyPath; - readonly attribute boolean multiEntry; - readonly attribute boolean unique; - IDBRequest openCursor (optional any range, optional IDBCursorDirection direction = "next"); - IDBRequest openKeyCursor (optional any range, optional IDBCursorDirection direction = "next"); - IDBRequest get (any key); - IDBRequest getKey (any key); - IDBRequest count (optional any key); + attribute DOMString name; + readonly attribute IDBObjectStore objectStore; + readonly attribute any keyPath; + readonly attribute boolean multiEntry; + readonly attribute boolean unique; + + IDBRequest get(any query); + IDBRequest getKey(any query); + IDBRequest getAll(optional any query, + [EnforceRange] optional unsigned long count); + IDBRequest getAllKeys(optional any query, + [EnforceRange] optional unsigned long count); + IDBRequest count(optional any query); + + IDBRequest openCursor(optional any query, + optional IDBCursorDirection direction = "next"); + IDBRequest openKeyCursor(optional any query, + optional IDBCursorDirection direction = "next"); +}; + +[Exposed=(Window,Worker)] +interface IDBKeyRange { + readonly attribute any lower; + readonly attribute any upper; + readonly attribute boolean lowerOpen; + readonly attribute boolean upperOpen; + + // Static construction methods: + static IDBKeyRange only(any value); + static IDBKeyRange lowerBound(any lower, optional boolean open = false); + static IDBKeyRange upperBound(any upper, optional boolean open = false); + static IDBKeyRange bound(any lower, + any upper, + optional boolean lowerOpen = false, + optional boolean upperOpen = false); + + boolean includes(any key); }; [Exposed=(Window,Worker)] interface IDBCursor { - readonly attribute (IDBObjectStore or IDBIndex) source; - readonly attribute IDBCursorDirection direction; - readonly attribute any key; - readonly attribute any primaryKey; - IDBRequest update (any value); - void advance ([EnforceRange] unsigned long count); - void continue (optional any key); - IDBRequest delete (); + readonly attribute (IDBObjectStore or IDBIndex) source; + readonly attribute IDBCursorDirection direction; + readonly attribute any key; + readonly attribute any primaryKey; + + void advance([EnforceRange] unsigned long count); + void continue(optional any key); + void continuePrimaryKey(any key, any primaryKey); + + IDBRequest update(any value); + IDBRequest delete(); +}; + +enum IDBCursorDirection { + "next", + "nextunique", + "prev", + "prevunique" }; [Exposed=(Window,Worker)] interface IDBCursorWithValue : IDBCursor { - readonly attribute any value; + readonly attribute any value; }; [Exposed=(Window,Worker)] interface IDBTransaction : EventTarget { - readonly attribute IDBTransactionMode mode; - readonly attribute IDBDatabase db; - readonly attribute DOMError error; - IDBObjectStore objectStore (DOMString name); - void abort (); - attribute EventHandler onabort; - attribute EventHandler oncomplete; - attribute EventHandler onerror; + readonly attribute DOMStringList objectStoreNames; + readonly attribute IDBTransactionMode mode; + readonly attribute IDBDatabase db; + readonly attribute DOMException error; + + IDBObjectStore objectStore(DOMString name); + void abort(); + + // Event handlers: + attribute EventHandler onabort; + attribute EventHandler oncomplete; + attribute EventHandler onerror; +}; + +enum IDBTransactionMode { + "readonly", + "readwrite", + "versionchange" +}; + +interface DOMStringList { + readonly attribute unsigned long length; + getter DOMString (unsigned long index); + DOMString? item(unsigned long index); + + boolean contains(DOMString str); }; diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js b/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js index 87e33805087..42da53ba462 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js +++ b/tests/wpt/web-platform-tests/IndexedDB/interfaces.worker.js @@ -3,35 +3,48 @@ importScripts("/resources/testharness.js"); importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); -var request = new XMLHttpRequest(); -request.open("GET", "interfaces.idl"); -request.send(); -request.onload = function() { - var idlArray = new IdlArray(); - var idls = request.responseText; +async_test(function(t) { + var request = new XMLHttpRequest(); + request.open("GET", "interfaces.idl"); + request.send(); + request.onload = t.step_func(function() { + var idlArray = new IdlArray(); + var idls = request.responseText; - idlArray.add_untested_idls("[Exposed=Worker] interface WorkerGlobalScope {};"); - idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface Event { };"); - idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface EventTarget { };"); + // https://html.spec.whatwg.org/multipage/workers.html#workerglobalscope + idlArray.add_untested_idls("[Exposed=Worker] interface WorkerGlobalScope {};"); - // From Indexed DB: - idlArray.add_idls("WorkerGlobalScope implements IDBEnvironment;"); - idlArray.add_idls(idls); + // https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope-mixin + idlArray.add_untested_idls(`[NoInterfaceObject, Exposed=(Window,Worker)] + interface WindowOrWorkerGlobalScope {};`); + idlArray.add_untested_idls("WorkerGlobalScope implements WindowOrWorkerGlobalScope;"); - idlArray.add_objects({ - IDBCursor: [], - IDBCursorWithValue: [], - IDBDatabase: [], - IDBEnvironment: [], - IDBFactory: ["self.indexedDB"], - IDBIndex: [], - IDBKeyRange: ["IDBKeyRange.only(0)"], - IDBObjectStore: [], - IDBOpenDBRequest: [], - IDBRequest: [], - IDBTransaction: [], - IDBVersionChangeEvent: ["new IDBVersionChangeEvent('foo')"], + // https://dom.spec.whatwg.org/#interface-event + idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface Event { };"); + + // https://dom.spec.whatwg.org/#interface-eventtarget + idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface EventTarget { };"); + + // From Indexed DB: + idlArray.add_idls(idls); + + idlArray.add_objects({ + IDBCursor: [], + IDBCursorWithValue: [], + IDBDatabase: [], + IDBFactory: ["self.indexedDB"], + IDBIndex: [], + IDBKeyRange: ["IDBKeyRange.only(0)"], + IDBObjectStore: [], + IDBOpenDBRequest: [], + IDBRequest: [], + IDBTransaction: [], + IDBVersionChangeEvent: ["new IDBVersionChangeEvent('foo')"], + DOMStringList: [], + }); + idlArray.test(); + t.done(); }); - idlArray.test(); - done(); -}; +}); + +done(); diff --git a/tests/wpt/web-platform-tests/IndexedDB/name-scopes.html b/tests/wpt/web-platform-tests/IndexedDB/name-scopes.html new file mode 100644 index 00000000000..d001a48cb45 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/name-scopes.html @@ -0,0 +1,134 @@ + + + + IndexedDB: scoping for database / object store / index names, and index keys + + + + + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/support-promises.js b/tests/wpt/web-platform-tests/IndexedDB/support-promises.js index c24a9fb92bd..cd23d94dd16 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/support-promises.js +++ b/tests/wpt/web-platform-tests/IndexedDB/support-promises.js @@ -1,13 +1,13 @@ // Returns an IndexedDB database name likely to be unique to the test case. const databaseName = (testCase) => { - return 'db' + self.location.pathname + '-' + testCase.name; + return 'db' + self.location.pathname + '-' + testCase.name; }; // Creates an EventWatcher covering all the events that can be issued by // IndexedDB requests and transactions. const requestWatcher = (testCase, request) => { - return new EventWatcher(testCase, request, - ['error', 'success', 'upgradeneeded']); + return new EventWatcher(testCase, request, + ['error', 'success', 'upgradeneeded']); }; // Migrates an IndexedDB database whose name is unique for the test case. @@ -21,43 +21,59 @@ const requestWatcher = (testCase, request) => { // resolves to an IndexedDB database that must be closed by the caller. If the // versionchange transaction is aborted, the promise resolves to an error. const migrateDatabase = (testCase, newVersion, migrationCallback) => { - // We cannot use eventWatcher.wait_for('upgradeneeded') here, because - // the versionchange transaction auto-commits before the Promise's then - // callback gets called. - return new Promise((resolve, reject) => { - const request = indexedDB.open(databaseName(testCase), newVersion); - request.onupgradeneeded = testCase.step_func(event => { - const database = event.target.result; - const transaction = event.target.transaction; - let abortCalled = false; + return migrateNamedDatabase( + testCase, databaseName(testCase), newVersion, migrationCallback); +}; - // We wrap IDBTransaction.abort so we can set up the correct event - // listeners and expectations if the test chooses to abort the - // versionchange transaction. - const transactionAbort = transaction.abort.bind(transaction); - transaction.abort = () => { - request.onerror = event => { - event.preventDefault(); - resolve(event); - }; - request.onsuccess = () => reject(new Error( - 'indexedDB.open should not succeed after the ' + - 'versionchange transaction is aborted')); - transactionAbort(); - abortCalled = true; - } +// Migrates an IndexedDB database. +// +// newVersion must be greater than the database's current version. +// +// migrationCallback will be called during a versionchange transaction and will +// be given the created database and the versionchange transaction. +// +// Returns a promise. If the versionchange transaction goes through, the promise +// resolves to an IndexedDB database that must be closed by the caller. If the +// versionchange transaction is aborted, the promise resolves to an error. +const migrateNamedDatabase = + (testCase, databaseName, newVersion, migrationCallback) => { + // We cannot use eventWatcher.wait_for('upgradeneeded') here, because + // the versionchange transaction auto-commits before the Promise's then + // callback gets called. + return new Promise((resolve, reject) => { + const request = indexedDB.open(databaseName, newVersion); + request.onupgradeneeded = testCase.step_func(event => { + const database = event.target.result; + const transaction = event.target.transaction; + let abortCalled = false; - migrationCallback(database, transaction); - if (!abortCalled) { - request.onsuccess = null; - resolve(requestWatcher(testCase, request).wait_for('success')); - } - }); - request.onerror = event => reject(event.target.error); + // We wrap IDBTransaction.abort so we can set up the correct event + // listeners and expectations if the test chooses to abort the + // versionchange transaction. + const transactionAbort = transaction.abort.bind(transaction); + transaction.abort = () => { + request.onerror = event => { + event.preventDefault(); + resolve(event); + }; request.onsuccess = () => reject(new Error( - 'indexedDB.open should not succeed without creating a ' + - 'versionchange transaction')); - }).then(event => event.target.result || event.target.error); + 'indexedDB.open should not succeed after the versionchange ' + + 'transaction is aborted')); + transactionAbort(); + abortCalled = true; + } + + migrationCallback(database, transaction); + if (!abortCalled) { + request.onsuccess = null; + resolve(requestWatcher(testCase, request).wait_for('success')); + } + }); + request.onerror = event => reject(event.target.error); + request.onsuccess = () => reject(new Error( + 'indexedDB.open should not succeed without creating a ' + + 'versionchange transaction')); + }).then(event => event.target.result || event.target.error); }; // Creates an IndexedDB database whose name is unique for the test case. @@ -68,11 +84,22 @@ const migrateDatabase = (testCase, newVersion, migrationCallback) => { // Returns a promise that resolves to an IndexedDB database. The caller must // close the database. const createDatabase = (testCase, setupCallback) => { - const request = indexedDB.deleteDatabase(databaseName(testCase)); - const eventWatcher = requestWatcher(testCase, request); + return createNamedDatabase(testCase, databaseName(testCase), setupCallback); +}; - return eventWatcher.wait_for('success').then(event => - migrateDatabase(testCase, 1, setupCallback)); +// Creates an IndexedDB database. +// +// setupCallback will be called during a versionchange transaction, and will be +// given the created database and the versionchange transaction. +// +// Returns a promise that resolves to an IndexedDB database. The caller must +// close the database. +const createNamedDatabase = (testCase, databaseName, setupCallback) => { + const request = indexedDB.deleteDatabase(databaseName); + const eventWatcher = requestWatcher(testCase, request); + + return eventWatcher.wait_for('success').then(event => + migrateNamedDatabase(testCase, databaseName, 1, setupCallback)); }; // Opens an IndexedDB database without performing schema changes. @@ -82,30 +109,39 @@ const createDatabase = (testCase, setupCallback) => { // Returns a promise that resolves to an IndexedDB database. The caller must // close the database. const openDatabase = (testCase, version) => { - const request = indexedDB.open(databaseName(testCase), version); - const eventWatcher = requestWatcher(testCase, request); - return eventWatcher.wait_for('success').then( - event => event.target.result); + return openNamedDatabase(testCase, databaseName(testCase), version); +} + +// Opens an IndexedDB database without performing schema changes. +// +// The given version number must match the database's current version. +// +// Returns a promise that resolves to an IndexedDB database. The caller must +// close the database. +const openNamedDatabase = (testCase, databaseName, version) => { + const request = indexedDB.open(databaseName, version); + const eventWatcher = requestWatcher(testCase, request); + return eventWatcher.wait_for('success').then(event => event.target.result); } // The data in the 'books' object store records in the first example of the // IndexedDB specification. const BOOKS_RECORD_DATA = [ - { title: 'Quarry Memories', author: 'Fred', isbn: 123456 }, - { title: 'Water Buffaloes', author: 'Fred', isbn: 234567 }, - { title: 'Bedrock Nights', author: 'Barney', isbn: 345678 }, + { title: 'Quarry Memories', author: 'Fred', isbn: 123456 }, + { title: 'Water Buffaloes', author: 'Fred', isbn: 234567 }, + { title: 'Bedrock Nights', author: 'Barney', isbn: 345678 }, ]; // Creates a 'books' object store whose contents closely resembles the first // example in the IndexedDB specification. const createBooksStore = (testCase, database) => { - const store = database.createObjectStore('books', - { keyPath: 'isbn', autoIncrement: true }); - store.createIndex('by_author', 'author'); - store.createIndex('by_title', 'title', { unique: true }); - for (let record of BOOKS_RECORD_DATA) - store.put(record); - return store; + const store = database.createObjectStore('books', + { keyPath: 'isbn', autoIncrement: true }); + store.createIndex('by_author', 'author'); + store.createIndex('by_title', 'title', { unique: true }); + for (let record of BOOKS_RECORD_DATA) + store.put(record); + return store; }; // Creates a 'not_books' object store used to test renaming into existing or @@ -124,14 +160,14 @@ const createNotBooksStore = (testCase, database) => { // IndexedDB implementation being tested is incorrect, or that the testing code // is using it incorrectly. const checkStoreIndexes = (testCase, store, errorMessage) => { - assert_array_equals( - store.indexNames, ['by_author', 'by_title'], errorMessage); - const authorIndex = store.index('by_author'); - const titleIndex = store.index('by_title'); - return Promise.all([ - checkAuthorIndexContents(testCase, authorIndex, errorMessage), - checkTitleIndexContents(testCase, titleIndex, errorMessage), - ]); + assert_array_equals( + store.indexNames, ['by_author', 'by_title'], errorMessage); + const authorIndex = store.index('by_author'); + const titleIndex = store.index('by_title'); + return Promise.all([ + checkAuthorIndexContents(testCase, authorIndex, errorMessage), + checkTitleIndexContents(testCase, titleIndex, errorMessage), + ]); }; // Verifies that an object store's key generator is in the same state as the @@ -141,13 +177,13 @@ const checkStoreIndexes = (testCase, store, errorMessage) => { // IndexedDB implementation being tested is incorrect, or that the testing code // is using it incorrectly. const checkStoreGenerator = (testCase, store, expectedKey, errorMessage) => { - const request = store.put( - { title: 'Bedrock Nights ' + expectedKey, author: 'Barney' }); - const eventWatcher = requestWatcher(testCase, request); - return eventWatcher.wait_for('success').then(() => { - const result = request.result; - assert_equals(result, expectedKey, errorMessage); - }); + const request = store.put( + { title: 'Bedrock Nights ' + expectedKey, author: 'Barney' }); + const eventWatcher = requestWatcher(testCase, request); + return eventWatcher.wait_for('success').then(() => { + const result = request.result; + assert_equals(result, expectedKey, errorMessage); + }); }; // Verifies that an object store's contents matches the contents used to create @@ -157,14 +193,14 @@ const checkStoreGenerator = (testCase, store, expectedKey, errorMessage) => { // IndexedDB implementation being tested is incorrect, or that the testing code // is using it incorrectly. const checkStoreContents = (testCase, store, errorMessage) => { - const request = store.get(123456); - const eventWatcher = requestWatcher(testCase, request); - return eventWatcher.wait_for('success').then(() => { - const result = request.result; - assert_equals(result.isbn, BOOKS_RECORD_DATA[0].isbn, errorMessage); - assert_equals(result.author, BOOKS_RECORD_DATA[0].author, errorMessage); - assert_equals(result.title, BOOKS_RECORD_DATA[0].title, errorMessage); - }); + const request = store.get(123456); + const eventWatcher = requestWatcher(testCase, request); + return eventWatcher.wait_for('success').then(() => { + const result = request.result; + assert_equals(result.isbn, BOOKS_RECORD_DATA[0].isbn, errorMessage); + assert_equals(result.author, BOOKS_RECORD_DATA[0].author, errorMessage); + assert_equals(result.title, BOOKS_RECORD_DATA[0].title, errorMessage); + }); }; // Verifies that index matches the 'by_author' index used to create the @@ -174,13 +210,13 @@ const checkStoreContents = (testCase, store, errorMessage) => { // IndexedDB implementation being tested is incorrect, or that the testing code // is using it incorrectly. const checkAuthorIndexContents = (testCase, index, errorMessage) => { - const request = index.get(BOOKS_RECORD_DATA[2].author); - const eventWatcher = requestWatcher(testCase, request); - return eventWatcher.wait_for('success').then(() => { - const result = request.result; - assert_equals(result.isbn, BOOKS_RECORD_DATA[2].isbn, errorMessage); - assert_equals(result.title, BOOKS_RECORD_DATA[2].title, errorMessage); - }); + const request = index.get(BOOKS_RECORD_DATA[2].author); + const eventWatcher = requestWatcher(testCase, request); + return eventWatcher.wait_for('success').then(() => { + const result = request.result; + assert_equals(result.isbn, BOOKS_RECORD_DATA[2].isbn, errorMessage); + assert_equals(result.title, BOOKS_RECORD_DATA[2].title, errorMessage); + }); }; // Verifies that an index matches the 'by_title' index used to create the books @@ -190,11 +226,11 @@ const checkAuthorIndexContents = (testCase, index, errorMessage) => { // IndexedDB implementation being tested is incorrect, or that the testing code // is using it incorrectly. const checkTitleIndexContents = (testCase, index, errorMessage) => { - const request = index.get(BOOKS_RECORD_DATA[2].title); - const eventWatcher = requestWatcher(testCase, request); - return eventWatcher.wait_for('success').then(() => { - const result = request.result; - assert_equals(result.isbn, BOOKS_RECORD_DATA[2].isbn, errorMessage); - assert_equals(result.author, BOOKS_RECORD_DATA[2].author, errorMessage); - }); + const request = index.get(BOOKS_RECORD_DATA[2].title); + const eventWatcher = requestWatcher(testCase, request); + return eventWatcher.wait_for('success').then(() => { + const result = request.result; + assert_equals(result.isbn, BOOKS_RECORD_DATA[2].isbn, errorMessage); + assert_equals(result.author, BOOKS_RECORD_DATA[2].author, errorMessage); + }); }; diff --git a/tests/wpt/web-platform-tests/LICENSE.md b/tests/wpt/web-platform-tests/LICENSE.md new file mode 100644 index 00000000000..eeae5050130 --- /dev/null +++ b/tests/wpt/web-platform-tests/LICENSE.md @@ -0,0 +1,33 @@ +#Dual-License for W3C Test Suites + +All documents in this Repository are licensed by contributors to be distributed under both the [W3C Test Suite License](#w3c-test-suite-license) and the [W3C 3-clause BSD License](#w3c-3-clause-bsd-license), reproduced below. The choice of license is up to the licensee. For more information, see [Licenses for W3C Test Suites](https://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html) + +# W3C Test Suite License + +This document, Test Suites and other documents that link to this statement are provided by the copyright holders under the following license: By using and/or copying this document, or the W3C document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions: + +Permission to copy, and distribute the contents of this document, or the W3C document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use: + +* A link or URL to the original W3C document. +* The pre-existing copyright notice of the original author, or if it doesn't exist, a notice (hypertext is preferred, but a textual representation is permitted) of the form: "Copyright © [$date-of-document] World Wide Web Consortium, (MIT, ERCIM, Keio, Beihang) and others. All Rights Reserved. http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html" +* If it exists, the STATUS of the W3C document. + +When space permits, inclusion of the full text of this NOTICE should be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof. + +No right to create modifications or derivatives of W3C documents is granted pursuant to this license. However, if additional requirements (documented in the Copyright FAQ) are satisfied, the right to create modifications or derivatives is sometimes granted by the W3C to individuals complying with those requirements. + +If a Test Suite distinguishes the test harness (or, framework for navigation) and the actual tests, permission is given to remove or alter the harness or navigation if the Test Suite in question allows to do so. The tests themselves shall NOT be changed in any way. + +The name and trademarks of W3C and other copyright holders may NOT be used in advertising or publicity pertaining to this document or other documents that link to this statement without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders. Permission is given to use the trademarked string "W3C" within claims of performance concerning W3C Specifications or features described therein, and there only, if the test suite so authorizes. + +THIS WORK IS PROVIDED BY W3C, MIT, ERCIM, KEIO, BEIHANG, THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL W3C, MIT, ERCIM, KEIO, BEIHANG, THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# W3C 3-clause BSD License + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of works must retain the original copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the original copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the W3C nor the names of its contributors may be used to endorse or promote products derived from this work without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md index 052f255aba2..690e4e3ea1d 100644 --- a/tests/wpt/web-platform-tests/README.md +++ b/tests/wpt/web-platform-tests/README.md @@ -18,9 +18,12 @@ Running the Tests ================= The tests are designed to be run from your local computer. The test -environment requires Python 2.7+ (but not Python 3.x). You will also -need a copy of OpenSSL. Users on Windows should read the -[Windows Notes](#windows-notes) section below. +environment requires [Python 2.7+](http://www.python.org/downloads) (but not Python 3.x). +You will also need a copy of OpenSSL. + +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 @@ -80,18 +83,29 @@ Running wptserve with SSL enabled on Windows typically requires installing an OpenSSL distribution. [Shining Light](https://slproweb.com/products/Win32OpenSSL.html) provide a convenient installer that is known to work, but requires a -little extra setup. +little extra setup, i.e.: -After installation ensure that the path to OpenSSL is on your `%Path%` -environment variable. +Run the installer for Win32_OpenSSL_v1.1.0b (30MB). During installation, +change the default location for where to Copy OpenSSL Dlls from the +System directory to the /bin directory. -Then set the path to the default OpenSSL configuration file (usually -something like `C:\OpenSSL-Win32\bin\openssl.cfg` in the server -configuration. To do this copy `config.default.json` in the -web-platform-tests root to `config.json`. Then edit the JSON so that -the key `ssl/openssl/base_conf_path` has a value that is the path to -the OpenSSL config file. +After installation, ensure that the path to OpenSSL (typically, +this will be `C:\OpenSSL-Win32\bin`) is in your `%Path%` +[Environment Variable](http://www.computerhope.com/issues/ch000549.htm). +If you forget to do this part, you will most likely see a 'File Not Found' +error when you start wptserve. +Finally, set the path value in the server configuration file to the +default OpenSSL configuration file location. To do this, +copy `config.default.json` in the web-platform-tests root to `config.json`. +Then edit the JSON so that the key `ssl/openssl/base_conf_path` has a +value that is the path to the OpenSSL config file (typically this +will be `C:\\OpenSSL-Win32\\bin\\openssl.cfg`). + +Alternatively, you may also use +[Bash on Ubuntu on Windows](https://msdn.microsoft.com/en-us/commandline/wsl/about) +in the Windows 10 Anniversary Update build, then access your windows +partition from there to launch wptserve. Test Runner =========== @@ -228,6 +242,15 @@ because we have to go through all the tests and ensure that they match the specification correctly. But we look at all of them, and take everything that we can. +OWNERS files are used only to indicate who should be notified of pull +requests. If you are interested in receiving notifications of proposed +changes to tests in a given directory, feel free to add yourself to the +OWNERS file. Anyone with expertise in the specification under test can +approve a pull request. In particular, if a test change has already +been adequately reviewed "upstream" in another repository, it can be +pushed here without any further review by supplying a link to the +upstream review. + Getting Involved ================ diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js index 12bd696a782..d584c25f81e 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js @@ -5,16 +5,19 @@ function run_test() { var wrappers = []; // Things we wrap (and upwrap) keys with var keys = []; // Things to wrap and unwrap + var ecdhPeerKey; // ECDH peer public key needed for non-extractable ECDH key comparison // Generate all the keys needed, then iterate over all combinations // to test wrapping and unwrapping. - Promise.all([generateWrappingKeys(), generateKeysToWrap()]) + Promise.all([generateWrappingKeys(), generateKeysToWrap(), generateEcdhPeerKey()]) .then(function(results) { + var promises = []; wrappers.forEach(function(wrapper) { keys.forEach(function(key) { - testWrapping(wrapper, key); + promises.push(testWrapping(wrapper, key)); }) }); + return Promise.all(promises); }, function(err) { promise_test(function(test) { assert_unreached("A key failed to generate: " + err.name + ": " + err.message) @@ -22,7 +25,7 @@ function run_test() { }) .then(function() { done(); - }, function(error) { + }, function(err) { promise_test(function(test) { assert_unreached("A test failed to run: " + err.name + ": " + err.message) }, "Could not run all tests") @@ -114,6 +117,12 @@ function run_test() { })); } + function generateEcdhPeerKey() { + return subtle.generateKey({name: "ECDH", namedCurve: "P-256"},true,["deriveBits"]) + .then(function(result){ + ecdhPeerKey = result.publicKey; + }); + } // Can we successfully "round-trip" (wrap, then unwrap, a key)? function testWrapping(wrapper, toWrap) { @@ -127,37 +136,98 @@ function run_test() { formats = ["raw", "jwk"] } - formats.forEach(function(fmt) { + return Promise.all(formats.map(function(fmt) { var originalExport; + return subtle.exportKey(fmt, toWrap.key).then(function(exportedKey) { + originalExport = exportedKey; + if (wrappingIsPossible(originalExport, wrapper.parameters.name)) { + promise_test(function(test) { + return subtle.wrapKey(fmt, toWrap.key, wrapper.wrappingKey, wrapper.parameters.wrapParameters) + .then(function(wrappedResult) { + return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages); + }).then(function(unwrappedResult) { + assert_true(unwrappedResult.extractable, "Unwrapped result is extractable"); + return subtle.exportKey(fmt, unwrappedResult) + }).then(function(roundTripExport) { + assert_true(equalExport(originalExport, roundTripExport), "Post-wrap export matches original export"); + }, function(err) { + assert_unreached("Round trip for extractable key threw an error - " + err.name + ': "' + err.message + '"'); + }); + }, "Can wrap and unwrap " + toWrap.name + " keys using " + fmt + " and " + wrapper.parameters.name); - promise_test(function(test) { - return subtle.exportKey(fmt, toWrap.key) - .then(function(exportedKey) { - originalExport = exportedKey; - return exportedKey; - }).then(function(exportedKey) { - return subtle.wrapKey(fmt, toWrap.key, wrapper.wrappingKey, wrapper.parameters.wrapParameters); - }).then(function(wrappedResult) { - return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages) - }).then(function(unwrappedResult) { - return subtle.exportKey(fmt, unwrappedResult) - }).then(function(roundTripExport) { - if ("byteLength" in originalExport) { - assert_true(equalBuffers(originalExport, roundTripExport), "Post-wrap export matches original export"); - } else { - assert_true(equalJwk(originalExport, roundTripExport), "Post-wrap export matches original export."); - } - }, function(err) { - if (wrappingIsPossible(originalExport, wrapper.parameters.name)) { - assert_unreached("Round trip threw an error - " + err.name + ': "' + err.message + '"'); - } else { - assert_true(true, "Skipped test due to key length restrictions"); - } - }) - }, "Can wrap and unwrap " + toWrap.name + " keys using " + fmt + " and " + wrapper.parameters.name); + if (canCompareNonExtractableKeys(toWrap.key)) { + promise_test(function(test){ + return subtle.wrapKey(fmt, toWrap.key, wrapper.wrappingKey, wrapper.parameters.wrapParameters) + .then(function(wrappedResult) { + return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages); + }).then(function(unwrappedResult){ + assert_false(unwrappedResult.extractable, "Unwrapped result is non-extractable"); + return equalKeys(toWrap.key, unwrappedResult); + }).then(function(result){ + assert_true(result, "Unwrapped key matches original"); + }).catch(function(err){ + assert_unreached("Round trip for key unwrapped non-extractable threw an error - " + err.name + ': "' + err.message + '"'); + }); + }, "Can wrap and unwrap " + toWrap.name + " keys as non-extractable using " + fmt + " and " + wrapper.parameters.name); + if (fmt === "jwk") { + promise_test(function(test){ + var wrappedKey; + return wrapAsNonExtractableJwk(toWrap.key,wrapper).then(function(wrappedResult){ + wrappedKey = wrappedResult; + return subtle.unwrapKey("jwk", wrappedKey, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, false, toWrap.usages); + }).then(function(unwrappedResult){ + assert_false(unwrappedResult.extractable, "Unwrapped key is non-extractable"); + return equalKeys(toWrap.key,unwrappedResult); + }).then(function(result){ + assert_true(result, "Unwrapped key matches original"); + }).catch(function(err){ + assert_unreached("Round trip for non-extractable key threw an error - " + err.name + ': "' + err.message + '"'); + }).then(function(){ + return subtle.unwrapKey("jwk", wrappedKey, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages); + }).then(function(unwrappedResult){ + assert_unreached("Unwrapping a non-extractable JWK as extractable should fail"); + }).catch(function(err){ + assert_equals(err.name, "DataError", "Unwrapping a non-extractable JWK as extractable fails with DataError"); + }); + }, "Can unwrap " + toWrap.name + " non-extractable keys using jwk and " + wrapper.parameters.name); + } + } + } + }); + })); + } + + // Implement key wrapping by hand to wrap a key as non-extractable JWK + function wrapAsNonExtractableJwk(key, wrapper){ + var wrappingKey = wrapper.wrappingKey, + encryptKey; + + return subtle.exportKey("jwk",wrappingKey) + .then(function(jwkWrappingKey){ + // Update the key generation parameters to work as key import parameters + var params = Object.create(wrapper.parameters.generateParameters); + if(params.name === "AES-KW") { + params.name = "AES-CBC"; + jwkWrappingKey.alg = "A"+params.length+"CBC"; + } else if (params.name === "RSA-OAEP") { + params.modulusLength = undefined; + params.publicExponent = undefined; + } + jwkWrappingKey.key_ops = ["encrypt"]; + return subtle.importKey("jwk", jwkWrappingKey, params, true, ["encrypt"]); + }).then(function(importedWrappingKey){ + encryptKey = importedWrappingKey; + return subtle.exportKey("jwk",key); + }).then(function(exportedKey){ + exportedKey.ext = false; + var jwk = JSON.stringify(exportedKey) + if (wrappingKey.algorithm.name === "AES-KW") { + return aeskw(encryptKey, str2ab(jwk.slice(0,-1) + " ".repeat(jwk.length%8 ? 8-jwk.length%8 : 0) + "}")); + } else { + return subtle.encrypt(wrapper.parameters.wrapParameters,encryptKey,str2ab(jwk)); + } }); - } @@ -189,6 +259,15 @@ function run_test() { // Helper methods follow: + // Are two exported keys equal + function equalExport(originalExport, roundTripExport) { + if ("byteLength" in originalExport) { + return equalBuffers(originalExport, roundTripExport); + } else { + return equalJwk(originalExport, roundTripExport); + } + } + // Are two array buffers the same? function equalBuffers(a, b) { if (a.byteLength !== b.byteLength) { @@ -262,5 +341,176 @@ function run_test() { return "{" + keyValuePairs.join(", ") + "}"; } + // Can we compare key values by using them + function canCompareNonExtractableKeys(key){ + if (key.usages.indexOf("decrypt") !== -1) { + return true; + } + if (key.usages.indexOf("sign") !== -1) { + return true; + } + if (key.usages.indexOf("wrapKey") !== -1) { + return true; + } + if (key.usages.indexOf("deriveBits") !== -1) { + return true; + } + return false; + } + + // Compare two keys by using them (works for non-extractable keys) + function equalKeys(expected, got){ + if ( expected.algorithm.name !== got.algorithm.name ) { + return Promise.resolve(false); + } + + var cryptParams, signParams, wrapParams, deriveParams; + switch(expected.algorithm.name){ + case "AES-CTR" : + cryptParams = {name: "AES-CTR", counter: new Uint8Array(16), length: 64}; + break; + case "AES-CBC" : + cryptParams = {name: "AES-CBC", iv: new Uint8Array(16) }; + break; + case "AES-GCM" : + cryptParams = {name: "AES-GCM", iv: new Uint8Array(16) }; + break; + case "RSA-OAEP" : + cryptParams = {name: "RSA-OAEP", label: new Uint8Array(8) }; + break; + case "RSASSA-PKCS1-v1_5" : + signParams = {name: "RSASSA-PKCS1-v1_5"}; + break; + case "RSA-PSS" : + signParams = {name: "RSA-PSS", saltLength: 32 }; + break; + case "ECDSA" : + signParams = {name: "ECDSA", hash: "SHA-256"}; + break; + case "HMAC" : + signParams = {name: "HMAC"}; + break; + case "AES-KW" : + wrapParams = {name: "AES-KW"}; + break; + case "ECDH" : + deriveParams = {name: "ECDH", public: ecdhPeerKey}; + break; + default: + throw new Error("Unsupported algorithm for key comparison"); + } + + if (cryptParams) { + return subtle.exportKey("jwk",expected) + .then(function(jwkExpectedKey){ + if (expected.algorithm.name === "RSA-OAEP") { + ["d","p","q","dp","dq","qi","oth"].forEach(function(field){ delete jwkExpectedKey[field]; }); + } + jwkExpectedKey.key_ops = ["encrypt"]; + return subtle.importKey("jwk", jwkExpectedKey, expected.algorithm, true, ["encrypt"]); + }).then(function(expectedEncryptKey){ + return subtle.encrypt(cryptParams, expectedEncryptKey, new Uint8Array(32)); + }).then(function(encryptedData){ + return subtle.decrypt(cryptParams, got, encryptedData); + }).then(function(decryptedData){ + var result = new Uint8Array(decryptedData); + return !result.some(x => x); + }); + } else if (signParams) { + var verifyKey; + return subtle.exportKey("jwk",expected) + .then(function(jwkExpectedKey){ + if (expected.algorithm.name === "RSA-PSS" || expected.algorithm.name === "RSASSA-PKCS1-v1_5") { + ["d","p","q","dp","dq","qi","oth"].forEach(function(field){ delete jwkExpectedKey[field]; }); + } + if (expected.algorithm.name === "ECDSA") { + delete jwkExpectedKey["d"]; + } + jwkExpectedKey.key_ops = ["verify"]; + return subtle.importKey("jwk", jwkExpectedKey, expected.algorithm, true, ["verify"]); + }).then(function(expectedVerifyKey){ + verifyKey = expectedVerifyKey; + return subtle.sign(signParams, got, new Uint8Array(32)); + }).then(function(signature){ + return subtle.verify(signParams, verifyKey, signature, new Uint8Array(32)); + }); + } else if (wrapParams) { + var aKeyToWrap, wrappedWithExpected; + return subtle.importKey("raw", new Uint8Array(16), "AES-CBC", true, ["encrypt"]) + .then(function(key){ + aKeyToWrap = key; + return subtle.wrapKey("raw", aKeyToWrap, expected, wrapParams); + }).then(function(wrapResult){ + wrappedWithExpected = Array.from((new Uint8Array(wrapResult)).values()); + return subtle.wrapKey("raw", aKeyToWrap, got, wrapParams); + }).then(function(wrapResult){ + var wrappedWithGot = Array.from((new Uint8Array(wrapResult)).values()); + return wrappedWithGot.every((x,i) => x === wrappedWithExpected[i]); + }); + } else { + var expectedDerivedBits; + return subtle.deriveBits(deriveParams, expected, 128) + .then(function(result){ + expectedDerivedBits = Array.from((new Uint8Array(result)).values()); + return subtle.deriveBits(deriveParams, got, 128); + }).then(function(result){ + var gotDerivedBits = Array.from((new Uint8Array(result)).values()); + return gotDerivedBits.every((x,i) => x === expectedDerivedBits[i]); + }); + } + } + + // Raw AES encryption + function aes( k, p ) { + return subtle.encrypt({name: "AES-CBC", iv: new Uint8Array(16) }, k, p).then(function(ciphertext){return ciphertext.slice(0,16);}); + } + + // AES Key Wrap + function aeskw(key, data) { + if (data.byteLength % 8 !== 0) { + throw new Error("AES Key Wrap data must be a multiple of 8 bytes in length"); + } + + var A = Uint8Array.from([0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0, 0, 0, 0, 0, 0, 0, 0]), + Av = new DataView(A.buffer), + R = [], + n = data.byteLength / 8; + + for(var i = 0; i + +Accelerometer Sensor IDL tests + + + + + + + +
    + +
    +interface Event {
    +};
    +
    +interface EventTarget {
    +};
    +
    +interface EventHandler {
    +};
    +
    +interface Error {
    +};
    +
    +dictionary EventInit {
    +};
    +
    + +
    +[SecureContext]
    +interface Sensor : EventTarget {
    +  readonly attribute SensorState state;
    +  readonly attribute SensorReading? reading;
    +  void start();
    +  void stop();
    +  attribute EventHandler onchange;
    +  attribute EventHandler onactivate;
    +  attribute EventHandler onerror;
    +};
    +
    +dictionary SensorOptions {
    +  double? frequency;
    +};
    +
    +enum SensorState {
    +  "idle",
    +  "activating",
    +  "activated",
    +  "errored"
    +};
    +
    +[SecureContext]
    +interface SensorReading {
    +  readonly attribute DOMHighResTimeStamp timeStamp;
    +};
    +
    +[SecureContext, Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
    +interface SensorErrorEvent : Event {
    +  readonly attribute Error error;
    +};
    +
    +dictionary SensorErrorEventInit : EventInit {
    +  required Error error;
    +};
    +
    +
    + +
    +[Constructor(optional AccelerometerOptions accelerometerOptions)]
    +interface Accelerometer : Sensor {
    +  readonly attribute AccelerometerReading? reading;
    +  readonly attribute boolean includesGravity;
    +};
    +
    +dictionary AccelerometerOptions :  SensorOptions  {
    +  boolean includeGravity = true;
    +};
    +
    +[Constructor(AccelerometerReadingInit AccelerometerReadingInit)]
    +interface AccelerometerReading : SensorReading {
    +    readonly attribute double x;
    +    readonly attribute double y;
    +    readonly attribute double z;
    +};
    +
    +dictionary AccelerometerReadingInit {
    +    double x = 0;
    +    double y = 0;
    +    double z = 0;
    +};
    +
    + + diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_browsing_context.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_browsing_context.https.html similarity index 55% rename from tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_browsing_context.html rename to tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_browsing_context.https.html index e0ada32babf..1b045bd9eea 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_browsing_context.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_browsing_context.https.html @@ -6,26 +6,28 @@
    - diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html new file mode 100644 index 00000000000..76662e07eb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html @@ -0,0 +1,23 @@ + + +AmbientLightSensor Test: insecure context + + + + +

    Precondition

    +
      +
    1. + Run test in an insecure context, e.g. http://example.com/. +
    2. +
    +
    + diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onchange-manual.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onchange.https.html similarity index 57% rename from tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onchange-manual.html rename to tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onchange.https.html index 01950f739a5..737bb755234 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onchange-manual.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onchange.https.html @@ -5,30 +5,20 @@ - -

    Description

    -

    - This test validates that the "onchange" event can be invoked when changing the ambient light illuminance of the device. -

    - -

    Precondition

    -
      -
    1. - Change the ambient light illuminance of the device. -
    2. -
    - +
    + +

    Precondition

    +
      +
    1. + Disable the Ambient Light Sensor or run test on a device without Amibent Light Sensor. +
    2. +
    +
    + diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onstatechange.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onstatechange.html deleted file mode 100644 index 99a706f20c5..00000000000 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_onstatechange.html +++ /dev/null @@ -1,39 +0,0 @@ - - -AmbientLightSensor Test: onstatechange - - - - -
    - diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_reading.https.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_reading.https.html new file mode 100644 index 00000000000..34eab24f9b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_reading.https.html @@ -0,0 +1,64 @@ + + +AmbientLightSensor Test: reading + + + + +
    + diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_start.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_start.https.html similarity index 56% rename from tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_start.html rename to tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_start.https.html index 2ac29be2168..e08a2490ff0 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_start.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_start.https.html @@ -7,25 +7,37 @@
    diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_stop.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_stop.https.html similarity index 68% rename from tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_stop.html rename to tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_stop.https.html index 34cd3600be1..8f504c5fe81 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_stop.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_stop.https.html @@ -8,22 +8,27 @@
    diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json index f6dd20ebe55..ce2dc22dd6f 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json @@ -18,5 +18,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test index 16def6b4474..c86eb35df7e 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test @@ -39,11 +39,7 @@ "annotations/bodiesTargets/3.2.4-bodyETB.json", "annotations/bodiesTargets/3.2.4-bodyETBTypeTextualBody.json", "annotations/bodiesTargets/3.2.4-bodyETBTypeText.json", - "annotations/bodiesTargets/3.2.7-bodyChoiceSet.json", "annotations/bodiesTargets/3.2.7-bodyChoice.json", - "annotations/bodiesTargets/3.2.8-bodyList.json", - "annotations/bodiesTargets/3.2.8-bodyComposite.json", - "annotations/bodiesTargets/3.2.8-bodyIndependents.json", "annotations/bodiesTargets/3.2.1-targSingleFormat.json", "annotations/bodiesTargets/3.2.1-targSingleLanguage.json", "annotations/bodiesTargets/3.3.1-targSingleCreator.json", @@ -61,11 +57,7 @@ "annotations/bodiesTargets/3.3.7-targCanonical.json", "annotations/bodiesTargets/3.3.7-targVia.json", "annotations/bodiesTargets/3.2.1-targEWR.json", - "annotations/bodiesTargets/3.2.7-targChoiceSet.json", "annotations/bodiesTargets/3.2.7-targChoice.json", - "annotations/bodiesTargets/3.2.8-targList.json", - "annotations/bodiesTargets/3.2.8-targComposite.json", - "annotations/bodiesTargets/3.2.8-targIndependents.json", "annotations/bodiesTargets/4-bodySpecificResource.json", "annotations/bodiesTargets/4-targSpecificResource.json", "annotations/specificResource/4.3.3-refinedBy.json", diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targEWR.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targEWR.json index 4571f0ec8f4..f605d5c1c0b 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targEWR.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targEWR.json @@ -21,5 +21,6 @@ { "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/itemEwrDetected" } } } } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targFormat.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targFormat.json index 134a8956ec0..2bc0a645787 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targFormat.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targFormat.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targLanguage.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targLanguage.json index b8f2a94b2ce..2f92b3eedc5 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targLanguage.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targLanguage.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targProcessingLanguage.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targProcessingLanguage.json index 1ddcf71a0d9..6c3f2966bfd 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targProcessingLanguage.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targProcessingLanguage.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleFormat.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleFormat.json index b58038206af..520dd512b70 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleFormat.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleFormat.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleLanguage.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleLanguage.json index 6bb9cf6cc1e..ac19b45ba52 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleLanguage.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targSingleLanguage.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targTextDirection.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targTextDirection.json index d9d0d0417cf..5da8a6273a6 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targTextDirection.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.1-targTextDirection.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.2-targType.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.2-targType.json index fa9e0a743d4..10ccd9d50dc 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.2-targType.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.2-targType.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-bodyChoiceSet.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-bodyChoiceSet.json deleted file mode 100644 index 5db068a192d..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-bodyChoiceSet.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.7-bodyChoiceSet.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Body may be a Choice or Set.", - "title": "Implements **Choice or Set** with type and items key as a body - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", - "description": "True when a Choice or Set is used as a body. (Section 3.2.7)", - "type": "object", - "required": ["body"], - "properties": - { - "body": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoice.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoice.json index 38c2f5db08b..5a49f2f9127 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoice.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoice.json @@ -24,5 +24,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoiceSet.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoiceSet.json deleted file mode 100644 index aa121337c11..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.7-targChoiceSet.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.7-targChoiceSet.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Target may be a Choice or Set.", - "title": "Implements **Choice or Set** with type and items key as a target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", - "description": "True when a Choice or Set is used as a target. (Section 3.2.7)", - "type": "object", - "properties": - { - "target": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyComposite.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyComposite.json deleted file mode 100644 index f0a6509d329..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyComposite.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.8-bodyComposite.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Composite resource may be used as an Annotation Body (not found).", - "title": "Implements **Composite** with **_type_ and _items_ keys** as a body of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-bodies-and-targets)", - "description": "True when Annotation includes one or more Composite resources as Annotation body(ies). (Section 3.2.8)", - "type": "object", - "required": ["body"], - "properties": - { - "body": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/compositeDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/compositeDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyIndependents.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyIndependents.json deleted file mode 100644 index c6a78db7d9f..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyIndependents.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.8-bodyIndependents.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Independents resource may be used as an Annotation Body (not found).", - "title": "Implements **Independents** with **_type_ and _items_ keys** as a body of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-bodies-and-targets)", - "description": "True when Annotation includes one or more Independents resources as Annotation body(ies). (Section 3.2.8)", - "type": "object", - "required": ["body"], - "properties": - { - "body": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/independentsDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/independentsDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyList.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyList.json deleted file mode 100644 index aa260b462e8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-bodyList.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.8-bodyList.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A List resource may be used as an Annotation Body (not found).", - "title": "Implements **List** with **_type_ and _items_ keys** as a body of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-bodies-and-targets)", - "description": "True when Annotation includes one or more List resources as Annotation body(ies). (Section 3.2.8)", - "type": "object", - "required": ["body"], - "properties": - { - "body": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/listDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/listDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targComposite.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targComposite.json deleted file mode 100644 index 031beec90d1..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targComposite.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.8-targComposite.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Composite resource may be used as an Annotation Target (not found).", - "title": "Implements **Composite** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", - "description": "True when Annotation includes one or more Composite resources as Annotation target(ies). (Section 3.2.8)", - "type": "object", - "properties": - { - "target": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/compositeDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/compositeDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targIndependents.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targIndependents.json deleted file mode 100644 index d9f50346fb5..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targIndependents.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.8-targIndependents.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Independents resource may be used as an Annotation Target (not found).", - "title": "Implements **Independents** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", - "description": "True when Annotation includes one or more Independents resources as Annotation target(ies). (Section 3.2.8)", - "type": "object", - "properties": - { - "target": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/independentsDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/independentsDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targList.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targList.json deleted file mode 100644 index 7ab726b6cf8..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.2.8-targList.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "3.2.8-targList.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A List resource may be used as an Annotation Target (not found).", - "title": "Implements **List** with **_type_ and _items_ keys** as a target of the Annotation [model 3.2.8](https://www.w3.org/TR/annotation-model/#sets-of-targets-and-targets)", - "description": "True when Annotation includes one or more List resources as Annotation target(ies). (Section 3.2.8)", - "type": "object", - "properties": - { - "target": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/listDetected" }, - { "not": - { - "items": - { "not": - { "$ref": "choiceSet.json#/definitions/listDetected" } - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreated.json index 0db8559c7c2..85a3da6e4cf 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreated.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreated.json @@ -34,5 +34,6 @@ ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreator.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreator.json index e1ee1b4764f..d4f2e44b23c 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreator.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targCreator.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targModified.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targModified.json index 4c3cf7b6896..7c8fb0cdb8a 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targModified.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targModified.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targSingleCreator.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targSingleCreator.json index 5eb662ba9ca..91b9aed2ee4 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targSingleCreator.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.1-targSingleCreator.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmailImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmailImplemented.json index 133da131d82..daccf45e02b 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmailImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmailImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmail_sha1Implemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmail_sha1Implemented.json index 1c34b43e0f4..103ef83bdae 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmail_sha1Implemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentEmail_sha1Implemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentHomepageImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentHomepageImplemented.json index bc79f1a5e36..da8ac7fd785 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentHomepageImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentHomepageImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentIdImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentIdImplemented.json index bed81643477..8728b848dd1 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentIdImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentIdImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNameImplemented.json index 15c91f92e6d..9cd9990d147 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNameImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNameImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNicknameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNicknameImplemented.json index 7c84087f4e9..17b69bff089 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNicknameImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentNicknameImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentSingleNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentSingleNameImplemented.json index 7f5428f5480..5604f4a4b99 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentSingleNameImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentSingleNameImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentTypeImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentTypeImplemented.json index b9f6c8bae49..f26238616ba 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentTypeImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.2-targCreatorAgentTypeImplemented.json @@ -32,5 +32,6 @@ } ] } - } + }, + "required": [ "target" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.3-targAudience.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.3-targAudience.json index df84e2b4203..5b2ba6fa97c 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.3-targAudience.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.3-targAudience.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.4-targAccessibility.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.4-targAccessibility.json index 4f04e3d1d3c..0f345a16f26 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.4-targAccessibility.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.4-targAccessibility.json @@ -34,5 +34,6 @@ ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.5-targPurpose.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.5-targPurpose.json index b3894864e27..68c861a5c75 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.5-targPurpose.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.5-targPurpose.json @@ -32,5 +32,6 @@ ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.6-targRights.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.6-targRights.json index 23906035568..31de4f809d5 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.6-targRights.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.6-targRights.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targCanonical.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targCanonical.json index f7fb58e254f..76bd003d4c2 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targCanonical.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targCanonical.json @@ -33,5 +33,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targVia.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targVia.json index c6625e73718..d175687aeac 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targVia.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/3.3.7-targVia.json @@ -23,5 +23,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-bodyChoiceSetFound.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-bodyChoiceSetFound.json deleted file mode 100644 index 3f6751b51ce..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-bodyChoiceSetFound.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "4-bodyChoiceSetFound.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Body may be a Choice or Set.", - "title": "If a **Choice or Set** is a body, it does NOT have a **_source_ key** - [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", - "description": "True when no Choice or Set bodies or when none of the Choice or Set bodies include the source key. (Section 4)", - "type": "object", - "properties": - { - "body": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" } , - { "type": "Array", - "minItems": 1, - "not": - { "items": { "not": { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" } } } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targChoiceSetFound.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targChoiceSetFound.json deleted file mode 100644 index 6b67481dcdd..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targChoiceSetFound.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "4-targChoiceSetFound.json", - "assertionType": "may", - "expectedResult": "valid", - "onUnexpectedResult" : "passAndContinue", - "errorMessage": "A Target may be a Choice or Set.", - "title": "Implements a **Choice or Set** as target - [model 3.2.7](https://www.w3.org/TR/annotation-model/#choice-of-bodies-and-targets)", - "description": "True when Choice or Set is a target. (Section 3.2.7)", - "type": "object", - "properties": - { - "target": - { - "oneOf": [ - { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" } , - { "type": "Array", - "minItems": 1, - "not": - { "items": { "not": { "$ref": "choiceSet.json#/definitions/choiceOrSetDetected" } } } - } - ] - } - } -} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targSpecificResource.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targSpecificResource.json index 2e7a9f30bc4..92e388af284 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targSpecificResource.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4-targSpecificResource.json @@ -29,5 +29,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.4-targStyleClass.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.4-targStyleClass.json index cde8fa4d3f6..88765ef8eb4 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.4-targStyleClass.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.4-targStyleClass.json @@ -31,5 +31,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.5-targRenderedVia.json b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.5-targRenderedVia.json index 0b9a4554133..e2b718ce4d1 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.5-targRenderedVia.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/bodiesTargets/4.5-targRenderedVia.json @@ -31,5 +31,6 @@ } ] } - } + }, + "required": [ "target" ] } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/3.2.2-targType.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/3.2.2-targType.json new file mode 100644 index 00000000000..0c85cef7f62 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/3.2.2-targType.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2.2-targType.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "The description of a Target may include type key with one or more values that are each drawn from the model's list of resource classes.", + "title": "Implements **target _type_ key** with one or more values each of which is drawn from the **model's list of resource classes** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)", + "description": "True when Annotation includes one or more Targets, one or more of which include type key with one or more values that are each drawn from the model's list of resource classes. (Section 3.2.1)", + "type": "object", + "required": [ "target" ], + "properties": + { + "target": + { + "oneOf": [ + { "anyOf": [ + { "$ref": "bodyTarget.json#/definitions/recognizedTypeFound" }, + { "$ref": "bodyTarget.json#/definitions/itemRecognizedTypeFound" }, + { "$ref": "bodyTarget.json#/definitions/sourceFormatPropertyFound" } + ] + }, + { "not": + { "items": + { "not": + { "anyOf": [ + { "$ref": "bodyTarget.json#/definitions/recognizedTypeFound" }, + { "$ref": "bodyTarget.json#/definitions/itemRecognizedTypeFound" }, + { "$ref": "bodyTarget.json#/definitions/sourceRecognizedTypeFound" } + ] + } + } + } + } + ] + } + } +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/3.3.3-targAudience.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/3.3.3-targAudience.json new file mode 100644 index 00000000000..9f71688a878 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/3.3.3-targAudience.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.3-targAudience.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "The description of a target may include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.", + "title": "Implements **target _audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "description": "True when Annotation includes one or more targets, one or more of which include audience key which has one or more values with each audience instance described using schema.org/Audience classes and properties.. (Section 3.3.3)", + "type": "object", + "required": [ "target" ], + "properties": + { + "target": + { + "oneOf": [ + { "anyOf": [ + { "$ref": "otherProperties.json#/definitions/audiencePropertyFound" }, + { "$ref": "otherProperties.json#/definitions/itemAudiencePropertyFound" }, + { "$ref": "otherProperties.json#/definitions/sourceAudiencePropertyFound" } + ] + }, + { "not": + { "items": + { "not": + { "anyOf": [ + { "$ref": "otherProperties.json#/definitions/audiencePropertyFound" }, + { "$ref": "otherProperties.json#/definitions/itemAudiencePropertyFound" }, + { "$ref": "otherProperties.json#/definitions/sourceAudiencePropertyFound" } + ] + } + } + } + } + ] + } + } +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2-selectorFound.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2-selectorFound.json index bddf35543d0..45390f35efd 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2-selectorFound.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2-selectorFound.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-conformsTo.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-conformsTo.json index a440b948653..12df91d311f 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-conformsTo.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-conformsTo.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-fragmentSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-fragmentSelector.json index df9f9968bc1..d21488ef51e 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-fragmentSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.1-fragmentSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.2-cssSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.2-cssSelector.json index aa422920908..ec335923043 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.2-cssSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.2-cssSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.3-xpathSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.3-xpathSelector.json index 53b8bb76a38..e5526be5c21 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.3-xpathSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.3-xpathSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-prefix.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-prefix.json index 31961d778c3..825a24a6d9e 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-prefix.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-prefix.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-suffix.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-suffix.json index 88a52b175c0..b03fb6028c3 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-suffix.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-suffix.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-textQuoteSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-textQuoteSelector.json index 65d2faeebb6..34ef0ed6c65 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-textQuoteSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.4-textQuoteSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.5-textPositionSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.5-textPositionSelector.json index b709b9298c0..03cdf2ee647 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.5-textPositionSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.5-textPositionSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.6-dataPositionSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.6-dataPositionSelector.json index 1735eb04582..42144206868 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.6-dataPositionSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.6-dataPositionSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.7-svgSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.7-svgSelector.json index 45b0e828bee..17834f54dbe 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.7-svgSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.7-svgSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.8-rangeSelector.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.8-rangeSelector.json index a55bf842e84..68c2feaf30b 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.8-rangeSelector.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.2.8-rangeSelector.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3-stateFound.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3-stateFound.json index 568e0fd2fea..fb1b1a09d03 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3-stateFound.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3-stateFound.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-cached.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-cached.json index 40f02af9bcb..449356a3df9 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-cached.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-cached.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-timeState.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-timeState.json index 49b2034549d..faa84764350 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-timeState.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.1-timeState.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.2-requestHeaderState.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.2-requestHeaderState.json index 66a6a5f9791..829043b126b 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.2-requestHeaderState.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.2-requestHeaderState.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.3-refinedBy.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.3-refinedBy.json index a9582597aa0..127e6841659 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.3-refinedBy.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.3.3-refinedBy.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClass.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClass.json index 079d002aabc..800950b270a 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClass.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClass.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClassValidIfPresent.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClassValidIfPresent.json index 5af382bd057..3e599a0590e 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClassValidIfPresent.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.4-styleClassValidIfPresent.json @@ -81,7 +81,8 @@ } ] } - } + }, + "required": [ "target" ] } } } diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.5-renderedVia.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.5-renderedVia.json index 008c7312045..2815d3ca7e0 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.5-renderedVia.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.5-renderedVia.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.6-scope.json b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.6-scope.json index fcc237bd3c7..f2002d597e9 100644 --- a/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.6-scope.json +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/specificResource/4.6-scope.json @@ -67,7 +67,8 @@ } ] } - } + }, + "required": [ "target" ] } ], "definitions": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/collectionOptionals.test b/tests/wpt/web-platform-tests/annotation-model/collections/collectionOptionals.test index 885b3f4020c..5a75eb6bc6a 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/collectionOptionals.test +++ b/tests/wpt/web-platform-tests/annotation-model/collections/collectionOptionals.test @@ -3,6 +3,7 @@ "name": "A single Annotation Collection implements optional keys and meets optional key value constraints", "description": "A Collection of Web Annotations:
    • Should include certain properties (keys)
    • May include additional keys
    • May have creator Agent key values that conform to model recommended constraints
    Note: failing an assertion indicates only that a recommended or optional feature has not been implemented or has not been implemented correctly.
    Please fill textarea with json-ld serialization of a single Annotation Collection description", "testType": "manual", + "skipFailures": [ "should", "may" ], "ref": "https://www.w3.org/TR/annotation-model/", "assertions": [ "collections/5.1-collectionLabelImplemented.json", diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json index e65ea8f29c1..3979744c91d 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Valid Annotation Page-level created key not found. Annotation Page may have exactly one created key value inherited from Collection.", - "title": "Implements Annotation Page-level **_created_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", - "description": "True when the Annotation Page implements exactly one created key value (Sections 3.3.1 and 5.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/createdImplemented" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Valid Annotation Page-level created key (i.e., in description of Collection included using partOf key) not found. Annotation Page may have exactly one created key value inherited from Collection.", + "title": "Implements Annotation Page-level **_created_ key** (i.e., in description of Collection included using partOf key) which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation Page implements exactly one created key value (i.e., in description of Collection included using partOf key) (Sections 3.3.1 and 5.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/createdImplemented" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "createdImplemented": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json index be4e9c32487..96218084ad1 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatedValidated.json @@ -5,20 +5,12 @@ "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", "errorMessage": "ERROR: Annotation page has multiple created key values or a single created key value that is not of format date-time.", - "title": "If present the Annotation page-level **_created_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", - "description": "True when no Annotation page created key present or when created key has a single value that is of format date-time (Section 3.3.1)", - "type": "object", - "oneOf": [ - { "allOf": [ - { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "properties": - {"first": + "title": "If present the Annotation page-level **_created_ key** (i.e., in description of Collection included using partOf key) has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation page created key present (i.e., in description of Collection included using partOf key) or when created key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "properties": + { + "partOf": { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" } - }, - "required": [ "first" ] - } - ] + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json index 8b6ded3a4ec..6ae95413e28 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageCreatorImplemented.json @@ -4,23 +4,15 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Valid Annotation Page-level creator key not found. Annotation Page may have zero or more creators inherited from Collection.", - "title": "Implements **Annotation Page-level _creator_ key** which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", - "description": "True when the Annotation Page implements creator key (Section 3.3.1)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorImplemented" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Valid Annotation Page-level creator key (i.e., in description of Collection included using partOf key) not found. Annotation Page may have zero or more creators inherited from Collection.", + "title": "Implements **Annotation Page-level _creator_ key** (i.e., in description of Collection included using partOf key) which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorImplemented" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorImplemented": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json index 5bccc821152..68d22370afb 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Valid Annotation Page-level modified key not found. Annotation Page may have zero or exactly one modified key value inherited from Collection.", - "title": "Implements Annotation Page-level **_modified_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", - "description": "True when the Annotation Page implements exactly one modified key value (Section 3.3.1, 5.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/modifiedImplemented" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Valid Annotation Page-level modified key (i.e., in description of Collection included using partOf key) not found. Annotation Page may have zero or exactly one modified key value inherited from Collection.", + "title": "Implements Annotation Page-level **_modified_ key** (i.e., in description of Collection included using partOf key) which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation Page implements exactly one modified key value (i.e., in description of Collection included using partOf key) (Section 3.3.1, 5.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/modifiedImplemented" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "modifiedImplemented": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json index d8591cd16a4..e7c1a558375 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.1-pageModifiedValidated.json @@ -5,20 +5,12 @@ "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", "errorMessage": "ERROR: Annotation page has multiple modified key values or a single modified key value that is not of format date-time.", - "title": "If present the Annotation page-level **_modified_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", - "description": "True when no Annotation page modified key present or when modified key has a single value that is of format date-time (Section 3.3.1)", - "type": "object", - "oneOf": [ - { "allOf": [ - { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "properties": - {"first": + "title": "If present the Annotation page-level **_modified_ key** (i.e., in description of Collection included using partOf key) has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation page modified key present (i.e., in description of Collection included using partOf key) or when modified key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "properties": + { + "partOf": { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" } - }, - "required": [ "first" ] - } - ] + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json index c30f81ac28f..541a32deb6a 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmailImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Email for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more email values.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when one or more email values for Annotation Page Creator (Agent), inherited from Collection, is implemented (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentEmailFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Email for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more email values.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorAgentEmailFound" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorAgentEmailFound": { "properties": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json index 41e6ec0f6a4..ba7d38eac1d 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentEmail_sha1Implemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Email_sha1 for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more email_sha1 values.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when one or more email_sha1 values for Annotation Page Creator (Agent), inherited from Collection, is implemented (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentEmail_sha1Found" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Email_sha1 for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more email_sha1 values.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email_sha1 values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorAgentEmail_sha1Found" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorAgentEmail_sha1Found": { "properties": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json index d325b17ba83..7b8c9d7e2a8 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentHomepageImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Homepage for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more homepage values.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when one or more homepage values for Annotation Page Creator (Agent), inherited from Collection, is implemented (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentHomePageFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Homepage for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more homepage values.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more homepage values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorAgentHomePageFound" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorAgentHomePageFound": { "properties": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json index 6d45c1df72b..2a280ead8d2 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentIdImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Single id for Annotation Page Creator (Agent), inherited from Collection, not found for any Creator. Agents should have exactly one id of format uri.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when at least one Annotation Page Creator (Agent), inherited from Collection, has exactly one id (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentIdFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Single id for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found for any Creator. Agents should have exactly one id of format uri.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when at least one Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) has exactly one id (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorAgentIdFound" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorAgentIdFound": { diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json index 077c3d51402..50f811021e1 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNameImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Name for Annotation Page Creator (Agent), inherited from Collection, not found. Agents may have one or more name values.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when one or more name values for Annotation Page Creator (Agent), inherited from Collection, is implemented (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentNameFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Name for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents may have one or more name values.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more name values for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorAgentNameFound" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorAgentNameFound": { "properties": diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json index 60398fed77c..7829deafcbb 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentNicknameImplemented.json @@ -4,23 +4,16 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Single nickname for Annotation Page Creator (Agent), inherited from Collection, not found for any Creator. Agents should have exactly one id of format uri.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **_nickname_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when at least one Annotation Page Creator (Agent), inherited from Collection, has exactly one nickname (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentNicknameFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Single nickname for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found for any Creator. Agents should have exactly one id of format uri.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_nickname_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when at least one Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) has exactly one nickname (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": { "$ref": "#/definitions/creatorAgentNicknameFound" } - }, - "required": [ "first" ] - } - ], + }, + "required": [ "partOf" ], "definitions": { "creatorAgentNicknameFound": { diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json index 8144fa24e5a..20b40d0104e 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.2-pageCreatorAgentTypeImplemented.json @@ -4,34 +4,27 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Type (Person, Organization, Software) for Annotation Page Creator (Agent), inherited from Collection, not found. Agents should have one or more type values.", - "title": "Implements Annotation Page-level creator (Agent), inherited from Collection, **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", - "description": "True when type for Annotation Page Creator (Agent), inherited from Collection, is implemented (Section 3.3.2)", - "oneOf": [ - { "allOf": [ - { "$ref": "#/definitions/creatorAgentNameFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": - { "$ref": "#/definitions/creatorAgentNameFound" } - }, - "required": [ "first" ] - } - ], + "errorMessage": "Type (Person, Organization, Software) for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) not found. Agents should have one or more type values.", + "title": "Implements Annotation Page-level creator (Agent) (i.e., in description of Collection included using partOf key) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Page Creator (Agent) (i.e., in description of Collection included using partOf key) is implemented (Section 3.3.2)", + "type": "object", + "properties": + { + "partOf": + { "$ref": "#/definitions/creatorAgentTypeFound" } + }, + "required": [ "partOf" ], "definitions": { - "creatorAgentNameFound": + "creatorAgentTypeFound": { "properties": { "creator": { "oneOf": [ - { "$ref": "otherProperties.json#/definitions/agentNameFound" }, + { "$ref": "otherProperties.json#/definitions/agentTypeFound" }, { "type": "array", "minItems": 1, "not": - { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } } + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } } } ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json index 56e4e910124..7a3fa5c460a 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsImplemented.json @@ -4,28 +4,21 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Annotation Page rights key (inherited from Collection) having string value(s) of format uri not found. Annotation Page may may have zero or more rights key values.", - "title": "Implements Annotation Page **_rights_** key (inherited from Collection) which has one or more values, each of which is a **string of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", - "description": "True when the Annotation Page implements rights key with with string(s) of format uri value(s) (Sections 5.1 and 3.3.6)", - "oneOf": [ - { "allOf": [ + "errorMessage": "Annotation Page rights key (i.e., in description of Collection included using partOf key) having string value(s) of format uri not found. Annotation Page may may have zero or more rights key values.", + "title": "Implements Annotation Page **_rights_** key (i.e., in description of Collection included using partOf key) which has one or more values, each of which is a **string of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "description": "True when the Annotation Page implements collection rights key (i.e., in description of Collection included using partOf key) with with string(s) of format uri value(s) (Sections 5.1 and 3.3.6)", + "type": "object", + "properties": + { + "partOf": + { "allOf": + [ { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, { "type": "object", - "required": [ "rights" ]}, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } + "required": [ "rights" ] } ] - }, - { "type": "object", - "properties": - {"first": - { "allOf": [ - { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, - { "type": "object", - "required": [ "rights" ]} - ] - } - }, - "required": [ "first" ] } - ] + }, + "required": [ "partOf" ] + } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json index 472c316dc6b..99f0e7c7a79 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/3.3.6-pageRightsValidated.json @@ -4,21 +4,13 @@ "assertionType": "must", "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", - "errorMessage": "ERROR: Annotation page page has one or more values for the rights key that are not strings of format uri.", - "title": "If present the Annotation page page-level **_rights_ key** has values that are all **strings of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", - "description": "True when no Annotation page page rights key present or when all values of rights key are strings of format uri (Section 3.3.6)", + "errorMessage": "ERROR: Annotation page page has one or more values for the rights key (i.e., in description of Collection included using partOf key) that are not strings of format uri.", + "title": "If present the Annotation page page-level **_rights_ key** (i.e., in description of Collection included using partOf key)has values that are all **strings of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "description": "True when no Annotation page collection rights key present or when all values of rights key are strings of format uri (Section 3.3.6)", "type": "object", - "oneOf": [ - { "allOf": [ - { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "properties": - {"first": + "properties": + { + "partOf": { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" } - }, - "required": [ "first" ] - } - ] + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json index 1c7dfb141e7..5e0934e14fa 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstImplemented.json @@ -4,22 +4,15 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Annotation Page has no first key (inherited from Collection).", - "title": "Implements **Annotation Page _first_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/firstFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Annotation Page has no first key (i.e., in description of Collection included using partOf key).", + "title": "Implements **Annotation Page _first_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "type": "object", + "properties": + { + "partOf": { "$ref": "collections.json#/definitions/firstFound" } - }, - "required": [ "first" ] - } - ] + }, + "required": [ "partOf" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstValidated.json index 2e260b1d36e..bffe4e889f0 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageFirstValidated.json @@ -4,20 +4,12 @@ "assertionType": "must", "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", - "errorMessage": "ERROR: Annotation Page has invalid first key.", - "title": "**Annotation Page _first_ key** (inherited from Collection), if present, has value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/firstValidIfPresent" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "ERROR: Annotation Page has invalid first key (i.e., in description of Collection included using partOf key).", + "title": "**Annotation Page _first_ key** (i.e., in description of Collection included using partOf key), if present, has value of string of format uri - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "type": "object", + "properties": + { + "partOf": { "$ref": "collections.json#/definitions/firstValidIfPresent" } - }, - "required": [ "first" ] - } - ] + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json index e64d5d80b24..19b82f3ba96 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelImplemented.json @@ -4,20 +4,13 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Annotation Page has no label key (inherited from Collection).", - "title": "Implements **Annotation Page _label_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/labelFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Annotation Page has no label key (i.e., in description of Collection included using partOf key).", + "title": "Implements **Annotation Page _label_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "type": "object", + "properties": + { + "partOf": { "$ref": "collections.json#/definitions/labelFound" } - }, - "required": [ "first" ] - } - ] + }, + "required": [ "partOf" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelValidated.json index 740bd622aed..50749f4489d 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLabelValidated.json @@ -4,20 +4,12 @@ "assertionType": "must", "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", - "errorMessage": "ERROR: Annotation Page has label key with non-string value or an array as value containing non-string value.", - "title": "**Annotation Page _label_ key**, if present (inherited from Collection), is **a value of type string** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/labelDefinition" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "ERROR: Annotation Page has label key (i.e., in description of Collection included using partOf key) with non-string value or an array as value containing non-string value.", + "title": "**Annotation Page _label_ key**, if present (i.e., in description of Collection included using partOf key), is **a value of type string** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "type": "object", + "properties": + { + "partOf": { "$ref": "collections.json#/definitions/labelDefinition" } - }, - "required": [ "first" ] - } - ] + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastImplemented.json index dc0806404fd..4978fedf611 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastImplemented.json @@ -4,20 +4,13 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Annotation Page has no last key (inherited from Collection).", - "title": "Implements **Annotation Page _last_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/lastFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "Annotation Page has no last key (i.e., in description of Collection included using partOf key).", + "title": "Implements **Annotation Page _last_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "type": "object", + "properties": + { + "partOf": { "$ref": "collections.json#/definitions/lastFound" } - }, - "required": [ "first" ] - } - ] + }, + "required": [ "partOf" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastValidated.json index 9d02948b39d..d80c37c4c6d 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageLastValidated.json @@ -4,24 +4,12 @@ "assertionType": "must", "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", - "errorMessage": "ERROR: Annotation Page has last key with non-uri value or array as value containing more than one item.", - "title": "**Annotation Page _last_ key** (inherited from Collection), if present, is **a single value of format uri** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/lastValidIfPresent" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": + "errorMessage": "ERROR: Annotation Page has last key (i.e., in description of Collection included using partOf key) with non-uri value or array as value containing more than one item.", + "title": "**Annotation Page _last_ key** (i.e., in description of Collection included using partOf key), if present, is **a single value of format uri** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "type": "object", + "properties": + { + "partOf": { "$ref": "collections.json#/definitions/lastValidIfPresent" } - }, - "required": [ "first" ] - } - ] - - - - + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json index 6e0e61a5c15..fe1f21edae5 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalImplemented.json @@ -4,20 +4,13 @@ "assertionType": "may", "expectedResult": "valid", "onUnexpectedResult" : "passAndContinue", - "errorMessage": "Annotation Page has no total key (inherited from Collection).", - "title": "Implements **Annotation Page _total_ key** (inherited from Collection) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/totalFound" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": - { "$ref": "collections.json#/definitions/totalFound" } - }, - "required": [ "first" ] - } - ] + "errorMessage": "Annotation Page has no total key (i.e., in description of Collection included using partOf key).", + "title": "Implements **Annotation Page _total_ key** (i.e., in description of Collection included using partOf key) with valid value - [model 5.1](https://www.w3.org/TR/annotation-model/#annotation-collection)", + "type": "object", + "properties": + { + "partOf": + { "$ref": "collections.json#/definitions/totalFound" } + }, + "required": [ "partOf" ] } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalValidated.json b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalValidated.json index eb9411d8522..ca57e286ed3 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalValidated.json +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/5.2-pageTotalValidated.json @@ -4,20 +4,12 @@ "assertionType": "must", "expectedResult": "valid", "onUnexpectedResult" : "failAndContinue", - "errorMessage": "ERROR: Annotation Page has total key with non-numeric value, a negative numeric value, or more than one value.", - "title": "**Annotation Page _total_ key**, if present (inherited from Collection), is **a non-negative integer value** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", - "oneOf": [ - { "allOf": [ - { "$ref": "collections.json#/definitions/totalDefinition" }, - { "$ref": "collections.json#/definitions/annotationPageTypeValueFound" } - ] - }, - { "type": "object", - "properties": - {"first": - { "$ref": "collections.json#/definitions/totalDefinition" } - }, - "required": [ "first" ] - } - ] + "errorMessage": "ERROR: Annotation Page has total key (i.e., in description of Collection included using partOf key) with non-numeric value, a negative numeric value, or more than one value.", + "title": "**Annotation Page _total_ key**, if present (i.e., in description of Collection included using partOf key), is **a non-negative integer value** - [model 5.2](https://www.w3.org/TR/annotation-model/#annotation-page)", + "type": "object", + "properties": + { + "partOf": + { "$ref": "collections.json#/definitions/totalDefinition" } + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/pages/pageOptionals.test b/tests/wpt/web-platform-tests/annotation-model/collections/pages/pageOptionals.test index 2d53d6550c7..39fac8f93c1 100644 --- a/tests/wpt/web-platform-tests/annotation-model/collections/pages/pageOptionals.test +++ b/tests/wpt/web-platform-tests/annotation-model/collections/pages/pageOptionals.test @@ -3,6 +3,7 @@ "name": "A single Annotation Page implements optional keys and meets optional key value constraints", "description": "Pages of Web Annotations:
    • MUST include certain properties (keys)
    • MUST satisfy model constraints on values of required and any optional Annotation keys used
    Note: Implementation of optional Annotation Collection keys (features), optional constraints on key values, and optional keys and constraints on Agents involved in an Annotation Collection checked by other tests.
    Please fill textarea with json-ld serialization of a single Annotation Page or an Annotation Collection with an embedded Page", "testType": "manual", + "skipFailures": [ "should", "may" ], "ref": "https://www.w3.org/TR/annotation-model/", "assertions": [ "collections/pages/5.2-pagePartOfImplemented.json", diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json b/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json index b51c0461f9c..8c09b14aa40 100644 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json @@ -83,11 +83,8 @@ "oneOf": [ {"$ref": "id.json#/definitions/stringUri"}, {"$ref": "choiceSet.json#/definitions/choiceDetected" }, - {"$ref": "choiceSet.json#/definitions/compositeDetected" }, - {"$ref": "choiceSet.json#/definitions/independentsDetected" }, - {"$ref": "choiceSet.json#/definitions/listDetected" }, - {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, - {"$ref": "#/definitions/externalWebResourceDetected" } + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } ] }, @@ -100,9 +97,6 @@ "anyOf": [ {"$ref": "id.json#/definitions/stringUri"}, {"$ref": "choiceSet.json#/definitions/choiceDetected" }, - {"$ref": "choiceSet.json#/definitions/compositeDetected" }, - {"$ref": "choiceSet.json#/definitions/independentsDetected" }, - {"$ref": "choiceSet.json#/definitions/listDetected" }, {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, {"$ref": "#/definitions/externalWebResourceDetected" }, {"$ref": "#/definitions/textualBodyFound" } diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json b/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json index 89c2ebdc74c..aafb27bb260 100644 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json @@ -1,8 +1,8 @@ { "$schema": "http://json-schema.org/draft-04/schema#", "id": "choiceSet.json", - "title": "Definitions: Choice, Composite, List, Independents.", - "description": "Schemas in #/definitions detect or validate keys/objects used in describing Choice, Composite, List, Independents (Sections 3.2.7 and 3.2.8).", + "title": "Definitions: Choice.", + "description": "Schemas in #/definitions detect or validate keys/objects used in describing Choice (Sections 3.2.7 and 3.2.8).", "definitions": { @@ -55,69 +55,18 @@ "required": [ "type" ] }, - "compositeTypeDefinition": - { - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Definition: Composite type", - "description": "True when object has type key and object's type is 'Composite' (Section 3.2.7)", - "type": "object", - "properties": - { - "type": - { - "type": "string", - "enum": ["Composite"] - } - }, - "required": [ "type" ] - }, - - "listTypeDefinition": - { - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Definition: List type", - "description": "True when object has type key and object's type is 'List' (Section 3.2.7)", - "type": "object", - "properties": - { - "type": - { - "type": "string", - "enum": ["List"] - } - }, - "required": [ "type" ] - }, - - "independentsTypeDefinition": - { - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Definition: Independents type", - "description": "True when object has type key and object's type is 'Independents' (Section 3.2.7)", - "type": "object", - "properties": - { - "type": - { - "type": "string", - "enum": ["Independents"] - } - }, - "required": [ "type" ] - }, - "choiceOrSetTypeDefinition": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Definition: Choice or Set type", - "description": "True when object has type key and object's type is any of 'Choice', 'Composite', 'List', 'Independents' (Section 3.2.7)", + "description": "True when object has type key and object's type is any of 'Choice' (Section 3.2.7)", "type": "object", "properties": { "type": { "type": "string", - "enum": ["Choice", "Composite", "List", "Independents"] + "enum": ["Choice"] } }, "required": [ "type" ] @@ -135,46 +84,10 @@ ] }, - "compositeDetected": { - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Detection: Composite", - "description": "True when object's type is 'Composite' and the object has an items array (Section 3.2.8)", - "type": "object", - "allOf": - [ - { "$ref": "#/definitions/compositeTypeDefinition" }, - { "$ref": "#/definitions/itemsDetected" } - ] - }, - - "listDetected": { - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Detection: List", - "description": "True when object's type is 'List' and the object has an items array (Section 3.2.7)", - "type": "object", - "allOf": - [ - { "$ref": "#/definitions/listTypeDefinition" }, - { "$ref": "#/definitions/itemsDetected" } - ] - }, - - "independentsDetected": { - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Detection: Independents", - "description": "True when object's type is 'Independents' and the object has an items array (Section 3.2.7)", - "type": "object", - "allOf": - [ - { "$ref": "#/definitions/independentsTypeDefinition" }, - { "$ref": "#/definitions/itemsDetected" } - ] - }, - "choiceOrSetDetected": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Detection: Choice or Set", - "description": "True when object's type is one of Choice, Composite, List or Independents and the object has an items array (Section 3.2.7)", + "description": "True when object's type is one of Choice and the object has an items array (Section 3.2.7)", "type": "object", "allOf": [ diff --git a/tests/wpt/web-platform-tests/annotation-vocab/01-validJSON-LD-manual.html b/tests/wpt/web-platform-tests/annotation-vocab/01-validJSON-LD-manual.html new file mode 100644 index 00000000000..88a4ccf2a16 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/01-validJSON-LD-manual.html @@ -0,0 +1,26 @@ + + + +Ensure Vocabulary JSON-LD is valid + + + + + +

    The Annotation Vocabulary JSON-LD context is defined to be at http://www.w3.org/ns/oa

    +

    Retrieve that context document and expand the following example using a JSON-LD validation tool. Does it expand?

    +
    +{
    +  "@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"
    +  }
    +}
    +
    + + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/02-context-to-triples-manual.html b/tests/wpt/web-platform-tests/annotation-vocab/02-context-to-triples-manual.html new file mode 100644 index 00000000000..b9d6603f336 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/02-context-to-triples-manual.html @@ -0,0 +1,27 @@ + + + +JSON-LD context document can be used to convert JSON-LD serialized Annotations into RDF triples + + + + + +

    The Annotation Vocabulary JSON-LD context is defined to be at http://www.w3.org/ns/oa

    +

    Use that context document to convert the sample below into RDF triples. Did + the conversion complete?

    +
    +{
    +  "@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"
    +  }
    +}
    +
    + + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/03-graphs-are-isomorphic-manual.html b/tests/wpt/web-platform-tests/annotation-vocab/03-graphs-are-isomorphic-manual.html new file mode 100644 index 00000000000..5061c32eeff --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/03-graphs-are-isomorphic-manual.html @@ -0,0 +1,27 @@ + + + +Graphs produced are isomorphic + + + + + +

    The Annotation Vocabulary JSON-LD context is defined to be at http://www.w3.org/ns/oa

    +

    Use that context to convert the content below into various format RDF + graphs. Are these graphs identical?

    +
    +{
    +  "@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"
    +  }
    +}
    +
    + + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/04-graphs-convert-lossless-manual.html b/tests/wpt/web-platform-tests/annotation-vocab/04-graphs-convert-lossless-manual.html new file mode 100644 index 00000000000..95ebfd612eb --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/04-graphs-convert-lossless-manual.html @@ -0,0 +1,27 @@ + + + +Graphs produced can be converted back into JSON-LD with no loss + + + + + +

    The Annotation Vocabulary JSON-LD context is defined to be at http://www.w3.org/ns/oa

    +

    Using that context, convert the content below into an RDF graph, then + convert that graph back into JSON-LD. Is the content the same?

    +
    +{
    +  "@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"
    +  }
    +}
    +
    + + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/05-ontology-parsed-as-valid-manual.html b/tests/wpt/web-platform-tests/annotation-vocab/05-ontology-parsed-as-valid-manual.html new file mode 100644 index 00000000000..331eb23d703 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/05-ontology-parsed-as-valid-manual.html @@ -0,0 +1,14 @@ + + + +Ontology can be parsed without errors + + + + + +

    The Annotation Vocabulary JSON-LD context is defined to be at http://www.w3.org/ns/oa

    +

    One ontology of that context is at at http://www.w3.org/ns/oa.ttl

    +

    Parse that ontology into a graph. Did it work?

    + + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/06-ontology-internally-consistent-manual.html b/tests/wpt/web-platform-tests/annotation-vocab/06-ontology-internally-consistent-manual.html new file mode 100644 index 00000000000..84aa4334125 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/06-ontology-internally-consistent-manual.html @@ -0,0 +1,15 @@ + + + +Ontology is internally consistent + + + + + +

    The Annotation Vocabulary JSON-LD context is defined to be at http://www.w3.org/ns/oa

    +

    One ontology of that context is at http://www.w3.org/ns/oa.ttl

    +

    Parse that ontology and evaluate its domains and ranges. Are they + consistent with the underlying referenced data types?

    + + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/OWNERS b/tests/wpt/web-platform-tests/annotation-vocab/OWNERS new file mode 100644 index 00000000000..187f28b698e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/OWNERS @@ -0,0 +1,2 @@ +@halindrome +@gkellogg diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/.gitignore b/tests/wpt/web-platform-tests/annotation-vocab/tools/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md b/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md new file mode 100644 index 00000000000..ae44a58fa8e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/README.md @@ -0,0 +1,21 @@ +Vocabulary Exercising Tools +=========================== + +The Web Annotation Vocabulary specification defines an ontology for +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 +=============== + +This python script exercises the vocabulary implementation using rdflib, +rdflib-jsonld and pyld. Note that this means your python environment must +have those additional python modules installed in order to run the tests. + diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/anno.jsonld b/tests/wpt/web-platform-tests/annotation-vocab/tools/anno.jsonld new file mode 100644 index 00000000000..58892919c0b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/anno.jsonld @@ -0,0 +1,128 @@ +{ + "@context": { + "oa": "http://www.w3.org/ns/oa#", + "dc": "http://purl.org/dc/elements/1.1/", + "dcterms": "http://purl.org/dc/terms/", + "dctypes": "http://purl.org/dc/dcmitype/", + "foaf": "http://xmlns.com/foaf/0.1/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "skos": "http://www.w3.org/2004/02/skos/core#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + "iana": "http://www.iana.org/assignments/relation/", + "owl": "http://www.w3.org/2002/07/owl#", + "as": "http://www.w3.org/ns/activitystreams#", + "schema": "http://schema.org/", + + "id": {"@type": "@id", "@id": "@id"}, + "type": {"@type": "@id", "@id": "@type"}, + + "Annotation": "oa:Annotation", + "Dataset": "dctypes:Dataset", + "Image": "dctypes:StillImage", + "Video": "dctypes:MovingImage", + "Audio": "dctypes:Sound", + "Text": "dctypes:Text", + "TextualBody": "oa:TextualBody", + "ResourceSelection": "oa:ResourceSelection", + "SpecificResource": "oa:SpecificResource", + "FragmentSelector": "oa:FragmentSelector", + "CssSelector": "oa:CssSelector", + "XPathSelector": "oa:XPathSelector", + "TextQuoteSelector": "oa:TextQuoteSelector", + "TextPositionSelector": "oa:TextPositionSelector", + "DataPositionSelector": "oa:DataPositionSelector", + "SvgSelector": "oa:SvgSelector", + "RangeSelector": "oa:RangeSelector", + "TimeState": "oa:TimeState", + "HttpRequestState": "oa:HttpRequestState", + "CssStylesheet": "oa:CssStyle", + "Choice": "oa:Choice", + "Composite": "oa:Composite", + "List": "oa:List", + "Independents": "oa:Independents", + "Person": "foaf:Person", + "Software": "as:Application", + "Organization": "foaf:Organization", + "AnnotationCollection": "as:OrderedCollection", + "AnnotationPage": "as:OrderedCollectionPage", + "Audience": "schema:Audience", + + "Motivation": "oa:Motivation", + "bookmarking": "oa:bookmarking", + "classifying": "oa:classifying", + "commenting": "oa:commenting", + "describing": "oa:describing", + "editing": "oa:editing", + "highlighting": "oa:highlighting", + "identifying": "oa:identifying", + "linking": "oa:linking", + "moderating": "oa:moderating", + "questioning": "oa:questioning", + "replying": "oa:replying", + "reviewing": "oa:reviewing", + "tagging": "oa:tagging", + + "auto": "oa:autoDirection", + "ltr": "oa:ltrDirection", + "rtl": "oa:rtlDirection", + + "body": {"@type": "@id", "@id": "oa:hasBody"}, + "target": {"@type": "@id", "@id": "oa:hasTarget"}, + "source": {"@type": "@id", "@id": "oa:hasSource"}, + "selector": {"@type": "@id", "@id": "oa:hasSelector"}, + "state": {"@type": "@id", "@id": "oa:hasState"}, + "scope": {"@type": "@id", "@id": "oa:hasScope"}, + "refinedBy": {"@type": "@id", "@id": "oa:refinedBy"}, + "startSelector": {"@type": "@id", "@id": "oa:hasStartSelector"}, + "endSelector": {"@type": "@id", "@id": "oa:hasEndSelector"}, + "renderedVia": {"@type": "@id", "@id": "oa:renderedVia"}, + "creator": {"@type": "@id", "@id": "dcterms:creator"}, + "generator": {"@type": "@id", "@id": "as:generator"}, + "rights": {"@type": "@id", "@id": "dcterms:rights"}, + "homepage": {"@type": "@id", "@id": "foaf:homepage"}, + "via": {"@type": "@id", "@id": "oa:via"}, + "canonical": {"@type": "@id", "@id": "oa:canonical"}, + "stylesheet": {"@type": "@id", "@id": "oa:styledBy"}, + "cached": {"@type": "@id", "@id": "oa:cachedSource"}, + "conformsTo": {"@type": "@id", "@id": "dcterms:conformsTo"}, + "items": {"@type": "@id", "@id": "as:items", "@container": "@list"}, + "partOf": {"@type": "@id", "@id": "as:partOf"}, + "first": {"@type": "@id", "@id": "as:first"}, + "last": {"@type": "@id", "@id": "as:last"}, + "next": {"@type": "@id", "@id": "as:next"}, + "prev": {"@type": "@id", "@id": "as:prev"}, + "audience": {"@type": "@id", "@id": "schema:audience"}, + "motivation": {"@type": "@vocab", "@id": "oa:motivatedBy"}, + "purpose": {"@type": "@vocab", "@id": "oa:hasPurpose"}, + "textDirection": {"@type": "@vocab", "@id": "oa:textDirection"}, + + "accessibility": "schema:accessibilityFeature", + "bodyValue": "oa:bodyValue", + "format": "dc:format", + "language": "dc:language", + "processingLanguage": "oa:processingLanguage", + "value": "rdf:value", + "exact": "oa:exact", + "prefix": "oa:prefix", + "suffix": "oa:suffix", + "styleClass": "oa:styleClass", + "name": "foaf:name", + "email": "foaf:mbox", + "email_sha1": "foaf:mbox_sha1sum", + "nickname": "foaf:nick", + "label": "rdfs:label", + + "created": {"@id": "dcterms:created", "@type": "xsd:dateTime"}, + "modified": {"@id": "dcterms:modified", "@type": "xsd:dateTime"}, + "generated": {"@id": "dcterms:issued", "@type": "xsd:dateTime"}, + "sourceDate": {"@id": "oa:sourceDate", "@type": "xsd:dateTime"}, + "sourceDateStart": {"@id": "oa:sourceDateStart", "@type": "xsd:dateTime"}, + "sourceDateEnd": {"@id": "oa:sourceDateEnd", "@type": "xsd:dateTime"}, + + "start": {"@id": "oa:start", "@type": "xsd:nonNegativeInteger"}, + "end": {"@id": "oa:end", "@type": "xsd:nonNegativeInteger"}, + "total": {"@id": "as:totalItems", "@type": "xsd:nonNegativeInteger"}, + "startIndex": {"@id": "as:startIndex", "@type": "xsd:nonNegativeInteger"} + } +} \ No newline at end of file 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 new file mode 100644 index 00000000000..3a384878013 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile @@ -0,0 +1,12 @@ +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 new file mode 100644 index 00000000000..03d555134e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Gemfile.lock @@ -0,0 +1,192 @@ +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.4.3) + 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.6) + 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.6.8.1) + 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.6) + 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 new file mode 100644 index 00000000000..30f441e63bc --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/README.md @@ -0,0 +1,5 @@ +## 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 new file mode 100644 index 00000000000..c7932048a95 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/RESULTS.md @@ -0,0 +1,2709 @@ + + + + RSpec results + + + + + + + + +
    + +
    +
    +

    RSpec Code Examples

    +
    + +
    + + + +
    + +
    +

     

    +

     

    +
    +
    + + +
    +
    +
    +
    Web Annotation Vocab
    + +
    The JSON-LD context document can be parsed without errors by JSON-LD validators0.30309s
    +
    +
    +
    +
    +
    The JSON-LD context document can be used to convert JSON-LD serialized Annotations into RDF triples
    + +
    anno1.json0.56069s
    + +
    lint anno1.json0.42548s
    + +
    anno10.json0.39919s
    + +
    lint anno10.json0.48348s
    + +
    anno11.json0.41240s
    + +
    lint anno11.json0.53605s
    + +
    anno12.json0.40508s
    + +
    lint anno12.json0.49430s
    + +
    anno13.json0.40935s
    + +
    lint anno13.json0.48180s
    + +
    anno14.json0.41280s
    + +
    lint anno14.json0.47087s
    + +
    anno15.json0.40029s
    + +
    lint anno15.json0.51705s
    + +
    anno16.json0.39632s
    + +
    lint anno16.json0.46520s
    + +
    anno17.json0.39630s
    + +
    lint anno17.json0.43479s
    + +
    anno18.json0.40481s
    + +
    lint anno18.json0.46648s
    + +
    anno19.json0.39744s
    + +
    lint anno19.json0.43402s
    + +
    anno2.json0.40744s
    + +
    lint anno2.json0.44628s
    + +
    anno20.json0.41189s
    + +
    lint anno20.json0.43640s
    + +
    anno21.json0.39995s
    + +
    lint anno21.json0.46148s
    + +
    anno22.json0.40286s
    + +
    lint anno22.json0.44256s
    + +
    anno23.json0.41701s
    + +
    lint anno23.json0.47746s
    + +
    anno24.json0.41397s
    + +
    lint anno24.json0.44446s
    + +
    anno25.json0.39897s
    + +
    lint anno25.json0.44369s
    + +
    anno26.json0.40163s
    + +
    lint anno26.json0.44521s
    + +
    anno27.json0.40337s
    + +
    lint anno27.json0.46172s
    + +
    anno28.json0.40573s
    + +
    lint anno28.json0.44746s
    + +
    anno29.json0.40069s
    + +
    lint anno29.json0.44089s
    + +
    anno3.json0.39832s
    + +
    lint anno3.json0.44832s
    + +
    anno30.json0.40439s
    + +
    lint anno30.json0.47012s
    + +
    anno31.json0.40352s
    + +
    lint anno31.json0.48881s
    + +
    anno32.json0.40521s
    + +
    lint anno32.json0.47565s
    + +
    anno33.json0.39758s
    + +
    lint anno33.json0.42825s
    + +
    anno34.json0.40342s
    + +
    lint anno34.json0.46386s
    + +
    anno35.json0.39727s
    + +
    lint anno35.json0.44666s
    + +
    anno36.json0.40368s
    + +
    lint anno36.json0.50162s
    + +
    anno37.json0.40413s
    + +
    lint anno37.json0.44505s
    + +
    anno38.json0.40365s
    + +
    lint anno38.json0.44806s
    + +
    anno39.json0.39650s
    + +
    lint anno39.json0.45765s
    + +
    anno4.json0.40110s
    + +
    lint anno4.json0.43765s
    + +
    anno40.json0.39694s
    + +
    lint anno40.json0.42795s
    + +
    anno41-example44.json0.42444s
    + +
    lint anno41-example44.json0.82530s
    + +
    anno5.json0.40352s
    + +
    lint anno5.json0.43810s
    + +
    anno6.json0.40099s
    + +
    lint anno6.json0.41499s
    + +
    anno7.json0.39763s
    + +
    lint anno7.json0.45328s
    + +
    anno8.json0.40016s
    + +
    lint anno8.json0.42356s
    + +
    anno9.json0.40070s
    + +
    lint anno9.json0.43877s
    + +
    collection1.json0.75470s
    + +
    lint collection1.json3.15045s
    + +
    example41.json0.39996s
    + +
    lint example41.json0.43951s
    + +
    example42.json0.40507s
    + +
    lint example42.json0.47543s
    + +
    example43.json0.40551s
    + +
    lint example43.json0.50432s
    +
    +
    +
    +
    +
    detects errors in incorrect examples
    + +
    anno1.json0.00142s
    + +
    anno10.json0.00076s
    + +
    anno11.json0.19856s
    + +
    anno12.json0.00087s
    + +
    anno13.json0.00075s
    + +
    anno14.json0.00077s
    + +
    anno15.json0.00116s
    + +
    anno16.json0.00074s
    + +
    anno17.json0.00075s
    + +
    anno18.json0.00077s
    + +
    anno19.json0.00071s
    + + + + +
    anno2.json (PENDING: Empty Documents are invalid)
    + +
    anno20.json0.00112s
    + +
    anno21.json0.00119s
    + +
    anno22.json0.00106s
    + +
    anno23.json0.00075s
    + +
    anno24.json0.00076s
    + +
    anno25.json0.00066s
    + +
    anno26.json0.19880s
    + +
    anno27.json0.20570s
    + +
    anno28.json0.19991s
    + +
    anno29.json0.19764s
    + + + + +
    anno3.json (PENDING: Empty Documents are invalid)
    + +
    anno30.json0.19944s
    + +
    anno31.json0.20036s
    + +
    anno32.json0.19468s
    + +
    anno33.json0.20145s
    + +
    anno34.json0.19786s
    + +
    anno35.json0.19442s
    + +
    anno36.json0.20170s
    + +
    anno37.json0.00073s
    + +
    anno38.json0.19785s
    + +
    anno39.json0.20030s
    + +
    anno4.json0.00247s
    + +
    anno5.json0.11420s
    + +
    anno6.json0.19756s
    + +
    anno7.json0.19826s
    + +
    anno8.json0.19797s
    + +
    anno9.json0.19496s
    +
    +
    +
    +
    +
    The ontology documents can be parsed without errors by RDF Schema validators
    + +
    JSON-LD version is isomorphic to jsonld0.33990s
    + +
    JSON-LD version is isomorphic to rdfa0.24762s
    + +
    JSON-LD version is isomorphic to rdfxml0.38899s
    + +
    JSON-LD version is isomorphic to ttl0.47473s
    +
    +
    +
    +
    +
    The ontology documents are isomorphic to each other
    + + + + +
    + rdfa + 0.44157s +
    +
    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:
    +
    ./annotation-vocab_spec.rb:83:in `block (4 levels) in <top (required)>'
    +
    81        # XXX Normalize whitespace in literals to ease comparision
    +82        fg.each_object {|o| o.squish! if o.literal?}
    +83        expect(fg).to be_equivalent_graph(vocab_graph)
    +84      end
    +85    end
    +86# Install the coderay gem to get syntax highlighting
    +
    +
    + +
    + rdfxml + 0.80222s +
    +
    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:
    +
    ./annotation-vocab_spec.rb:83:in `block (4 levels) in <top (required)>'
    +
    81        # XXX Normalize whitespace in literals to ease comparision
    +82        fg.each_object {|o| o.squish! if o.literal?}
    +83        expect(fg).to be_equivalent_graph(vocab_graph)
    +84      end
    +85    end
    +86# Install the coderay gem to get syntax highlighting
    +
    +
    + +
    ttl0.48723s
    +
    +
    +
    +
    +
    The ontology is internally consistent with respect to domains, ranges, inverses, and any other ontology features specified.
    + + + +
    + lints cleanly + 2.09350s +
    +
    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
    +
    ./annotation-vocab_spec.rb:91:in `block (3 levels) in <top (required)>'
    +
    89    it "lints cleanly" do
    +90      entailed_graph = vocab_graph.dup.entail!
    +91      expect(entailed_graph.lint).to be_empty
    +92    end
    +93
    +94# Install the coderay gem to get syntax highlighting
    +
    +
    +
    +
    +
    +
    +
    oa:Annotation
    + +
    subClassOf0.00013s
    + +
    equivalentClass0.00057s
    +
    +
    +
    +
    +
    oa:Choice
    + +
    subClassOf0.01390s
    + +
    equivalentClass0.00054s
    +
    +
    +
    +
    +
    oa:Composite
    + +
    subClassOf0.00201s
    + +
    equivalentClass0.00046s
    +
    +
    +
    +
    +
    oa:CssSelector
    + +
    subClassOf0.00087s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:CssStyle
    + +
    subClassOf0.00088s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:DataPositionSelector
    + +
    subClassOf0.00088s
    + +
    equivalentClass0.00059s
    +
    +
    +
    +
    +
    oa:Direction
    + +
    subClassOf0.00010s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:FragmentSelector
    + +
    subClassOf0.00089s
    + +
    equivalentClass0.00047s
    +
    +
    +
    +
    +
    oa:HttpRequestState
    + +
    subClassOf0.00090s
    + +
    equivalentClass0.00047s
    +
    +
    +
    +
    +
    oa:Independents
    + +
    subClassOf0.00204s
    + +
    equivalentClass0.00046s
    +
    +
    +
    +
    +
    oa:List
    + +
    subClassOf0.00220s
    + +
    equivalentClass0.00052s
    +
    +
    +
    +
    +
    oa:Motivation
    + +
    subClassOf0.00120s
    + +
    equivalentClass0.00053s
    +
    +
    +
    +
    +
    oa:RangeSelector
    + +
    subClassOf0.00093s
    + +
    equivalentClass0.00048s
    +
    +
    +
    +
    +
    oa:ResourceSelection
    + +
    subClassOf0.00010s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:Selector
    + +
    subClassOf0.00010s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:SpecificResource
    + +
    subClassOf0.00089s
    + +
    equivalentClass0.00050s
    +
    +
    +
    +
    +
    oa:State
    + +
    subClassOf0.00010s
    + +
    equivalentClass0.00048s
    +
    +
    +
    +
    +
    oa:Style
    + +
    subClassOf0.00010s
    + +
    equivalentClass0.00048s
    +
    +
    +
    +
    +
    oa:SvgSelector
    + +
    subClassOf0.00086s
    + +
    equivalentClass0.00050s
    +
    +
    +
    +
    +
    oa:TextPositionSelector
    + +
    subClassOf0.00091s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:TextQuoteSelector
    + +
    subClassOf0.00089s
    + +
    equivalentClass0.00048s
    +
    +
    +
    +
    +
    oa:TextualBody
    + +
    subClassOf0.00010s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:TimeState
    + +
    subClassOf0.00089s
    + +
    equivalentClass0.00049s
    +
    +
    +
    +
    +
    oa:XPathSelector
    + +
    subClassOf0.00089s
    + +
    equivalentClass0.00048s
    +
    +
    +
    +
    +
    oa:annotationService
    + +
    subPropertyOf0.00011s
    + +
    domain0.00010s
    + +
    range0.00010s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:bodyValue
    + +
    subPropertyOf0.00010s
    + +
    domain0.00088s
    + +
    range0.00083s
    + +
    equivalentProperty0.00015s
    +
    +
    +
    +
    +
    oa:cachedSource
    + +
    subPropertyOf0.00009s
    + +
    domain0.00089s
    + +
    range0.00010s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:canonical
    + +
    subPropertyOf0.00010s
    + +
    domain0.00011s
    + +
    range0.00010s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:end
    + +
    subPropertyOf0.00010s
    + +
    domain0.00009s
    + +
    range0.00085s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:exact
    + +
    subPropertyOf0.00010s
    + +
    domain0.00010s
    + +
    range0.00092s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:hasBody
    + +
    subPropertyOf0.00009s
    + +
    domain0.00090s
    + +
    range0.00010s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:hasEndSelector
    + +
    subPropertyOf0.00011s
    + +
    domain0.00089s
    + +
    range0.00089s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:hasPurpose
    + +
    subPropertyOf0.00010s
    + +
    domain0.00010s
    + +
    range0.00088s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:hasScope
    + +
    subPropertyOf0.00009s
    + +
    domain0.00087s
    + +
    range0.00009s
    + +
    equivalentProperty0.00011s
    +
    +
    +
    +
    +
    oa:hasSelector
    + +
    subPropertyOf0.00009s
    + +
    domain0.00088s
    + +
    range0.00088s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:hasSource
    + +
    subPropertyOf0.00009s
    + +
    domain0.00088s
    + +
    range0.00009s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:hasStartSelector
    + +
    subPropertyOf0.00009s
    + +
    domain0.00088s
    + +
    range0.00088s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:hasState
    + +
    subPropertyOf0.00009s
    + +
    domain0.00088s
    + +
    range0.00087s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:hasTarget
    + +
    subPropertyOf0.00009s
    + +
    domain0.00088s
    + +
    range0.00009s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:motivatedBy
    + +
    subPropertyOf0.00011s
    + +
    domain0.00089s
    + +
    range0.00087s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:prefix
    + +
    subPropertyOf0.00010s
    + +
    domain0.00009s
    + +
    range0.00082s
    + +
    equivalentProperty0.00014s
    +
    +
    +
    +
    +
    oa:processingLanguage
    + +
    subPropertyOf0.00009s
    + +
    domain0.00012s
    + +
    range0.00085s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:refinedBy
    + +
    subPropertyOf0.00009s
    + +
    domain0.00009s
    + +
    range0.00010s
    + +
    equivalentProperty0.00011s
    +
    +
    +
    +
    +
    oa:renderedVia
    + +
    subPropertyOf0.00011s
    + +
    domain0.00088s
    + +
    range0.00086s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:sourceDate
    + +
    subPropertyOf0.00009s
    + +
    domain0.00087s
    + +
    range0.00081s
    + +
    equivalentProperty0.00011s
    +
    +
    +
    +
    +
    oa:sourceDateEnd
    + +
    subPropertyOf0.00010s
    + +
    domain0.00087s
    + +
    range0.00082s
    + +
    equivalentProperty0.00011s
    +
    +
    +
    +
    +
    oa:sourceDateStart
    + +
    subPropertyOf0.00009s
    + +
    domain0.00089s
    + +
    range0.00082s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:start
    + +
    subPropertyOf0.00009s
    + +
    domain0.00009s
    + +
    range0.00083s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:styleClass
    + +
    subPropertyOf0.00009s
    + +
    domain0.00088s
    + +
    range0.00082s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:styledBy
    + +
    subPropertyOf0.00010s
    + +
    domain0.00092s
    + +
    range0.00088s
    + +
    equivalentProperty0.00013s
    +
    +
    +
    +
    +
    oa:suffix
    + +
    subPropertyOf0.00009s
    + +
    domain0.00010s
    + +
    range0.00081s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:textDirection
    + +
    subPropertyOf0.00009s
    + +
    domain0.00009s
    + +
    range0.00088s
    + +
    equivalentProperty0.00012s
    +
    +
    +
    +
    +
    oa:via
    + +
    subPropertyOf0.00009s
    + +
    domain0.00009s
    + +
    range0.00011s
    + +
    equivalentProperty0.00011s
    +
    +
    + + +
    +
    + + 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 new file mode 100644 index 00000000000..70b446b915a --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/Rakefile @@ -0,0 +1,11 @@ +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 new file mode 100644 index 00000000000..3ae53b29fbf --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/ruby-rdf/annotation-vocab_spec.rb @@ -0,0 +1,120 @@ +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 new file mode 100644 index 00000000000..905349bb468 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.json @@ -0,0 +1,7 @@ +{ + "@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 new file mode 100644 index 00000000000..879b3b4960e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno1.nt @@ -0,0 +1,3 @@ + . + . + . 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 new file mode 100644 index 00000000000..766fddf3ac8 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.json @@ -0,0 +1,19 @@ +{ + "@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 new file mode 100644 index 00000000000..0db919d3050 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno10.nt @@ -0,0 +1,11 @@ +_:b2 . +_:b2 . +_:b1 . +_:b1 _:b2 . + "fr" . +_:b0 _:b1 . +_:b0 . + . + _:b0 . + . + "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 new file mode 100644 index 00000000000..7461493f46e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.json @@ -0,0 +1,18 @@ +{ + "@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 new file mode 100644 index 00000000000..cb071e57376 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno11.nt @@ -0,0 +1,14 @@ +_:b2 _:b3 . +_:b2 . + _:b0 . + _:b1 . + . + . +_:b4 . +_:b4 . +_:b1 . +_:b1 _:b2 . +_:b3 _:b4 . +_:b3 . +_:b0 "These pages together provide evidence of the conspiracy" . +_:b0 . 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 new file mode 100644 index 00000000000..a8039b207df --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.json @@ -0,0 +1,19 @@ +{ + "@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 new file mode 100644 index 00000000000..5890c8b9957 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno12.nt @@ -0,0 +1,16 @@ +_:b0 "important" . +_:b0 . +_:b5 . +_:b5 . + _:b0 . + . + _:b1 . + . +_:b2 . +_:b2 _:b3 . +_:b3 . +_:b3 _:b4 . +_:b1 _:b2 . +_:b1 . +_:b4 . +_:b4 _: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 new file mode 100644 index 00000000000..8bf663330da --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.json @@ -0,0 +1,16 @@ +{ + "@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 new file mode 100644 index 00000000000..e7544503ee9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno13.nt @@ -0,0 +1,14 @@ +_:b0 _:b1 . +_:b0 . +_:b1 _:b2 . +_:b1 . + . + . + _:b0 . + . +_:b3 _:b4 . +_:b3 . +_:b2 _:b3 . +_:b2 . +_:b4 . +_:b4 . 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 new file mode 100644 index 00000000000..102225b729e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.json @@ -0,0 +1,16 @@ +{ + "@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 new file mode 100644 index 00000000000..f37cb0d3a01 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno14.nt @@ -0,0 +1,10 @@ + . + "2015-01-29T09:00:00Z"^^ . + . + . + . + "2015-01-28T12:00:00Z"^^ . + "2015-02-04T12:00:00Z"^^ . + . + . + "2014-06-02T17:00:00Z"^^ . 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 new file mode 100644 index 00000000000..1280eef4cd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.json @@ -0,0 +1,20 @@ +{ + "@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 new file mode 100644 index 00000000000..2afb3d2a2eb --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno15.nt @@ -0,0 +1,12 @@ + "pseudo" . + "58bad08927902ff9307b621c54716dcc5083e339" . + "My Pseudonym" . + . + . + . + . + . + . + "Code v2.1" . + . + . 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 new file mode 100644 index 00000000000..f110169c345 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..b511107f61d --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno16.nt @@ -0,0 +1,6 @@ + . + "teacher" . + . + . + . + . 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 new file mode 100644 index 00000000000..056b8e4f534 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..ebfceb4e28e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno17.nt @@ -0,0 +1,6 @@ + . + . + . + . + "captions" . + . 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 new file mode 100644 index 00000000000..cdf50fcd8f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.json @@ -0,0 +1,19 @@ +{ + "@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 new file mode 100644 index 00000000000..2e4e05bf4dc --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno18.nt @@ -0,0 +1,11 @@ + . + . + . + _:b1 . + _:b0 . +_:b1 . +_:b1 "A good description of the topic that bears further investigation" . +_:b1 . +_:b0 . +_:b0 "readme" . +_:b0 . 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 new file mode 100644 index 00000000000..bd572ce6883 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..11fa7ab215e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno19.nt @@ -0,0 +1,5 @@ + . + . + . + . + . 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 new file mode 100644 index 00000000000..f950f2db8d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.json @@ -0,0 +1,17 @@ +{ + "@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 new file mode 100644 index 00000000000..b1377ef57e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno2.nt @@ -0,0 +1,10 @@ + . + . + . + "fr" . + "audio/mpeg" . + "en" . + "ar" . + "en" . + . + "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 new file mode 100644 index 00000000000..17fcc7185a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..465f79bc621 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno20.nt @@ -0,0 +1,6 @@ + . + . + . + . + . + . 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 new file mode 100644 index 00000000000..9ae284df040 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.json @@ -0,0 +1,14 @@ +{ + "@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 new file mode 100644 index 00000000000..cc028dce7c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno21.nt @@ -0,0 +1,7 @@ +_:b0 . +_:b0 . +_:b0 . + _:b0 . + . + . + . 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 new file mode 100644 index 00000000000..767080c05e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..4a2e4b5978c --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno22.nt @@ -0,0 +1,7 @@ +_:b0 . +_:b0 . + _:b1 . + . + _:b0 . +_:b1 . +_:b1 . 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 new file mode 100644 index 00000000000..53b6c676b15 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.json @@ -0,0 +1,15 @@ +{ + "@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 new file mode 100644 index 00000000000..9bfe050b030 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno23.nt @@ -0,0 +1,9 @@ +_:b1 . +_:b1 . +_:b1 "t=30,60" . +_:b0 _:b1 . +_:b0 . +_:b0 . + . + . + _: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 new file mode 100644 index 00000000000..6cca6cb0a6d --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..090cad89c92 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno24.nt @@ -0,0 +1,7 @@ +_:b0 . +_:b0 _:b1 . +_:b1 . +_:b1 "#elemid > .elemclass + p" . + _:b0 . + . + . 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 new file mode 100644 index 00000000000..0e48d3be6a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..5bd4b28c5da --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno25.nt @@ -0,0 +1,7 @@ +_:b1 . +_:b1 "/html/body/p[2]/table/tr[2]/td[3]/span" . + _:b0 . + . + . +_:b0 . +_:b0 _: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 new file mode 100644 index 00000000000..1777fd781b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.json @@ -0,0 +1,15 @@ +{ + "@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 new file mode 100644 index 00000000000..9ecd4318390 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno26.nt @@ -0,0 +1,9 @@ +_:b1 "this is an " . +_:b1 "anotation" . +_:b1 . +_:b1 " that has some" . +_:b0 _:b1 . +_:b0 . + . + . + _: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 new file mode 100644 index 00000000000..4844979a241 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.json @@ -0,0 +1,14 @@ +{ + "@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 new file mode 100644 index 00000000000..68df84db6a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno27.nt @@ -0,0 +1,8 @@ + . + _:b0 . + . +_:b1 . +_:b1 "412"^^ . +_:b1 "795"^^ . +_:b0 _:b1 . +_:b0 . 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 new file mode 100644 index 00000000000..2dd1bc7afcc --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.json @@ -0,0 +1,14 @@ +{ + "@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 new file mode 100644 index 00000000000..e84bcb2400f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno28.nt @@ -0,0 +1,8 @@ +_:b1 "4104"^^ . +_:b1 . +_:b1 "4096"^^ . +_:b0 . +_:b0 _:b1 . + . + _:b0 . + . 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 new file mode 100644 index 00000000000..77914acaeb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..79178d342e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno29.nt @@ -0,0 +1,6 @@ + . + . + _:b0 . + . +_:b0 . +_:b0 . 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 new file mode 100644 index 00000000000..548825c76bc --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..87a7767c9c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno3.nt @@ -0,0 +1,5 @@ + . + . + . + . + . 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 new file mode 100644 index 00000000000..1a7619afc1e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.json @@ -0,0 +1,13 @@ +{ + "@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": " ... " + } + } +} \ 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 new file mode 100644 index 00000000000..7889db4bb16 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno30.nt @@ -0,0 +1,7 @@ + . + _:b0 . + . +_:b0 . +_:b0 _:b1 . +_:b1 " ... " . +_:b1 . 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 new file mode 100644 index 00000000000..ee6902c3968 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.json @@ -0,0 +1,20 @@ +{ + "@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 new file mode 100644 index 00000000000..efb8e991e87 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno31.nt @@ -0,0 +1,12 @@ +_:b1 _:b3 . +_:b1 _:b2 . +_:b1 . +_:b0 . +_:b0 _:b1 . +_:b3 "//table[1]/tr[1]/td[4]" . +_:b3 . + _:b0 . + . + . +_:b2 "//table[1]/tr[1]/td[2]" . +_:b2 . 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 new file mode 100644 index 00000000000..f7c189ceb63 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.json @@ -0,0 +1,19 @@ +{ + "@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 new file mode 100644 index 00000000000..7ffcc146c13 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno32.nt @@ -0,0 +1,12 @@ + . + . + _:b0 . +_:b0 . +_:b0 _:b1 . +_:b2 " and text after it" . +_:b2 "text before the " . +_:b2 "Selected Text" . +_:b2 . +_:b1 _:b2 . +_:b1 "para5" . +_:b1 . 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 new file mode 100644 index 00000000000..f2866eef56e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..cc71ce37b60 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno33.nt @@ -0,0 +1,5 @@ +_:b0 . +_:b0 . + . + . + _: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 new file mode 100644 index 00000000000..c3df38c2823 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.json @@ -0,0 +1,14 @@ +{ + "@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 new file mode 100644 index 00000000000..040a1c755fc --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno34.nt @@ -0,0 +1,8 @@ + _:b0 . + . + . +_:b0 _:b1 . +_:b0 . +_:b1 "2015-07-20T13:30:00Z"^^ . +_:b1 . +_:b1 . 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 new file mode 100644 index 00000000000..39050abb133 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..9d528523afa --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno35.nt @@ -0,0 +1,7 @@ +_:b0 _:b1 . +_:b0 . +_:b1 . +_:b1 "Accept: application/pdf" . + . + _:b0 . + . 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 new file mode 100644 index 00000000000..77581efb3df --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.json @@ -0,0 +1,22 @@ +{ + "@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 new file mode 100644 index 00000000000..aa27b88d835 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno36.nt @@ -0,0 +1,14 @@ +_:b2 . +_:b2 "Accept: application/pdf" . +_:b2 _:b3 . +_:b0 . +_:b0 _:b1 . +_:b3 "page=10" . +_:b3 . +_:b3 . +_:b1 "2016-02-01T12:05:23Z"^^ . +_:b1 . +_:b1 _:b2 . + _:b0 . + . + . 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 new file mode 100644 index 00000000000..96796db9a0b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..6b03f75dc6f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno37.nt @@ -0,0 +1,6 @@ +_:b0 . +_:b0 "red" . + . + _:b0 . + . + . 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 new file mode 100644 index 00000000000..67f24b80eae --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.json @@ -0,0 +1,14 @@ +{ + "@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 new file mode 100644 index 00000000000..0a05adbd1ba --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno38.nt @@ -0,0 +1,8 @@ +_:b1 "red" . +_:b1 . +_:b0 . +_:b0 ".red { color: red }" . + _:b0 . + . + _:b1 . + . 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 new file mode 100644 index 00000000000..27e639cd343 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.json @@ -0,0 +1,15 @@ +{ + "@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 new file mode 100644 index 00000000000..8905e96cdad --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno39.nt @@ -0,0 +1,8 @@ + . + . + _:b0 . + . + "2.5" . +_:b0 . +_:b0 . +_:b0 . 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 new file mode 100644 index 00000000000..5655fb39e13 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..32f8137b386 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno4.nt @@ -0,0 +1,5 @@ + . + . + . + "image/jpeg" . + . 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 new file mode 100644 index 00000000000..63b47f145c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.json @@ -0,0 +1,10 @@ +{ + "@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 new file mode 100644 index 00000000000..6afaad5a700 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno40.nt @@ -0,0 +1,5 @@ + . + _:b0 . + . +_:b0 . +_:b0 . 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 new file mode 100644 index 00000000000..80afc748948 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.json @@ -0,0 +1,82 @@ +{ + "@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 new file mode 100644 index 00000000000..5d5122e7d2d --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno41-example44.nt @@ -0,0 +1,56 @@ + "user1" . + "A. Person" . + . +_:b10 "6"^^ . +_:b10 "27"^^ . +_:b10 . + . + "de" . + . + . + "audio/mpeg" . +_:b7 _:b8 . +_:b7 . +_:b7 "Accept: application/xml" . +_:b3 "en" . +_:b3 . +_:b3 . +_:b3 . +_:b3 "text/plain" . +_:b3 "I really love this particular bit of text in this XML. No really." . +_:b2 _:b3 . +_:b2 _:b4 . +_:b1 . +_:b1 _:b2 . +_:b5 . +_:b5 . +_:b5 . + "2015-10-13T13:00:00Z"^^ . + _:b1 . + _:b0 . + . + . + "2015-10-14T15:13:28Z"^^ . + . + . + . + _:b6 . +_:b4 _:b5 . +_:b4 . +_:b9 _:b10 . +_:b9 . +_:b9 "xpointer(/doc/body/section[2]/para[1])" . +_:b0 . +_:b0 . +_:b0 "love" . + . + "Code v2.1" . + . + . +_:b8 "2015-09-25T12:00:00Z"^^ . +_:b8 . +_:b6 "mystyle" . +_:b6 _:b9 . +_:b6 . +_:b6 . +_:b6 _: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 new file mode 100644 index 00000000000..85532e87850 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.json @@ -0,0 +1,12 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno5", + "type":"Annotation", + "body": { + "type" : "TextualBody", + "value" : "

    j'adore !

    ", + "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 new file mode 100644 index 00000000000..cb0359fd2a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno5.nt @@ -0,0 +1,7 @@ + . + _:b0 . + . +_:b0 . +_:b0 "text/html" . +_:b0 "

    j'adore !

    " . +_:b0 "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 new file mode 100644 index 00000000000..9ae0d88eaee --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.json @@ -0,0 +1,7 @@ +{ + "@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 new file mode 100644 index 00000000000..4d99f2a8ced --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno6.nt @@ -0,0 +1,3 @@ + . + "Comment text" . + . 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 new file mode 100644 index 00000000000..9f821d22fb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..79707fade81 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno7.nt @@ -0,0 +1,6 @@ + . + _:b0 . + . +_:b0 "Comment text" . +_:b0 . +_:b0 "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 new file mode 100644 index 00000000000..3187af65746 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.json @@ -0,0 +1,6 @@ +{ + "@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 new file mode 100644 index 00000000000..72188231a95 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno8.nt @@ -0,0 +1,2 @@ + . + . 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 new file mode 100644 index 00000000000..8d72da3563f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.json @@ -0,0 +1,16 @@ +{ + "@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 new file mode 100644 index 00000000000..16f583209b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/anno9.nt @@ -0,0 +1,7 @@ +_:b0 "tag1" . +_:b0 . + . + _:b0 . + . + . + . 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 new file mode 100644 index 00000000000..e3a5d80c129 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.json @@ -0,0 +1,618 @@ + +{ + "@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" : "

    j'adore !

    ", + "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": " ... " + } + } + }, + { + "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 new file mode 100644 index 00000000000..4aa2fc29e34 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/collection1.nt @@ -0,0 +1,462 @@ +_:b3 . +_:b3 _:b4 . + _:b18 . + . + . + _:b17 . +_:b4 . +_:b4 _:b6 . +_:b37 . +_:b37 _:b38 . + . + . + . +_:b6 . +_:b6 _:b7 . +_:b15 . +_:b15 . +_:b1 . +_:b1 _:b2 . +_:b17 "These pages together provide evidence of the conspiracy" . +_:b17 . +_:b35 . +_:b35 _:b36 . + . + . + . + . + _:b11 . + _:b30 . + . + . + . +_:b23 "important" . +_:b23 . + . + . + _:b8 . + . + . + . +_:b31 . +_:b31 _:b32 . +_:b2 . +_:b2 _:b3 . + . + . + "Code v2.1" . + . + "en" . + . +_:b5 "fr" . +_:b5 "

    j'adore !

    " . +_:b5 "text/html" . +_:b5 . +_:b0 . +_:b0 _:b1 . +_:b60 "this is an " . +_:b60 . +_:b60 "anotation" . +_:b60 " that has some" . +_:b8 "Comment text" . +_:b8 "text/plain" . +_:b8 . + . +_:b41 "A good description of the topic that bears further investigation" . +_:b41 . +_:b41 . + . + . + . + "2014-06-02T17:00:00Z"^^ . + . + "41"^^ . + . + . + "Annotation Examples" . + "fr" . + "audio/mpeg" . + "0"^^ . + . + _:b0 . +_:b11 "tag1" . +_:b11 . +_:b20 . +_:b20 _:b21 . +_:b111 . +_:b111 "Accept: application/xml" . +_:b111 _:b112 . +_:b70 . +_:b70 _:b71 . +_:b91 "2016-02-01T12:05:23Z"^^ . +_:b91 _:b92 . +_:b91 . +_:b28 . +_:b28 . +_:b83 . +_:b83 _:b86 . + _:b24 . + . + . + _:b23 . + . +_:b84 . +_:b84 _:b85 . + . + . + . +_:b89 . +_:b89 _:b94 . + . + "Comment text" . + . + . +_:b18 . +_:b18 _:b19 . + . + "ar" . + "en" . + "application/pdf" . + "en" . +_:b74 _:b76 . +_:b74 _:b75 . +_:b74 . + _:b90 . + . + . +_:b66 "4104"^^ . +_:b66 "4096"^^ . +_:b66 . +_:b63 "795"^^ . +_:b63 "412"^^ . +_:b63 . +_:b36 . +_:b36 _:b37 . +_:b30 . +_:b30 _:b31 . +_:b33 . +_:b33 _:b34 . +_:b76 "//table[1]/tr[1]/td[4]" . +_:b76 . +_:b65 . +_:b65 _:b66 . + _:b78 . + . + . +_:b27 . +_:b27 _:b28 . + _:b73 . + . + . +_:b26 . +_:b26 _:b27 . + "fr" . +_:b24 . +_:b24 _:b25 . +_:b54 "#elemid > .elemclass + p" . +_:b54 . +_:b34 . +_:b34 . +_:b77 . +_:b77 _:b81 . + "58bad08927902ff9307b621c54716dcc5083e339" . + "My Pseudonym" . + "A. Person" . + "user1" . + "pseudo" . + . + _:b82 . + . + . + . + . + _:b45 . + _:b87 . + . + . +_:b103 . +_:b103 . +_:b97 ".red { color: red }" . +_:b97 . + _:b100 . + . + . +_:b49 . +_:b49 _:b52 . + . + _:b110 . + "2015-10-14T15:13:28Z"^^ . + . + "2015-10-13T13:00:00Z"^^ . + . + . + _:b105 . + _:b104 . + . +_:b73 . +_:b73 _:b74 . +_:b40 "readme" . +_:b40 . +_:b40 . +_:b67 . +_:b67 _:b69 . + . +_:b50 . +_:b50 _:b51 . +_:b50 . +_:b78 . +_:b78 _:b79 . +_:b94 . +_:b94 _:b96 . +_:b105 . +_:b105 _:b106 . +_:b102 . +_:b102 . + _:b102 . + . + . + . + . + . + . +_:b114 "27"^^ . +_:b114 "6"^^ . +_:b114 . +_:b99 . +_:b99 _:b101 . + "captions" . + . +_:b82 . +_:b82 . +_:b95 . +_:b95 "red" . +_:b101 . +_:b101 _:b103 . +_:b93 "page=10" . +_:b93 . +_:b93 . + . + . + . + _:b40 . + _:b41 . + . + . + . + . +_:b58 . +_:b58 _:b61 . +_:b61 . +_:b61 _:b64 . +_:b85 "2015-07-20T13:30:00Z"^^ . +_:b85 . +_:b85 . + . + . + _:b50 . + "image/jpeg" . + . +_:b81 . +_:b81 _:b83 . +_:b88 . +_:b88 "Accept: application/pdf" . +_:b57 "/html/body/p[2]/table/tr[2]/td[3]/span" . +_:b57 . +_:b55 . +_:b55 _:b58 . +_:b72 . +_:b72 _:b77 . +_:b47 . +_:b47 . + _:b84 . + . + . + _:b53 . + . + . +_:b104 "love" . +_:b104 . +_:b104 . +_:b22 . +_:b22 _:b29 . +_:b109 . +_:b109 . +_:b109 . +_:b29 . +_:b29 _:b35 . +_:b43 . +_:b43 _:b44 . + _:b70 . + . + . +_:b52 . +_:b52 _:b55 . + . + . + _:b5 . + . + . + . + . +_:b19 . +_:b19 _:b20 . + _:b48 . + . + _:b47 . +_:b13 . +_:b13 _:b14 . +_:b32 . +_:b32 _:b33 . +_:b80 "text before the " . +_:b80 . +_:b80 "Selected Text" . +_:b80 " and text after it" . +_:b48 . +_:b48 . + . + "de" . + "audio/mpeg" . + . +_:b113 "xpointer(/doc/body/section[2]/para[1])" . +_:b113 _:b114 . +_:b113 . + _:b98 . + _:b97 . + . + . +_:b69 . +_:b69 _:b72 . +_:b45 . +_:b45 . +_:b45 . + _:b68 . + . + . + . + . + . + . + . +_:b44 . +_:b44 _:b46 . +_:b92 . +_:b92 "Accept: application/pdf" . +_:b92 _:b93 . + _:b95 . + . + . + . + . +_:b112 "2015-09-25T12:00:00Z"^^ . +_:b112 . +_:b100 . +_:b100 . +_:b100 . +_:b71 " ... " . +_:b71 . +_:b108 _:b109 . +_:b108 . +_:b68 . +_:b68 . + "2.5" . + . + "teacher" . + . + . + . + "2015-02-04T12:00:00Z"^^ . + "2015-01-28T12:00:00Z"^^ . + . + "2015-01-29T09:00:00Z"^^ . + . + . +_:b107 . +_:b107 "en" . +_:b107 "I really love this particular bit of text in this XML. No really." . +_:b107 . +_:b107 . +_:b107 "text/plain" . +_:b98 . +_:b98 "red" . +_:b42 . +_:b42 _:b43 . +_:b90 . +_:b90 _:b91 . +_:b87 . +_:b87 _:b88 . +_:b79 "para5" . +_:b79 _:b80 . +_:b79 . +_:b110 . +_:b110 _:b113 . +_:b110 _:b111 . +_:b110 "mystyle" . +_:b110 . +_:b96 . +_:b96 _:b99 . +_:b14 . +_:b14 _:b15 . +_:b9 . +_:b9 _:b10 . +_:b25 . +_:b25 _:b26 . +_:b38 . +_:b38 _:b39 . + _:b56 . + . + . + _:b59 . + . + . + . + . +_:b16 . +_:b16 _:b22 . +_:b7 . +_:b7 _:b9 . +_:b53 . +_:b53 _:b54 . +_:b106 _:b107 . +_:b106 _:b108 . +_:b51 "t=30,60" . +_:b51 . +_:b51 . + . + . + . + . + . + _:b65 . + . + . +_:b39 . +_:b39 _:b42 . + . + . + _:b13 . + . + . + . +_:b10 . +_:b10 _:b12 . +_:b62 . +_:b62 _:b63 . +_:b12 . +_:b12 _:b16 . +_:b64 . +_:b64 _:b67 . +_:b46 . +_:b46 _:b49 . +_:b59 . +_:b59 _:b60 . +_:b75 "//table[1]/tr[1]/td[2]" . +_:b75 . + _:b62 . + . + . +_:b86 . +_:b86 _:b89 . +_:b21 . +_:b21 . +_:b56 . +_:b56 _: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 new file mode 100644 index 00000000000..0f5a4759efe --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.json @@ -0,0 +1,10 @@ +{ + "@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 new file mode 100644 index 00000000000..7d44e9be237 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example41.nt @@ -0,0 +1,6 @@ + . + . + "42023"^^ . + . + "Steampunk Annotations" . + . 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 new file mode 100644 index 00000000000..15306a55690 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.json @@ -0,0 +1,22 @@ +{ + "@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 new file mode 100644 index 00000000000..9d8934d991f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example42.nt @@ -0,0 +1,15 @@ + . + . + . + . + _:b0 . + . + . + "0"^^ . +_:b1 . +_:b1 . + . + . + . +_:b0 _:b1 . +_:b0 . 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 new file mode 100644 index 00000000000..15306a55690 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.json @@ -0,0 +1,22 @@ +{ + "@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 new file mode 100644 index 00000000000..16b8b3bc185 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/correct/example43.nt @@ -0,0 +1,15 @@ +_:b1 . +_:b1 . +_:b0 _:b1 . +_:b0 . + . + . + . + _:b0 . + "0"^^ . + . + . + . + . + . + . 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 new file mode 100644 index 00000000000..8c8155222d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno1.json @@ -0,0 +1 @@ +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 new file mode 100644 index 00000000000..23927866055 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno10.json @@ -0,0 +1,7 @@ +{ + "@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 new file mode 100644 index 00000000000..183a6bfd344 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno11.json @@ -0,0 +1,8 @@ +{ + "@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 new file mode 100644 index 00000000000..4d6e66730db --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno12.json @@ -0,0 +1,8 @@ +{ + "@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 new file mode 100644 index 00000000000..714b58fa7ba --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno13.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..984cf1c33b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno14.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..1ec07d34c58 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno15.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..83abbc3eca4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno16.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..40e5bfb6d6e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno17.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..d8ac1edcda0 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno18.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..14dc133e27d --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno19.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..7a73a41bfdf --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno2.json @@ -0,0 +1,2 @@ +{ +} \ 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 new file mode 100644 index 00000000000..66b2f1a3693 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno20.json @@ -0,0 +1,8 @@ +{ + "@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 new file mode 100644 index 00000000000..37faba142f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno21.json @@ -0,0 +1,8 @@ +{ + "@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 new file mode 100644 index 00000000000..ef1eaf9aab0 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno22.json @@ -0,0 +1,11 @@ +{ + "@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 new file mode 100644 index 00000000000..8d5610be4ab --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno23.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..66d088cf5e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno24.json @@ -0,0 +1,12 @@ +{ + "@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 new file mode 100644 index 00000000000..67346fcd28b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno25.json @@ -0,0 +1,10 @@ +{ + "@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 new file mode 100644 index 00000000000..2c0c161390e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno26.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..0cd8cc2317d --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno27.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..041fefd2225 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno28.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..ce48fc74c7b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno29.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..7afbb4f25c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno3.json @@ -0,0 +1,6 @@ +{ + "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 new file mode 100644 index 00000000000..fcadc17bc0b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno30.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..c857a12b004 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno31.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..cccc1accb23 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno32.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..267dfa4a7d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno33.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..c81b0fe1392 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno34.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..f2f590e8f98 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno35.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..d9bb4afed6c --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno36.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..072c5409c4e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno37.json @@ -0,0 +1,10 @@ +{ + "@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 new file mode 100644 index 00000000000..9da7c0b92e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno38.json @@ -0,0 +1,13 @@ +{ + "@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 new file mode 100644 index 00000000000..50510f807f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno39.json @@ -0,0 +1,14 @@ +{ + "@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 new file mode 100644 index 00000000000..a0aa6b996dd --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno4.json @@ -0,0 +1,7 @@ +{ + "@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 new file mode 100644 index 00000000000..12afee60224 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno5.json @@ -0,0 +1,9 @@ +{ + "@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 new file mode 100644 index 00000000000..eeb1b2edbb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno6.json @@ -0,0 +1,8 @@ +{ + "@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 new file mode 100644 index 00000000000..68cbff0e223 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno7.json @@ -0,0 +1,8 @@ +{ + "@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 new file mode 100644 index 00000000000..0f284244892 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno8.json @@ -0,0 +1,7 @@ +{ + "@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 new file mode 100644 index 00000000000..db0f8caf8a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/samples/incorrect/anno9.json @@ -0,0 +1,8 @@ +{ + "@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/annotation-vocab/tools/vocab_tester.py b/tests/wpt/web-platform-tests/annotation-vocab/tools/vocab_tester.py new file mode 100644 index 00000000000..873377c517f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/vocab_tester.py @@ -0,0 +1,240 @@ + +# Author: Rob Sanderson (azaroth42@gmail.com) +# License: Apache2 +# Last Modified: 2016-09-02 + +import json +from rdflib import ConjunctiveGraph, URIRef +from pyld import jsonld +from pyld.jsonld import compact, expand, frame, from_rdf, to_rdf, JsonLdProcessor +import urllib + +# Stop code from looking up the contexts online for every operation +docCache = {} + +def fetch(url): + fh = urllib.urlopen(url) + data = fh.read() + fh.close() + return data + +def load_document_and_cache(url): + if docCache.has_key(url): + return docCache[url] + + doc = { + 'contextUrl': None, + 'documentUrl': None, + 'document': '' + } + data = fetch(url) + doc['document'] = data; + docCache[url] = doc + return doc + +jsonld.set_document_loader(load_document_and_cache) + +class Validator(object): + + def __init__(self): + + self.rdflib_class_map = { + "Annotation": "oa:Annotation", + "Dataset": "dctypes:Dataset", + "Image": "dctypes:StillImage", + "Video": "dctypes:MovingImage", + "Audio": "dctypes:Sound", + "Text": "dctypes:Text", + "TextualBody": "oa:TextualBody", + "ResourceSelection": "oa:ResourceSelection", + "SpecificResource": "oa:SpecificResource", + "FragmentSelector": "oa:FragmentSelector", + "CssSelector": "oa:CssSelector", + "XPathSelector": "oa:XPathSelector", + "TextQuoteSelector": "oa:TextQuoteSelector", + "TextPositionSelector": "oa:TextPositionSelector", + "DataPositionSelector": "oa:DataPositionSelector", + "SvgSelector": "oa:SvgSelector", + "RangeSelector": "oa:RangeSelector", + "TimeState": "oa:TimeState", + "HttpState": "oa:HttpRequestState", + "CssStylesheet": "oa:CssStyle", + "Choice": "oa:Choice", + "Composite": "oa:Composite", + "List": "oa:List", + "Independents": "oa:Independents", + "Person": "foaf:Person", + "Software": "as:Application", + "Organization": "foaf:Organization", + "AnnotationCollection": "as:OrderedCollection", + "AnnotationPage": "as:OrderedCollectionPage", + "Audience": "schema:Audience" + } + + + def _clean_bnode_ids(self, js): + new = {} + for (k,v) in js.items(): + if k == 'id' and v.startswith("_:"): + continue + elif type(v) == dict: + # recurse + res = self._clean_bnode_ids(v) + new[k] = res + else: + new[k] = v + return new + + def _mk_rdflib_jsonld(self, js): + # rdflib's json-ld implementation sucks + # Pre-process to make it work + # recurse the structure looking for types, and replacing them. + new = {} + for (k,v) in js.items(): + if k == 'type': + if type(v) == list: + nl = [] + for i in v: + if self.rdflib_class_map.has_key(i): + nl.append(self.rdflib_class_map[i]) + new['type'] = nl + else: + if self.rdflib_class_map.has_key(v): + new['type'] = self.rdflib_class_map[v] + elif type(v) == dict: + # recurse + res = self._mk_rdflib_jsonld(v) + new[k] = res + else: + new[k] = v + return new + + def json_to_rdf(self, js, fmt=None): + d2 = self._mk_rdflib_jsonld(js) + js = json.dumps(d2) + g = ConjunctiveGraph() + g.parse(data=js, format='json-ld') + if fmt: + out = g.serialize(format=fmt) + return out + else: + return g + + def rdf_to_jsonld(self, rdf, fmt): + + g = ConjunctiveGraph() + g.parse(data=rdf, format=fmt) + out = g.serialize(format='json-ld') + + j2 = json.loads(out) + j2 = {"@context": context_js, "@graph": j2} + framed = frame(j2, frame_js) + out = compact(framed, context_js) + # recursively clean blank node ids + #out = self._clean_bnode_ids(out) + return out + + def compact_and_clean(self, js): + newjs = compact(js, context_js) + newjs['@context'] = context + if newjs.has_key("@graph"): + for k,v in newjs['@graph'].items(): + newjs[k] = v + del newjs['@graph'] + return newjs + +validator = Validator() + +example = "https://raw.githubusercontent.com/w3c/web-annotation/gh-pages/model/wd2/examples/correct/anno4.json" +example_ttl = "https://raw.githubusercontent.com/w3c/web-annotation/gh-pages/vocab/wd/examples/correct/anno1.ttl" +context = "http://www.w3.org/ns/anno.jsonld" +frameURI = "https://raw.githubusercontent.com/w3c/web-annotation/gh-pages/jsonld/annotation_frame.jsonld" +# ontology = "https://www.w3.org/ns/oa.ttl" +ontology = "https://raw.githubusercontent.com/w3c/web-annotation/gh-pages/vocab/wd/ontology/oa.ttl" + +data = fetch(context) +context_js = json.loads(data) +data = fetch(example) +example_js = json.loads(data) +data = fetch(frameURI) +frame_js = json.loads(data) + +# Test1: JSON-LD context document can be parsed without errors by JSON-LD validators +# Context document is parsable if it can be loaded and used to expand the example +try: + expanded = expand(example_js, context_js) +except: + print "Context is invalid, failed Test 1" + + +# Test2: JSON-LD context document can be used to convert JSON-LD serialized Annotations into RDF triples. +try: + jsonld_nq = to_rdf(example_js, {"base": "http://example.org/", "format": "application/nquads"}) +except: + print "Cannot use context to convert JSON-LD to NQuads" + + +# Test3: Graphs produced are isomorphic +try: + rl_g = validator.json_to_rdf(example_js) + g = ConjunctiveGraph() + js_g = g.parse(data=jsonld_nq, format="nt") + rl_g_nq = rl_g.serialize(format="nquads") + assert(len(rl_g.store) == len(js_g.store)) + assert(rl_g.isomorphic(js_g)) +except: + print "Different triples from two parsers, or non-isomorphic graphs" + + +# Test4: The graphs produced can be converted back into JSON-LD without loss of information +try: + js = validator.rdf_to_jsonld(jsonld_nq, "nt") + js2 = validator.compact_and_clean(js) + assert(js2 == example_js) +except: + print "Failed to recompact parsed data" + raise + + +# Test5: ontology documents can be parsed without errors by validators +try: + g = ConjunctiveGraph().parse(ontology, format="turtle") +except: + raise + + +# Test6: ontology is internally consistent with respect to domains, ranges, etc + +# step 1: find all the classes. +rdftype = URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") +rdfsdomain = URIRef("http://www.w3.org/2000/01/rdf-schema#domain") +rdfsrange = URIRef("http://www.w3.org/2000/01/rdf-schema#range") +rdfsresource = URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource") +rdfssco = URIRef("http://www.w3.org/2000/01/rdf-schema#subClassOf") +asColl = URIRef("http://www.w3.org/ns/activitystreams#OrderedCollection") +skosConcept = URIRef("http://www.w3.org/2004/02/skos/core#Concept") + +otherClasses = [asColl, skosConcept] +classes = list(g.subjects(rdftype, URIRef("http://www.w3.org/2000/01/rdf-schema#Class"))) +props = list(g.subjects(rdftype, URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"))) + +for p in props: + domains = list(g.objects(p, rdfsdomain)) + for d in domains: + assert(d in classes) + +for p in props: + ranges = list(g.objects(p, rdfsrange)) + for r in ranges: + if not r in classes and not str(r).startswith("http://www.w3.org/2001/XMLSchema#") and \ + not r == rdfsresource: + print "Found inconsistent property: %s has unknown range" % p + +for c in classes: + parents = list(g.objects(c, rdfssco)) + for p in parents: + if not p in classes and not p in otherClasses: + print "Found inconsistent class: %s has unknown superClass" % c + + +print "Done." diff --git a/tests/wpt/web-platform-tests/auxclick/OWNERS b/tests/wpt/web-platform-tests/auxclick/OWNERS new file mode 100644 index 00000000000..fe0105ee965 --- /dev/null +++ b/tests/wpt/web-platform-tests/auxclick/OWNERS @@ -0,0 +1 @@ +@NavidZ diff --git a/tests/wpt/web-platform-tests/auxclick/auxclick_event-manual.html b/tests/wpt/web-platform-tests/auxclick/auxclick_event-manual.html new file mode 100644 index 00000000000..786ebfaaebb --- /dev/null +++ b/tests/wpt/web-platform-tests/auxclick/auxclick_event-manual.html @@ -0,0 +1,65 @@ + + + + + Clicking with primary vs non-primary buttons + + + + + + +

    Clicking with primary vs non-primary buttons

    +

    Double-click on the green box with a non-primary button. When using mouse any button other than the left button is non-primary. If a "PASS" result appears, the test passes; otherwise, it fails.

    +
    + + + diff --git a/tests/wpt/web-platform-tests/check_stability.py b/tests/wpt/web-platform-tests/check_stability.py index 7b707212158..421f8cb1820 100644 --- a/tests/wpt/web-platform-tests/check_stability.py +++ b/tests/wpt/web-platform-tests/check_stability.py @@ -14,6 +14,7 @@ import zipfile from cStringIO import StringIO from collections import defaultdict from urlparse import urljoin +from tools.manifest import manifest import requests @@ -27,7 +28,6 @@ reader = None wptcommandline = None wptrunner = None - logger = logging.getLogger(os.path.splitext(__file__)[0]) @@ -89,13 +89,14 @@ class TravisFold(object): class GitHub(object): - def __init__(self, org, repo, token): + def __init__(self, org, repo, token, browser): self.token = token self.headers = {"Accept": "application/vnd.github.v3+json"} self.auth = (self.token, "x-oauth-basic") self.org = org self.repo = repo self.base_url = "https://api.github.com/repos/%s/%s/" % (org, repo) + self.browser = browser def _headers(self, headers): if headers is None: @@ -117,6 +118,19 @@ class GitHub(object): resp.raise_for_status() return resp + def patch(self, url, data, headers=None): + logger.debug("PATCH %s" % url) + if data is not None: + data = json.dumps(data) + resp = requests.patch( + url, + data=data, + headers=self._headers(headers), + auth=self.auth + ) + resp.raise_for_status() + return resp + def get(self, url, headers=None): logger.debug("GET %s" % url) resp = requests.get( @@ -128,8 +142,19 @@ class GitHub(object): return resp def post_comment(self, issue_number, body): - url = urljoin(self.base_url, "issues/%s/comments" % issue_number) - return self.post(url, {"body": body}) + user = self.get(urljoin(self.base_url, "/user")).json() + issue_comments_url = urljoin(self.base_url, "issues/%s/comments" % issue_number) + comments = self.get(issue_comments_url).json() + title_line = "# %s #" % self.browser.title() + data = {"body": body} + for comment in comments: + if (comment["user"]["login"] == user["login"] and + comment["body"].startswith(title_line)): + comment_url = urljoin(self.base_url, "issues/comments/%s" % comment["id"]) + self.patch(comment_url, data) + break + else: + self.post(issue_comments_url, data) def releases(self): url = urljoin(self.base_url, "releases/latest") @@ -167,7 +192,7 @@ class Firefox(Browser): def install(self): call("pip", "install", "-r", "w3c/wptrunner/requirements_firefox.txt") - resp = get("https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-52.0a1.en-US.linux-x86_64.tar.bz2") + resp = get("https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-53.0a1.en-US.linux-x86_64.tar.bz2") untar(resp.raw) if not os.path.exists("profiles"): @@ -192,7 +217,6 @@ class Firefox(Browser): assert latest_release != 0 return "v%s.%s.%s" % tuple(str(item) for item in latest_release) - def install_webdriver(self): version = self._latest_geckodriver_version() logger.debug("Latest geckodriver release %s" % version) @@ -244,7 +268,13 @@ def get(url): def call(*args): logger.debug("%s" % " ".join(args)) - return subprocess.check_output(args) + try: + return subprocess.check_output(args) + except subprocess.CalledProcessError as e: + logger.critical("%s exited with return code %i" % + (e.cmd, e.returncode)) + logger.critical(e.output) + raise def get_git_cmd(repo_path): @@ -288,7 +318,7 @@ def unzip(fileobj): def setup_github_logging(args): gh_handler = None if args.comment_pr: - github = GitHub("w3c", "web-platform-tests", args.gh_token) + github = GitHub("w3c", "web-platform-tests", args.gh_token, args.browser) try: pr_number = int(args.comment_pr) except ValueError: @@ -326,6 +356,7 @@ def get_sha1(): git = get_git_cmd(os.path.join(os.path.abspath(os.curdir), "w3c", "web-platform-tests")) return git("rev-parse", "HEAD").strip() + def build_manifest(): with pwd(os.path.join(os.path.abspath(os.curdir), "w3c", "web-platform-tests")): # TODO: Call the manifest code directly @@ -353,6 +384,52 @@ def get_files_changed(): for item in files[:-1].split("\0")] +def get_affected_testfiles(files_changed): + affected_testfiles = [] + all_tests = set() + nontests_changed = set(files_changed) + repo_root = os.path.abspath(os.path.join(os.path.abspath(os.curdir), "w3c", "web-platform-tests")) + manifest_file = os.path.join(repo_root, "MANIFEST.json") + for test, _ in manifest.load(repo_root, manifest_file): + test_full_path = os.path.join(repo_root, test) + all_tests.add(test_full_path) + if test_full_path in nontests_changed: + # Reduce the set of changed files to only non-tests. + nontests_changed.remove(test_full_path) + for changedfile_pathname in nontests_changed: + changed_file_repo_path = os.path.join(os.path.sep, os.path.relpath(changedfile_pathname, repo_root)) + os.path.normpath(changed_file_repo_path) + path_components = changed_file_repo_path.split(os.sep)[1:] + if len(path_components) < 2: + # This changed file is in the repo root, so skip it + # (because it's not part of any test). + continue + top_level_subdir = path_components[0] + if top_level_subdir in ["conformance-checkers", "docs"]: + continue + # OK, this changed file is the kind we care about: It's something + # other than a test (e.g., it's a .js or .json file), and it's + # somewhere down beneath one of the top-level "spec" directories. + # So now we try to find any tests that reference it. + for root, dirs, fnames in os.walk(os.path.join(repo_root, top_level_subdir)): + # Walk top_level_subdir looking for test files containing either the + # relative filepath or absolute filepatch to the changed file. + for fname in fnames: + testfile_full_path = os.path.join(root, fname) + # Skip any test file that's already in files_changed. + if testfile_full_path in files_changed: + continue + # Skip any file that's not a test file. + if testfile_full_path not in all_tests: + continue + with open(testfile_full_path, "r") as fh: + file_contents = fh.read() + changed_file_relpath = os.path.relpath(changedfile_pathname, root).replace(os.path.sep, "/") + if changed_file_relpath in file_contents or changed_file_repo_path.replace(os.path.sep, "/") in file_contents: + affected_testfiles.append(testfile_full_path) + return affected_testfiles + + def wptrunner_args(root, files_changed, iterations, browser): parser = wptcommandline.create_parser([browser.product]) args = vars(parser.parse_args([])) @@ -442,7 +519,7 @@ def table(headings, data, log): def write_inconsistent(inconsistent, iterations): logger.error("## Unstable results ##\n") strings = [("`%s`" % markdown_adjust(test), ("`%s`" % markdown_adjust(subtest)) if subtest else "", err_string(results, iterations)) - for test, subtest, results in inconsistent] + for test, subtest, results in inconsistent] table(["Test", "Subtest", "Results"], strings, logger.error) @@ -539,6 +616,12 @@ def main(): logger.debug("Files changed:\n%s" % "".join(" * %s\n" % item for item in files_changed)) + affected_testfiles = get_affected_testfiles(files_changed) + + logger.debug("Affected tests:\n%s" % "".join(" * %s\n" % item for item in affected_testfiles)) + + files_changed.extend(affected_testfiles) + browser = browser_cls(args.gh_token) browser.install() diff --git a/tests/wpt/web-platform-tests/clear-site-data/navigation.html b/tests/wpt/web-platform-tests/clear-site-data/navigation.html new file mode 100644 index 00000000000..cd0f83e17f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/clear-site-data/navigation.html @@ -0,0 +1,66 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/clear-site-data/support/echo-clear-site-data.py b/tests/wpt/web-platform-tests/clear-site-data/support/echo-clear-site-data.py new file mode 100644 index 00000000000..e8ec8d55327 --- /dev/null +++ b/tests/wpt/web-platform-tests/clear-site-data/support/echo-clear-site-data.py @@ -0,0 +1,40 @@ +import json + +RESPONSE = """ + + + + Clear-Site-Data + + + + + + +""" + +# A support server that receives a list of datatypes in the GET query +# and returns a Clear-Site-Data header with those datatypes. The content +# of the response is a html site using postMessage to report the status +# of the datatypes, so that if used in an iframe, it can inform the +# embedder whether the data deletion succeeded. +def main(request, response): + types = [key for key in request.GET.keys()] + header = json.dumps({ "types": types }) + return ([("Clear-Site-Data", header), + ("Content-Type", "text/html")], + RESPONSE) diff --git a/tests/wpt/web-platform-tests/clear-site-data/support/test_utils.js b/tests/wpt/web-platform-tests/clear-site-data/support/test_utils.js new file mode 100644 index 00000000000..6aff373f23a --- /dev/null +++ b/tests/wpt/web-platform-tests/clear-site-data/support/test_utils.js @@ -0,0 +1,89 @@ +var TestUtils = (function() { + function randomString() { + var result = ""; + for (var i = 0; i < 5; i++) + result += String.fromCharCode(97 + Math.floor(Math.random() * 26)); + return result; + }; + + /** + * Representation of one datatype. + * @typedef Datatype + * @type{object} + * @property{string} name Name of the datatype. + * @method{function():Void} add A function to add an instance of the datatype. + * @method{function():boolean} isEmpty A function that tests whether + * the datatype's storage backend is empty. + */ + var Datatype; + + var TestUtils = {}; + + /** + * All datatypes supported by Clear-Site-Data. + * @param{Array.} + */ + TestUtils.DATATYPES = [ + { + "name": "cookies", + "add": function() { + return new Promise(function(resolve, reject) { + document.cookie = randomString() + "=" + randomString(); + resolve(); + }); + }, + "isEmpty": function() { + return new Promise(function(resolve, reject) { + resolve(!document.cookie); + }); + } + }, + { + "name": "storage", + "add": function() { + return new Promise(function(resolve, reject) { + localStorage.setItem(randomString(), randomString()); + resolve(); + }); + }, + "isEmpty": function() { + return new Promise(function(resolve, reject) { + resolve(!localStorage.length); + }); + } + } + ]; + + /** + * All possible combinations of datatypes. + * @property {Array.>} + */ + TestUtils.COMBINATIONS = (function() { + var combinations = []; + for (var mask = 0; mask < (1 << TestUtils.DATATYPES.length); mask++) { + var combination = []; + + for (var datatype = 0; + datatype < TestUtils.DATATYPES.length; datatype++) { + if (mask & (1 << datatype)) + combination.push(TestUtils.DATATYPES[datatype]); + } + + combinations.push(combination); + } + return combinations; + })(); + + /** + * Get the support server URL that returns a Clear-Site-Data header + * to clear |datatypes|. + * @param{Array.} datatypes The list of datatypes to be deleted. + * @return string The URL to be queried. + */ + TestUtils.getClearSiteDataUrl = function(datatypes) { + names = datatypes.map(function(e) { return e.name }); + return "support/echo-clear-site-data.py?" + names.join("&"); + } + + return TestUtils; +})(); diff --git a/tests/wpt/web-platform-tests/common/redirect-opt-in.py b/tests/wpt/web-platform-tests/common/redirect-opt-in.py new file mode 100644 index 00000000000..ff5744b1815 --- /dev/null +++ b/tests/wpt/web-platform-tests/common/redirect-opt-in.py @@ -0,0 +1,20 @@ +def main(request, response): + """Simple handler that causes redirection. + + The request should typically have two query parameters: + status - The status to use for the redirection. Defaults to 302. + location - The resource to redirect to. + """ + status = 302 + if "status" in request.GET: + try: + status = int(request.GET.first("status")) + except ValueError: + pass + + response.status = status + + location = request.GET.first("location") + + response.headers.set("Location", location) + response.headers.set("Timing-Allow-Origin", "*") diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest-empty-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest-empty-novalid.html deleted file mode 100644 index 23b82f543ca..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest-empty-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -empty manifest is not valid - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest-whitespace-only-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest-whitespace-only-novalid.html deleted file mode 100644 index d9ee8070a02..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest-whitespace-only-novalid.html +++ /dev/null @@ -1,6 +0,0 @@ - - - -empty manifest is not valid - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-backslash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-backslash-novalid.html deleted file mode 100644 index 00259455e15..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-backslash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: fragment-backslash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-hash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-hash-novalid.html deleted file mode 100644 index 09d918e3eaa..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-hash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: fragment-contains-hash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-pile-of-poo-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-pile-of-poo-isvalid.html deleted file mode 100644 index fffad819a85..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-pile-of-poo-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: fragment-contains-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-question-mark-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-question-mark-isvalid.html deleted file mode 100644 index 19187c700c5..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-contains-question-mark-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: fragment-contains-question-mark - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-empty-hash-only-no-path-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-empty-hash-only-no-path-relative-isvalid.html deleted file mode 100644 index 27b57ce2372..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-empty-hash-only-no-path-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: fragment-empty-hash-only-no-path-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-leading-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-leading-space-novalid.html deleted file mode 100644 index c150d0835bb..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-leading-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: fragment-leading-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-non-ascii-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-non-ascii-relative-isvalid.html deleted file mode 100644 index fb991b68e62..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-non-ascii-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: fragment-non-ascii-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-semicolon-question-mark-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-semicolon-question-mark-relative-isvalid.html deleted file mode 100644 index ea5b805626e..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-semicolon-question-mark-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: fragment-semicolon-question-mark-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-slash-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-slash-relative-isvalid.html deleted file mode 100644 index 6ce956067fd..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/fragment-slash-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: fragment-slash-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-192.0x00A80001-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-192.0x00A80001-isvalid.html deleted file mode 100644 index 345fd9d6408..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-192.0x00A80001-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-192.0x00A80001 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-broken-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-broken-isvalid.html deleted file mode 100644 index 38865022c0f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-broken-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-IP-address-broken - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-fullwidth-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-fullwidth-isvalid.html deleted file mode 100644 index 10666ae29d1..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-fullwidth-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-IP-address-fullwidth - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-percent-encoded-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-percent-encoded-isvalid.html deleted file mode 100644 index 200da79baf8..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-IP-address-percent-encoded-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-IP-address-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-cr-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-cr-novalid.html deleted file mode 100644 index 67825718acd..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-cr-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-cr - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-double-percent-encoded-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-double-percent-encoded-novalid.html deleted file mode 100644 index e18e4216b9a..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-double-percent-encoded-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-double-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-double-percent-encoded-percent-encoded-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-double-percent-encoded-percent-encoded-novalid.html deleted file mode 100644 index b2f7fb39912..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-double-percent-encoded-percent-encoded-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-double-percent-encoded-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-novalid.html deleted file mode 100644 index c24cde01edd..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-empty - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-userinfo-empty-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-userinfo-empty-novalid.html deleted file mode 100644 index 36e22f73651..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-userinfo-empty-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-empty-userinfo-empty - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-with-userinfo-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-with-userinfo-novalid.html deleted file mode 100644 index 80b3f8f076c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-empty-with-userinfo-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-empty-with-userinfo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-exotic-dot-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-exotic-dot-isvalid.html deleted file mode 100644 index fa81d73b01f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-exotic-dot-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-exotic-dot - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-exotic-whitespace-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-exotic-whitespace-isvalid.html deleted file mode 100644 index 04d2499cace..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-exotic-whitespace-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-exotic-whitespace - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-fullwidth-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-fullwidth-isvalid.html deleted file mode 100644 index 9d355c9eac8..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-fullwidth-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-fullwidth - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-hostname-in-brackets-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-hostname-in-brackets-novalid.html deleted file mode 100644 index a651c000396..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-hostname-in-brackets-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-hostname-in-brackets - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-idn-unicode-han-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-idn-unicode-han-isvalid.html deleted file mode 100644 index 71e9530f5eb..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-idn-unicode-han-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-idn-unicode-han - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-invalid-unicode-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-invalid-unicode-novalid.html deleted file mode 100644 index d86538bd46a..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-invalid-unicode-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-invalid-unicode - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-invalid-unicode-percent-encoded-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-invalid-unicode-percent-encoded-novalid.html deleted file mode 100644 index c5a3810d492..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-invalid-unicode-percent-encoded-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-invalid-unicode-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-ipv6-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-ipv6-isvalid.html deleted file mode 100644 index c6cf132922c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-ipv6-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-ipv6 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-ipv6-port-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-ipv6-port-isvalid.html deleted file mode 100644 index 18292187adf..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-ipv6-port-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-ipv6-port - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-is-pile-of-poo-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-is-pile-of-poo-isvalid.html deleted file mode 100644 index a56696d181f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-is-pile-of-poo-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: host-is-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-newline-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-newline-novalid.html deleted file mode 100644 index 8b4f8e048da..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-newline-novalid.html +++ /dev/null @@ -1,6 +0,0 @@ - - - -invalid manifest: host-newline - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-space-novalid.html deleted file mode 100644 index 53d49012ee4..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-square-brackets-port-contains-colon-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-square-brackets-port-contains-colon-novalid.html deleted file mode 100644 index cb654811fea..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-square-brackets-port-contains-colon-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-square-brackets-port-contains-colon - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-tab-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-tab-novalid.html deleted file mode 100644 index abc896073db..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-tab-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-tab - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-u0000-percent-encoded-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-u0000-percent-encoded-novalid.html deleted file mode 100644 index f1f22dfb2fc..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-u0000-percent-encoded-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-u0000-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-u0000-percent-encoded-percent-encoded-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-u0000-percent-encoded-percent-encoded-novalid.html deleted file mode 100644 index bc5254117dd..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/host-u0000-percent-encoded-percent-encoded-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: host-u0000-percent-encoded-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-bare-percent-sign-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-bare-percent-sign-novalid.html deleted file mode 100644 index 39cb890aa76..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-bare-percent-sign-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-bare-percent-sign - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-colon-colon-number-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-colon-colon-number-relative-isvalid.html deleted file mode 100644 index 9110e619424..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-colon-colon-number-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-colon-colon-number-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-colon-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-colon-relative-isvalid.html deleted file mode 100644 index 9387fbf07e9..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-colon-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-colon-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-contains-pile-of-poo-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-contains-pile-of-poo-isvalid.html deleted file mode 100644 index 7fcc6f644dc..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-contains-pile-of-poo-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-contains-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-contains-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-contains-space-novalid.html deleted file mode 100644 index e44c2fbcb85..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-contains-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-contains-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-backslash-at-sign-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-backslash-at-sign-novalid.html deleted file mode 100644 index efc42dfb6b5..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-backslash-at-sign-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-leading-backslash-at-sign - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-backslash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-backslash-novalid.html deleted file mode 100644 index 7621629aa46..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-backslash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-leading-colon-backslash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-chars-backslash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-chars-backslash-novalid.html deleted file mode 100644 index 61407fb5373..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-chars-backslash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-leading-colon-chars-backslash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-chars-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-chars-relative-isvalid.html deleted file mode 100644 index d211906ba90..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-chars-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-leading-colon-chars-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-colon-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-colon-relative-isvalid.html deleted file mode 100644 index 82d824f61e5..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-colon-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-leading-colon-colon-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-hash-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-hash-relative-isvalid.html deleted file mode 100644 index 8e4165d0346..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-hash-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-leading-colon-hash-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-letter-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-letter-relative-isvalid.html deleted file mode 100644 index d60081dc7fe..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-letter-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-leading-colon-letter-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-number-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-number-relative-isvalid.html deleted file mode 100644 index d89a20bdadc..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-number-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-leading-colon-number-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-slash-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-slash-relative-isvalid.html deleted file mode 100644 index 246fd8028fa..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-colon-slash-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-leading-colon-slash-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-space-novalid.html deleted file mode 100644 index e723ed665f0..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-leading-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-leading-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-non-ascii-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-non-ascii-isvalid.html deleted file mode 100644 index 37ef395ea05..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-non-ascii-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-non-ascii - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-dot-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-dot-isvalid.html deleted file mode 100644 index 855f316cb95..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-dot-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-dot - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-malformed-novalid.html deleted file mode 100644 index f9bbb42f693..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-malformed-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-percent-encoded-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-mixed-case-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-mixed-case-isvalid.html deleted file mode 100644 index a8d9c9224b0..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-mixed-case-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-mixed-case - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-multiple-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-multiple-isvalid.html deleted file mode 100644 index 4e9cfb94ef9..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-multiple-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-multiple - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-slash-plus-slashes-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-slash-plus-slashes-relative-isvalid.html deleted file mode 100644 index 6e703da5c1f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-slash-plus-slashes-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-slash-plus-slashes-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-slash-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-slash-relative-isvalid.html deleted file mode 100644 index 113fa978adf..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-slash-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-slash-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-space-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-space-isvalid.html deleted file mode 100644 index 4bf72938b58..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-space-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-u0000-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-u0000-isvalid.html deleted file mode 100644 index 48173a3340a..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-u0000-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-u0000 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-u0091-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-u0091-isvalid.html deleted file mode 100644 index 5956032c258..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-percent-encoded-u0091-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-percent-encoded-u0091 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-relative-square-brackets-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-relative-square-brackets-novalid.html deleted file mode 100644 index 77b5bbc7822..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-relative-square-brackets-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-relative-square-brackets - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-simple-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-simple-relative-isvalid.html deleted file mode 100644 index 88927765855..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-simple-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-simple-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-slash-colon-number-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-slash-colon-number-relative-isvalid.html deleted file mode 100644 index e26fd678e46..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-slash-colon-number-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-slash-colon-number-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-slash-only-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-slash-only-relative-isvalid.html deleted file mode 100644 index f4094bfde59..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-slash-only-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-slash-only-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-starts-with-pile-of-poo-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-starts-with-pile-of-poo-isvalid.html deleted file mode 100644 index 8c54ac33d68..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-starts-with-pile-of-poo-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-starts-with-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-tab-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-tab-novalid.html deleted file mode 100644 index b895139445f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-tab-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-tab - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-trailing-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-trailing-space-novalid.html deleted file mode 100644 index 419ef427d3b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-trailing-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-trailing-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-u0091-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-u0091-novalid.html deleted file mode 100644 index 66e754ea0d5..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-u0091-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: path-u0091 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-u202E-u202D-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-u202E-u202D-isvalid.html deleted file mode 100644 index a2073bb1009..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-u202E-u202D-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-u202E-u202D - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-uFEFF-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-uFEFF-isvalid.html deleted file mode 100644 index 02d902a2845..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-uFEFF-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-uFEFF - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-unicode-han-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-unicode-han-isvalid.html deleted file mode 100644 index d7f33f0698b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/path-unicode-han-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: path-unicode-han - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-0-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-0-isvalid.html deleted file mode 100644 index bd79085dd7b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-0-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: port-0 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-00000000000000-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-00000000000000-isvalid.html deleted file mode 100644 index ed6136e5d23..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-00000000000000-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: port-00000000000000 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-00000000000000000000080-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-00000000000000000000080-isvalid.html deleted file mode 100644 index 4bebdf91e3f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-00000000000000000000080-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: port-00000000000000000000080 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html deleted file mode 100644 index d05e591ed81..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-999999 - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-cr-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-cr-novalid.html deleted file mode 100644 index 9e21524abde..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-cr-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-cr - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-colon-bracket-colon-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-colon-bracket-colon-novalid.html deleted file mode 100644 index 50987282911..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-colon-bracket-colon-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-leading-colon-bracket-colon - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-colon-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-colon-novalid.html deleted file mode 100644 index 605becab821..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-colon-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-leading-colon - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-dash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-dash-novalid.html deleted file mode 100644 index 01e665bfd67..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-leading-dash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-leading-dash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-multiple-letters-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-multiple-letters-novalid.html deleted file mode 100644 index b01820a613b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-multiple-letters-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-multiple-letters - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-newline-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-newline-novalid.html deleted file mode 100644 index 4afb34049a8..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-newline-novalid.html +++ /dev/null @@ -1,6 +0,0 @@ - - - -invalid manifest: port-newline - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-none-but-colon-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-none-but-colon-isvalid.html deleted file mode 100644 index 1138973c4dd..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-none-but-colon-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: port-none-but-colon - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-single-letter-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-single-letter-novalid.html deleted file mode 100644 index 69c5a649fe1..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-single-letter-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-single-letter - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-space-novalid.html deleted file mode 100644 index 6c64dd7d81a..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-tab-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-tab-novalid.html deleted file mode 100644 index 0c3c9691c8d..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-tab-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: port-tab - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-contains-pile-of-poo-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-contains-pile-of-poo-isvalid.html deleted file mode 100644 index d87dab24702..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-contains-pile-of-poo-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: query-contains-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-contains-question-mark-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-contains-question-mark-isvalid.html deleted file mode 100644 index 6bcfa74c11f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-contains-question-mark-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: query-contains-question-mark - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-empty-no-path-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-empty-no-path-relative-isvalid.html deleted file mode 100644 index ccf1cd817b8..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-empty-no-path-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: query-empty-no-path-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-leading-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-leading-space-novalid.html deleted file mode 100644 index 121125a2794..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-leading-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: query-leading-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-trailing-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-trailing-space-novalid.html deleted file mode 100644 index 5580a23fbd5..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/query-trailing-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: query-trailing-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-contains-fragment-haswarn.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-contains-fragment-haswarn.html deleted file mode 100644 index 270fe8bc35a..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-contains-fragment-haswarn.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -manifest warning: scheme-data-contains-fragment - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-no-slash-isvalid.html deleted file mode 100644 index 56853b148ae..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-data-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-single-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-single-slash-novalid.html deleted file mode 100644 index ddd8293b10b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-data-single-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-data-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-backslash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-backslash-novalid.html deleted file mode 100644 index 3117d0284b8..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-backslash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-file-backslash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-host-empty-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-host-empty-isvalid.html deleted file mode 100644 index f51329c0674..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-host-empty-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-host-empty - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-host-included-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-host-included-isvalid.html deleted file mode 100644 index f62e9596539..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-host-included-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-host-included - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-no-slash-isvalid.html deleted file mode 100644 index 3706aaed2b1..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-scheme-only-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-scheme-only-isvalid.html deleted file mode 100644 index 37ddc808038..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-scheme-only-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-scheme-only - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-single-slash-c-bar-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-single-slash-c-bar-novalid.html deleted file mode 100644 index 90700a420e2..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-single-slash-c-bar-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-file-single-slash-c-bar - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-single-slash-isvalid.html deleted file mode 100644 index ccac15caf1d..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-only-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-only-isvalid.html deleted file mode 100644 index bd2b8514bbe..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-only-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-slash-only - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-abc-bar-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-abc-bar-isvalid.html deleted file mode 100644 index 2321c0c45db..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-abc-bar-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-slash-slash-abc-bar - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-c-bar-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-c-bar-isvalid.html deleted file mode 100644 index 0743f63b6ed..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-c-bar-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-slash-slash-c-bar - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-only-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-only-isvalid.html deleted file mode 100644 index 32ac621a3b8..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-only-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-slash-slash-only - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-slash-only-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-slash-only-isvalid.html deleted file mode 100644 index b4707389417..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-slash-slash-slash-only-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-slash-slash-slash-only - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-triple-slash-c-bar-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-triple-slash-c-bar-novalid.html deleted file mode 100644 index a511e345edb..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-triple-slash-c-bar-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-file-triple-slash-c-bar - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-uppercase-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-uppercase-isvalid.html deleted file mode 100644 index 061784e82c7..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-file-uppercase-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-file-uppercase - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftp-no-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftp-no-slash-novalid.html deleted file mode 100644 index 64d78da68c3..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftp-no-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-ftp-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftp-single-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftp-single-slash-novalid.html deleted file mode 100644 index 40564d9ca99..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftp-single-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-ftp-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftps-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftps-no-slash-isvalid.html deleted file mode 100644 index 02ef1d62654..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftps-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-ftps-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftps-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftps-single-slash-isvalid.html deleted file mode 100644 index 45366356e5e..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ftps-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-ftps-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-gopher-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-gopher-no-slash-isvalid.html deleted file mode 100644 index 38270e19e88..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-gopher-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-gopher-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-gopher-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-gopher-single-slash-isvalid.html deleted file mode 100644 index dfcb01513f9..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-gopher-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-gopher-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-backslash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-backslash-novalid.html deleted file mode 100644 index 1096e1b4c8c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-backslash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-http-backslash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-colon-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-colon-novalid.html deleted file mode 100644 index de4733f4338..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-colon-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-http-no-slash-colon - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-novalid.html deleted file mode 100644 index b080bfc8073..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-http-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-square-bracket-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-square-bracket-novalid.html deleted file mode 100644 index bbf05a5e18e..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-no-slash-square-bracket-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-http-no-slash-square-bracket - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-single-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-single-slash-novalid.html deleted file mode 100644 index 5268c6061a0..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-http-single-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-http-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-https-no-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-https-no-slash-novalid.html deleted file mode 100644 index 591686d950f..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-https-no-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-https-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-https-single-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-https-single-slash-novalid.html deleted file mode 100644 index edb658d6e12..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-https-single-slash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-https-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-javascript-no-slash-malformed-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-javascript-no-slash-malformed-novalid.html deleted file mode 100644 index f1a91bbe3c1..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-javascript-no-slash-malformed-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-javascript-no-slash-malformed - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-javascript-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-javascript-single-slash-isvalid.html deleted file mode 100644 index 306b7ac94d7..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-javascript-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-javascript-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-mailto-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-mailto-no-slash-isvalid.html deleted file mode 100644 index b55c8a8a36b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-mailto-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-mailto-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-mailto-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-mailto-single-slash-isvalid.html deleted file mode 100644 index d29dc5e9a92..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-mailto-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-mailto-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-none-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-none-relative-isvalid.html deleted file mode 100644 index d1a0642c8d4..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-none-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-none-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-isvalid.html deleted file mode 100644 index e0ba7493279..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-no-slash-isvalid.html deleted file mode 100644 index 676da6f3ba0..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-isvalid.html deleted file mode 100644 index c839f760ab4..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-path - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-chars-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-chars-isvalid.html deleted file mode 100644 index 9881ee4168a..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-chars-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-path-leading-slashes-chars - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-colon-slashes-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-colon-slashes-isvalid.html deleted file mode 100644 index 08aeb85c8f7..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-colon-slashes-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-path-leading-slashes-colon-slashes - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-only-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-only-isvalid.html deleted file mode 100644 index 90aee1d494d..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-path-leading-slashes-only-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-path-leading-slashes-only - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-single-letter-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-single-letter-isvalid.html deleted file mode 100644 index 88e344a114c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-single-letter-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-single-letter - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-single-slash-isvalid.html deleted file mode 100644 index 385ccceac94..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-slash-isvalid.html deleted file mode 100644 index 4f1b38b394c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-slash-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-slash-slash-isvalid.html deleted file mode 100644 index d7444534694..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-private-slash-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-private-slash-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-schemeless-relative-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-schemeless-relative-isvalid.html deleted file mode 100644 index e2eb5fcc691..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-schemeless-relative-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-schemeless-relative - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-cr-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-cr-novalid.html deleted file mode 100644 index dd9f4173a79..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-cr-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-trailing-cr - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-newline-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-newline-novalid.html deleted file mode 100644 index a7ec3ec3a55..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-newline-novalid.html +++ /dev/null @@ -1,6 +0,0 @@ - - - -invalid manifest: scheme-trailing-newline - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-space-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-space-novalid.html deleted file mode 100644 index 5118f88b51e..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-space-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-trailing-space - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-tab-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-tab-novalid.html deleted file mode 100644 index 200a48c6deb..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-trailing-tab-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: scheme-trailing-tab - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ws-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ws-single-slash-isvalid.html deleted file mode 100644 index e8c33f70941..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-ws-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-ws-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-wss-no-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-wss-no-slash-isvalid.html deleted file mode 100644 index 4b60718498c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-wss-no-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-wss-no-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-wss-single-slash-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-wss-single-slash-isvalid.html deleted file mode 100644 index a86f5617f8c..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/scheme-wss-single-slash-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: scheme-wss-single-slash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-backslash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-backslash-novalid.html deleted file mode 100644 index d20219825bb..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-backslash-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: userinfo-backslash - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-empty-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-empty-isvalid.html deleted file mode 100644 index 82a49feca48..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-empty-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo-empty - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-host-port-path-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-host-port-path-isvalid.html deleted file mode 100644 index 7ec46ffeaff..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-host-port-path-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo-host-port-path - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-isvalid.html deleted file mode 100644 index c7008c60e21..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-bad-chars-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-bad-chars-novalid.html deleted file mode 100644 index 3b846b44fc6..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-bad-chars-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: userinfo-password-bad-chars - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-contains-pile-of-poo-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-contains-pile-of-poo-novalid.html deleted file mode 100644 index 6f9774c053b..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-contains-pile-of-poo-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: userinfo-password-contains-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-empty-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-empty-isvalid.html deleted file mode 100644 index 51add89dc6e..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-password-empty-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo-password-empty - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-user-empty-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-user-empty-isvalid.html deleted file mode 100644 index 1da26e7edc7..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-user-empty-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo-user-empty - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-at-sign-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-at-sign-novalid.html deleted file mode 100644 index 2856f570442..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-at-sign-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: userinfo-username-contains-at-sign - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-percent-encoded-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-percent-encoded-isvalid.html deleted file mode 100644 index fa4a2223a52..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-percent-encoded-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo-username-contains-percent-encoded - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-pile-of-poo-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-pile-of-poo-novalid.html deleted file mode 100644 index ce1e91b321d..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-contains-pile-of-poo-novalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -invalid manifest: userinfo-username-contains-pile-of-poo - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-non-alpha-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-non-alpha-isvalid.html deleted file mode 100644 index e5339b98d21..00000000000 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/userinfo-username-non-alpha-isvalid.html +++ /dev/null @@ -1,5 +0,0 @@ - - - -valid manifest: userinfo-username-non-alpha - diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/model-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/model-isvalid.html index 45e29ed72ef..f726659dc2c 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/model-isvalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/model-isvalid.html @@ -16,21 +16,5 @@ src="uri" class="class" lang="en">

    - -

    strictly inline - -

    -

    paragraph - -

    -

    strictly inline - -

    diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/challenge-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/challenge-novalid.html similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/challenge-isvalid.html rename to tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/challenge-novalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/keytype-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/keytype-novalid.html similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/keytype-isvalid.html rename to tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/keytype-novalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/model-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/model-also-novalid.html similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/model-isvalid.html rename to tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/model-also-novalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/no-attributes-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/no-attributes-novalid.html similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/no-attributes-isvalid.html rename to tests/wpt/web-platform-tests/conformance-checkers/html/elements/keygen/no-attributes-novalid.html diff --git a/tests/wpt/web-platform-tests/conformance-checkers/messages.json b/tests/wpt/web-platform-tests/conformance-checkers/messages.json index 0ec6b541ff8..b59b14ec996 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/messages.json +++ b/tests/wpt/web-platform-tests/conformance-checkers/messages.json @@ -841,73 +841,6 @@ "html/elements/header/nested-footer-novalid.html": "The element \u201cfooter\u201d must not appear as a descendant of the \u201cheader\u201d element.", "html/elements/header/nested-header-novalid.html": "The element \u201cheader\u201d must not appear as a descendant of the \u201cheader\u201d element.", "html/elements/hr/model-novalid.html": "No \u201cp\u201d element in scope but a \u201cp\u201d end tag seen.", - "html/elements/html/manifest-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Must be non-empty.", - "html/elements/html/manifest-whitespace-only-novalid.html": "Bad value \u201c\t \n\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Must be non-empty.", - "html/elements/html/manifest/fragment-backslash-novalid.html": "Bad value \u201c#\\\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in fragment: \u201c\\\u201d is not allowed.", - "html/elements/html/manifest/fragment-contains-hash-novalid.html": "Bad value \u201chttp://foo/path#f#g\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in fragment: \u201c#\u201d is not allowed.", - "html/elements/html/manifest/fragment-leading-space-novalid.html": "Bad value \u201chttp://f:21/b# e\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in fragment: space is not allowed.", - "html/elements/html/manifest/host-cr-novalid.html": "Bad value \u201chttp://example.\norg\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/host-double-percent-encoded-novalid.html": "Bad value \u201chttp://\uff05\uff14\uff11.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: Illegal character in domain: \u201c%\u201d is not allowed.", - "html/elements/html/manifest/host-double-percent-encoded-percent-encoded-novalid.html": "Bad value \u201chttp://%ef%bc%85%ef%bc%94%ef%bc%91.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: Illegal character in domain: \u201c%\u201d is not allowed.", - "html/elements/html/manifest/host-empty-novalid.html": "Bad value \u201chttp://\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: empty host.", - "html/elements/html/manifest/host-empty-userinfo-empty-novalid.html": "Bad value \u201chttp://@/www.example.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: empty host.", - "html/elements/html/manifest/host-empty-with-userinfo-novalid.html": "Bad value \u201chttp://user:pass@/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: empty host.", - "html/elements/html/manifest/host-hostname-in-brackets-novalid.html": "Bad value \u201chttp://[www.google.com]/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: Illegal character.", - "html/elements/html/manifest/host-invalid-unicode-novalid.html": "Forbidden code point U+fdd0.", - "html/elements/html/manifest/host-invalid-unicode-percent-encoded-novalid.html": "Bad value \u201chttp://%ef%b7%90zyx.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: A label or domain name contains disallowed characters..", - "html/elements/html/manifest/host-newline-novalid.html": "Bad value \u201chttp://example.\norg\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/host-space-novalid.html": "Bad value \u201chttp://example .org\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: Illegal character in domain: space is not allowed.", - "html/elements/html/manifest/host-square-brackets-port-contains-colon-novalid.html": "Bad value \u201chttp://[1::2]:3:4\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", - "html/elements/html/manifest/host-tab-novalid.html": "Bad value \u201chttp://example\t.org\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/host-u0000-percent-encoded-novalid.html": "Bad value \u201chttp://\uff05\uff10\uff10.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: Illegal character in domain: \u201c%\u201d is not allowed.", - "html/elements/html/manifest/host-u0000-percent-encoded-percent-encoded-novalid.html": "Bad value \u201chttp://%ef%bc%85%ef%bc%90%ef%bc%90.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Invalid host: Illegal character in domain: \u201c%\u201d is not allowed.", - "html/elements/html/manifest/path-bare-percent-sign-novalid.html": "Bad value \u201chttp://example.com/foo%\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Percentage (\"%\") is not followed by two hexadecimal digits.", - "html/elements/html/manifest/path-contains-space-novalid.html": "Bad value \u201c/a/ /c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: space is not allowed.", - "html/elements/html/manifest/path-leading-backslash-at-sign-novalid.html": "Bad value \u201chttp://foo.com/\\@\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Backslash (\"\\\") used as path segment delimiter.", - "html/elements/html/manifest/path-leading-colon-backslash-novalid.html": "Bad value \u201c:\\\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Backslash (\"\\\") used as path segment delimiter.", - "html/elements/html/manifest/path-leading-colon-chars-backslash-novalid.html": "Bad value \u201c:foo.com\\\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Backslash (\"\\\") used as path segment delimiter.", - "html/elements/html/manifest/path-leading-space-novalid.html": "Bad value \u201chttp://f:21/ b\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: space is not allowed.", - "html/elements/html/manifest/path-percent-encoded-malformed-novalid.html": "Bad value \u201chttp://example.com/foo/%2e%2\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Percentage (\"%\") is not followed by two hexadecimal digits.", - "html/elements/html/manifest/path-relative-square-brackets-novalid.html": "Bad value \u201c[61:24:74]:98\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: \u201c[\u201d is not allowed.", - "html/elements/html/manifest/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: space is not allowed.", - "html/elements/html/manifest/path-u0091-novalid.html": "Forbidden code point U+0091.", - "html/elements/html/manifest/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Port number must be less than 65536.", - "html/elements/html/manifest/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", - "html/elements/html/manifest/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", - "html/elements/html/manifest/port-leading-dash-novalid.html": "Bad value \u201chttp://foo:-80/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c-\u201d is not allowed.", - "html/elements/html/manifest/port-multiple-letters-novalid.html": "Bad value \u201chttp://f:fifty-two/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201cf\u201d is not allowed.", - "html/elements/html/manifest/port-newline-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/port-single-letter-novalid.html": "Bad value \u201chttp://f:b/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201cb\u201d is not allowed.", - "html/elements/html/manifest/port-space-novalid.html": "Bad value \u201chttp://f: /c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c \u201d is not allowed.", - "html/elements/html/manifest/port-tab-novalid.html": "Bad value \u201chttp://f:\t/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", - "html/elements/html/manifest/query-leading-space-novalid.html": "Bad value \u201chttp://f:21/b? d\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in query: space is not allowed.", - "html/elements/html/manifest/query-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b?d #\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in query: space is not allowed.", - "html/elements/html/manifest/scheme-data-contains-fragment-haswarn.html": "Bad value \u201cdata:text/html,test#test\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Fragment is not allowed for data: URIs according to RFC 2397.", - "html/elements/html/manifest/scheme-data-single-slash-novalid.html": "Bad value \u201cdata:/example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a token character or a semicolon but saw \u201c/\u201d instead.", - "html/elements/html/manifest/scheme-file-backslash-novalid.html": "Bad value \u201cfile:c:\\foo\\bar.html\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Backslash (\"\\\") used as path segment delimiter.", - "html/elements/html/manifest/scheme-file-single-slash-c-bar-novalid.html": "Bad value \u201cfile:/C|/foo/bar\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: \u201c|\u201d is not allowed.", - "html/elements/html/manifest/scheme-file-triple-slash-c-bar-novalid.html": "Bad value \u201cfile:///C|/foo/bar\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: \u201c|\u201d is not allowed.", - "html/elements/html/manifest/scheme-ftp-no-slash-novalid.html": "Bad value \u201cftp:example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-ftp-single-slash-novalid.html": "Bad value \u201cftp:/example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-http-backslash-novalid.html": "Bad value \u201chttp:\\\\foo.com\\\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-http-no-slash-colon-novalid.html": "Bad value \u201chttp::@c:29\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-http-no-slash-novalid.html": "Bad value \u201chttp:foo.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-http-no-slash-square-bracket-novalid.html": "Bad value \u201chttp:[61:27]/:foo\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-http-single-slash-novalid.html": "Bad value \u201chttp:/example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-https-no-slash-novalid.html": "Bad value \u201chttps:example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-https-single-slash-novalid.html": "Bad value \u201chttps:/example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Expected a slash (\"/\").", - "html/elements/html/manifest/scheme-javascript-no-slash-malformed-novalid.html": "Bad value \u201cjavascript:example.com/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: syntax error", - "html/elements/html/manifest/scheme-trailing-cr-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", - "html/elements/html/manifest/scheme-trailing-newline-novalid.html": "Bad value \u201ca:\nfoo.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in scheme data: line break is not allowed.", - "html/elements/html/manifest/scheme-trailing-space-novalid.html": "Bad value \u201ca: foo.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in scheme data: space is not allowed.", - "html/elements/html/manifest/scheme-trailing-tab-novalid.html": "Bad value \u201ca:\tfoo.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in scheme data: tab is not allowed.", - "html/elements/html/manifest/userinfo-backslash-novalid.html": "Bad value \u201chttp://a\\b:c\\d@foo.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Backslash (\"\\\") used as path segment delimiter.", - "html/elements/html/manifest/userinfo-password-bad-chars-novalid.html": "Bad value \u201chttp://&a:foo(b]c@d:2/\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in user or password: \u201c]\u201d is not allowed.", - "html/elements/html/manifest/userinfo-password-contains-pile-of-poo-novalid.html": "Bad value \u201chttp://foo:\ud83d\udca9@example.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in user or password: \u201c\ud83d\udca9\u201d is not allowed.", - "html/elements/html/manifest/userinfo-username-contains-at-sign-novalid.html": "Bad value \u201chttp://::@c@d:2\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: User or password contains an at symbol (\"@\") not percent-encoded.", - "html/elements/html/manifest/userinfo-username-contains-pile-of-poo-novalid.html": "Bad value \u201chttp://\ud83d\udca9:foo@example.com\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in user or password: \u201c\ud83d\udca9\u201d is not allowed.", "html/elements/i/model-novalid.html": "End tag \u201cp\u201d implied, but there were open elements.", "html/elements/iframe/model-novalid.html": "The \u201cframeborder\u201d attribute on the \u201ciframe\u201d element is obsolete. Use CSS instead.", "html/elements/iframe/src-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Must be non-empty.", @@ -1482,13 +1415,17 @@ "html/elements/ins/year-novalid.html": "Bad value \u201c2006\u201d for attribute \u201cdatetime\u201d on element \u201cins\u201d: Bad datetime with timezone: The literal did not satisfy the datetime with timezone format. Bad date: The literal did not satisfy the date format.", "html/elements/ins/yearless-date-novalid.html": "Bad value \u201c07-15\u201d for attribute \u201cdatetime\u201d on element \u201cins\u201d: Bad datetime with timezone: The literal did not satisfy the datetime with timezone format. Bad date: The literal did not satisfy the date format.", "html/elements/kbd/model-novalid.html": "End tag \u201cp\u201d implied, but there were open elements.", - "html/elements/keygen/id-bad-novalid.html": "Any \u201ckeygen\u201d descendant of a \u201clabel\u201d element with a \u201cfor\u201d attribute must have an ID value that matches that \u201cfor\u201d attribute.", - "html/elements/keygen/id-missing-novalid.html": "Any \u201ckeygen\u201d descendant of a \u201clabel\u201d element with a \u201cfor\u201d attribute must have an ID value that matches that \u201cfor\u201d attribute.", - "html/elements/keygen/id-redundant-novalid.html": "The \u201clabel\u201d element may contain at most one \u201cbutton\u201d, \u201cinput\u201d, \u201ckeygen\u201d, \u201cmeter\u201d, \u201coutput\u201d, \u201cprogress\u201d, \u201cselect\u201d, or \u201ctextarea\u201d descendant.", + "html/elements/keygen/challenge-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/id-bad-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/id-missing-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/id-redundant-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", "html/elements/keygen/keytype-bad-value-novalid.html": "Bad value \u201cdsa\u201d for attribute \u201ckeytype\u201d on element \u201ckeygen\u201d.", "html/elements/keygen/keytype-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201ckeytype\u201d on element \u201ckeygen\u201d.", - "html/elements/keygen/model-novalid.html": "The element \u201ckeygen\u201d must not appear as a descendant of the \u201ca\u201d element.", - "html/elements/keygen/non-void-novalid.html": "Stray end tag \u201ckeygen\u201d.", + "html/elements/keygen/keytype-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/model-also-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/model-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/no-attributes-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", + "html/elements/keygen/non-void-novalid.html": "The \u201ckeygen\u201d element is obsolete. ", "html/elements/label/for-descendant-no-id-novalid.html": "Any \u201cinput\u201d descendant of a \u201clabel\u201d element with a \u201cfor\u201d attribute must have an ID value that matches that \u201cfor\u201d attribute.", "html/elements/label/multiple-descendants-novalid.html": "The \u201clabel\u201d element may contain at most one \u201cbutton\u201d, \u201cinput\u201d, \u201ckeygen\u201d, \u201cmeter\u201d, \u201coutput\u201d, \u201cprogress\u201d, \u201cselect\u201d, or \u201ctextarea\u201d descendant.", "html/elements/link/href-empty-novalid.html": "Bad value \u201c\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Must be non-empty.", @@ -2474,18 +2411,23 @@ "xhtml/elements/img/004-novalid.xhtml": "The element \u201cimg\u201d with the attribute \u201cusemap\u201d must not appear as a descendant of the \u201ca\u201d element.", "xhtml/elements/img/051-novalid.xhtml": "Bad value \u201c-1\u201d for attribute \u201cwidth\u201d on element \u201cimg\u201d: Bad non-negative integer: Expected a digit but saw \u201c-\u201d instead.", "xhtml/elements/input/003-novalid.xhtml": "The \u201clist\u201d attribute of the \u201cinput\u201d element must refer to a \u201cdatalist\u201d element.", - "xhtml/elements/keygen/054-novalid.xhtml": "Text not allowed in element \u201ckeygen\u201d in this context.", + "xhtml/elements/keygen/054-also-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/054-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/055-also-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/056-also-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", "xhtml/elements/keygen/056-novalid.xhtml": "Bad value \u201cdsa\u201d for attribute \u201ckeytype\u201d on element \u201ckeygen\u201d.", + "xhtml/elements/keygen/057-also-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", "xhtml/elements/keygen/057-novalid.xhtml": "Bad value \u201c\u201d for attribute \u201ckeytype\u201d on element \u201ckeygen\u201d.", - "xhtml/elements/keygen/058-novalid.xhtml": "Any \u201ckeygen\u201d descendant of a \u201clabel\u201d element with a \u201cfor\u201d attribute must have an ID value that matches that \u201cfor\u201d attribute.", - "xhtml/elements/keygen/059-novalid.xhtml": "Any \u201ckeygen\u201d descendant of a \u201clabel\u201d element with a \u201cfor\u201d attribute must have an ID value that matches that \u201cfor\u201d attribute.", - "xhtml/elements/keygen/060-novalid.xhtml": "The \u201clabel\u201d element may contain at most one \u201cbutton\u201d, \u201cinput\u201d, \u201ckeygen\u201d, \u201cmeter\u201d, \u201coutput\u201d, \u201cprogress\u201d, \u201cselect\u201d, or \u201ctextarea\u201d descendant.", - "xhtml/elements/keygen/061-novalid.xhtml": "The element \u201ckeygen\u201d must not appear as a descendant of the \u201ca\u201d element.", - "xhtml/elements/keygen/154-novalid.xhtml": "Text not allowed in element \u201ckeygen\u201d in this context.", + "xhtml/elements/keygen/058-also-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/058-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/059-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/060-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/061-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/154-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", "xhtml/elements/keygen/157-novalid.xhtml": "Bad value \u201c\u201d for attribute \u201ckeytype\u201d on element \u201ckeygen\u201d.", - "xhtml/elements/keygen/359-novalid.xhtml": "Any \u201ckeygen\u201d descendant of a \u201clabel\u201d element with a \u201cfor\u201d attribute must have an ID value that matches that \u201cfor\u201d attribute.", - "xhtml/elements/keygen/360-novalid.xhtml": "The \u201clabel\u201d element may contain at most one \u201cbutton\u201d, \u201cinput\u201d, \u201ckeygen\u201d, \u201cmeter\u201d, \u201coutput\u201d, \u201cprogress\u201d, \u201cselect\u201d, or \u201ctextarea\u201d descendant.", - "xhtml/elements/keygen/361-novalid.xhtml": "The element \u201ckeygen\u201d must not appear as a descendant of the \u201ca\u201d element.", + "xhtml/elements/keygen/359-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/360-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", + "xhtml/elements/keygen/361-novalid.xhtml": "The \u201ckeygen\u201d element is obsolete. ", "xhtml/elements/link/001-novalid.xhtml": "Element \u201clink\u201d is missing required attribute \u201chref\u201d.", "xhtml/elements/menu/001-haswarn.xhtml": "The \u201cmenu\u201d element is not supported in all browsers. Please be sure to test, and consider using a polyfill.", "xhtml/elements/menu/001-novalid.xhtml": "The \u201ccontextmenu\u201d attribute must refer to a \u201cmenu\u201d element.", diff --git a/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py b/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py index 21fd27e3e41..9fe4d3f05ca 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py +++ b/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py @@ -202,7 +202,6 @@ element_attribute_pairs = [ "del cite", "embed src", "form action", - "html manifest", "iframe src", "img src", # srcset is tested elsewhere "input formaction", # type=submit, type=image @@ -235,14 +234,6 @@ def write_novalid_files(): f.write(template + 'invalid %s: %s\n' % (attr, desc)) f.write('<%s %s="%s">\n' % (el, attr, url)) f.close() - elif ("html" == el): - f = open(os.path.join(ccdir, "html/elements/html/manifest/%s-novalid.html" % desc), 'wb') - f.write('\n') - f.write('\n' % url) - f.write('\n') - f.write('invalid manifest: %s\n' % desc) - f.write('\n') - f.close() elif ("img" == el): f = open(os.path.join(ccdir, "html/elements/img/src/%s-novalid.html" % desc), 'wb') f.write(template + 'invalid src: %s\n' % desc) @@ -310,14 +301,6 @@ def write_haswarn_files(): f.write(template + '%s warning: %s\n' % (attr, desc)) f.write('<%s %s="%s">\n' % (el, attr, url)) f.close() - elif ("html" == el): - f = open(os.path.join(ccdir, "html/elements/html/manifest/%s-haswarn.html" % desc), 'wb') - f.write('\n') - f.write('\n' % url) - f.write('\n') - f.write('%s warning: %s\n' % (attr, desc)) - f.write('\n') - f.close() elif ("img" == el): f = open(os.path.join(ccdir, "html/elements/img/src/%s-haswarn.html" % desc), 'wb') f.write(template + '%s warning: %s\n' % (attr, desc)) @@ -416,13 +399,6 @@ def write_isvalid_files(): f.write(template + 'valid href: %s\n' % desc) f.write('\n' % url) f.close() - f = open(os.path.join(ccdir, "html/elements/html/manifest/%s-isvalid.html" % desc), 'wb') - f.write('\n') - f.write('\n' % url) - f.write('\n') - f.write('valid manifest: %s\n' % desc) - f.write('\n') - f.close() f = open(os.path.join(ccdir, "html/elements/meta/refresh-isvalid.html"), 'wb') f.write(template + 'valid meta refresh\n') for desc, url in valid.items(): diff --git a/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/054-isvalid.xhtml b/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/054-also-novalid.xhtml similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/054-isvalid.xhtml rename to tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/054-also-novalid.xhtml diff --git a/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/055-isvalid.xhtml b/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/055-also-novalid.xhtml similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/055-isvalid.xhtml rename to tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/055-also-novalid.xhtml diff --git a/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/056-isvalid.xhtml b/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/056-also-novalid.xhtml similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/056-isvalid.xhtml rename to tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/056-also-novalid.xhtml diff --git a/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/057-isvalid.xhtml b/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/057-also-novalid.xhtml similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/057-isvalid.xhtml rename to tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/057-also-novalid.xhtml diff --git a/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/058-isvalid.xhtml b/tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/058-also-novalid.xhtml similarity index 100% rename from tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/058-isvalid.xhtml rename to tests/wpt/web-platform-tests/conformance-checkers/xhtml/elements/keygen/058-also-novalid.xhtml diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/allow_csp_from-header.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/allow_csp_from-header.html new file mode 100644 index 00000000000..a806caf456f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/allow_csp_from-header.html @@ -0,0 +1,88 @@ + + + +Embedded Enforcement: Allow-CSP-From header. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/embedding_csp-header.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/embedding_csp-header.html new file mode 100644 index 00000000000..424233a3ad8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/embedding_csp-header.html @@ -0,0 +1,78 @@ + + + +Embedded Enforcement: Embedding-CSP header. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/iframe-csp-attribute.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/iframe-csp-attribute.html new file mode 100644 index 00000000000..f23be1d0e92 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/iframe-csp-attribute.html @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-general.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-general.html new file mode 100644 index 00000000000..f8e6b0bd0f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-general.html @@ -0,0 +1,54 @@ + + + +Embedded Enforcement: Subsumption Algorithm - Basic implementation. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-hashes.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-hashes.html new file mode 100644 index 00000000000..c4990b518c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-hashes.html @@ -0,0 +1,80 @@ + + + +Embedded Enforcement: Subsumption Algorithm - Hashes. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-hosts.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-hosts.html new file mode 100644 index 00000000000..096c565062f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-hosts.html @@ -0,0 +1,42 @@ + + + +Embedded Enforcement: Subsumption Algorithm - Host parts in host source expressions. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-paths.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-paths.html new file mode 100644 index 00000000000..6a3320875f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-paths.html @@ -0,0 +1,58 @@ + + + +Embedded Enforcement: Subsumption Algorithm - Path parts in host source expressions. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-ports.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-ports.html new file mode 100644 index 00000000000..1b72b30387a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-ports.html @@ -0,0 +1,82 @@ + + + +Embedded Enforcement: Subsumption Algorithm - Port parts in host source expressions. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-protocols.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-protocols.html new file mode 100644 index 00000000000..cb4f686043b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-host_sources-protocols.html @@ -0,0 +1,66 @@ + + + +Embedded Enforcement: Subsumption Algorithm - Scheme parts in host source expressions. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-none.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-none.html new file mode 100644 index 00000000000..98abe7d8355 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-none.html @@ -0,0 +1,113 @@ + + + +Embedded Enforcement: Subsumption Algorithm - 'none' keyword. + + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-self.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-self.html new file mode 100644 index 00000000000..9d08d24daba --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-self.html @@ -0,0 +1,49 @@ + + + +Embedded Enforcement: Subsumption Algorithm - 'self' keyword. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-strict_dynamic.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-strict_dynamic.html new file mode 100644 index 00000000000..b3e0ea15bdc --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-strict_dynamic.html @@ -0,0 +1,68 @@ + + + +Embedded Enforcement: Subsumption Algorithm - 'strict-dynamic' keyword. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_eval.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_eval.html new file mode 100644 index 00000000000..e111f152f80 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_eval.html @@ -0,0 +1,54 @@ + + + +Embedded Enforcement: Subsumption Algorithm - 'unsafe-eval' keyword. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html new file mode 100644 index 00000000000..889210c253a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_hashed_attributes.html @@ -0,0 +1,54 @@ + + + +Embedded Enforcement: Subsumption Algorithm - 'unsafe-hashed-attributes' keyword. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_inline.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_inline.html new file mode 100644 index 00000000000..96f0e38699b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/subsumption_algorithm-unsafe_inline.html @@ -0,0 +1,103 @@ + + + +Embedded Enforcement: Subsumption Algorithm - 'unsafe-inline' keyword. + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-allow-csp-from.py b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-allow-csp-from.py new file mode 100644 index 00000000000..fa1064adc84 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-allow-csp-from.py @@ -0,0 +1,37 @@ +import json +def main(request, response): + headers = [("Content-Type", "text/html")] + if "allow_csp_from" in request.GET: + headers.append(("Allow-CSP-From", request.GET["allow_csp_from"])) + message = request.GET["id"] + return headers, ''' + + + + This page enforces embedder's policies + + + + + + + +''' % (message, message) diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-embedding-csp.py b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-embedding-csp.py new file mode 100644 index 00000000000..cdf02f2bb25 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-embedding-csp.py @@ -0,0 +1,15 @@ +import json +def main(request, response): + header = request.headers.get("Embedding-CSP"); + message = {} + message['embedding_csp'] = header if header else None + return [("Content-Type", "text/html"), ("Allow-CSP-From", "*")], ''' + + + + + + +'''.format(json.dumps(message)) diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-policy-multiple.py b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-policy-multiple.py new file mode 100644 index 00000000000..8100086a3d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/echo-policy-multiple.py @@ -0,0 +1,25 @@ +def main(request, response): + headers = [("Content-Type", "text/html")] + if "policy" in request.GET: + headers.append(("Content-Security-Policy", request.GET["policy"])) + if "policy2" in request.GET: + headers.append(("Content-Security-Policy", request.GET["policy2"])) + if "policy3" in request.GET: + headers.append(("Content-Security-Policy", request.GET["policy3"])) + message = request.GET["id"] + return headers, ''' + + + + This page sets given CSP upon itself. + + + + + +''' % (message) diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js new file mode 100644 index 00000000000..c5f07e9bd45 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js @@ -0,0 +1,136 @@ +const Host = { + SAME_ORIGIN: "same-origin", + CROSS_ORIGIN: "cross-origin", +}; + +const PolicyHeader = { + CSP: "echo-policy.py?policy=", + CSP_MULTIPLE: "echo-policy-multiple.py", + EMBEDDING_CSP: "echo-embedding-csp.py", + ALLOW_CSP_FROM: "echo-allow-csp-from.py", +}; + +const IframeLoad = { + EXPECT_BLOCK: true, + EXPECT_LOAD: false, +}; + +function getOrigin() { + var url = new URL("http://{{host}}:{{ports[http][0]}}/"); + return url.toString(); +} + +function getCrossOrigin() { + var url = new URL("http://{{domains[天気の良い日]}}:{{ports[http][0]}}/"); + return url.toString(); +} + +function getSecureCrossOrigin() { + // Since wptserve spins up servers on non-default port, 'self' matches + // http://[host]:[specified-port] and https://[host]:[specified-port], but not + // https://[host]:[https-port]. So, we use the http port for this https origin + // in order to verify that a secure variant of a non-secure URL matches 'self'. + var url = new URL("https://{{domains[天気の良い日]}}:{{ports[http][0]}}"); + return url.toString(); +} + +function generateURL(host, path) { + var url = new URL("http://{{host}}:{{ports[http][0]}}/content-security-policy/embedded-enforcement/support/"); + url.hostname = host == Host.SAME_ORIGIN ? "{{host}}" : "{{domains[天気の良い日]}}"; + url.pathname += path; + + return url; +} + +function generateURLString(host, path) { + return generateURL(host, path).toString(); +} + +function generateRedirect(host, target) { + var url = new URL("http://{{host}}:{{ports[http][0]}}/common/redirect.py?location=" + + encodeURIComponent(target)); + url.hostname = host == Host.SAME_ORIGIN ? "{{host}}" : "{{domains[天気の良い日]}}"; + + return url.toString(); +} + +function generateUrlWithPolicies(host, policy) { + var url = generateURL(host, PolicyHeader.CSP_MULTIPLE); + if (policy != null) + url.searchParams.append("policy", policy); + return url; +} + +function generateUrlWithAllowCSPFrom(host, allowCspFrom) { + var url = generateURL(host, PolicyHeader.ALLOW_CSP_FROM); + if (allowCspFrom != null) + url.searchParams.append("allow_csp_from", allowCspFrom); + return url; +} + +function assert_embedding_csp(t, url, csp, expected) { + var i = document.createElement('iframe'); + if(csp) + i.csp = csp; + i.src = url; + + window.addEventListener('message', t.step_func(e => { + if (e.source != i.contentWindow || !('embedding_csp' in e.data)) + return; + assert_equals(expected, e.data['embedding_csp']); + t.done(); + })); + + document.body.appendChild(i); +} + +function assert_iframe_with_csp(t, url, csp, shouldBlock, urlId, blockedURI) { + var i = document.createElement('iframe'); + url.searchParams.append("id", urlId); + i.src = url.toString(); + if (csp != null) + i.csp = csp; + + var loaded = {}; + window.addEventListener("message", function (e) { + if (e.source != i.contentWindow) + return; + if (e.data["loaded"]) + loaded[e.data["id"]] = true; + }); + + if (shouldBlock) { + // Assert iframe does not load and is inaccessible. + window.onmessage = function (e) { + if (e.source != i.contentWindow) + return; + t.unreached_func('No message should be sent from the frame.'); + } + i.onload = t.step_func(function () { + // Delay the check until after the postMessage has a chance to execute. + setTimeout(t.step_func_done(function () { + assert_equals(loaded[urlId], undefined); + }), 1); + assert_throws("SecurityError", () => { + var x = i.contentWindow.location.href; + }); + }); + } else if (blockedURI) { + // Assert iframe loads with an expected violation. + window.addEventListener('message', t.step_func(e => { + if (e.source != i.contentWindow) + return; + assert_equals(e.data["blockedURI"], blockedURI); + t.done(); + })); + } else { + // Assert iframe loads. + i.onload = t.step_func(function () { + // Delay the check until after the postMessage has a chance to execute. + setTimeout(t.step_func_done(function () { + assert_true(loaded[urlId]); + }), 1); + }); + } + document.body.appendChild(i); +} diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigation/to-javascript-url.html b/tests/wpt/web-platform-tests/content-security-policy/navigation/to-javascript-url.html index d882330cece..6c120adac20 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/navigation/to-javascript-url.html +++ b/tests/wpt/web-platform-tests/content-security-policy/navigation/to-javascript-url.html @@ -3,26 +3,41 @@ + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html new file mode 100644 index 00000000000..3a6151b10f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html @@ -0,0 +1,32 @@ + + + + + Script injected via `javascript:` URIs are not allowed with `strict-dynamic`. + + + + + + + +

    Script injected via `javascript:` URIs are not allowed with `strict-dynamic`.

    +
    + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html.headers new file mode 100644 index 00000000000..b7918c93323 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html.headers @@ -0,0 +1,5 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Content-Security-Policy: script-src 'strict-dynamic' 'nonce-dummy' diff --git a/tests/wpt/web-platform-tests/cssom-view/elementFromPoint.html b/tests/wpt/web-platform-tests/cssom-view/elementFromPoint.html index 3ae4a9dbfe0..c530064f1e7 100644 --- a/tests/wpt/web-platform-tests/cssom-view/elementFromPoint.html +++ b/tests/wpt/web-platform-tests/cssom-view/elementFromPoint.html @@ -100,6 +100,7 @@ test(function () { var svg = document.getElementById('squiggle'); + svg.scrollIntoView(); var svgRect = svg.getBoundingClientRect(); assert_equals(document.elementFromPoint(svgRect.left + Math.round(svgRect.width/2), svgRect.top + Math.round(svgRect.height/2)), @@ -109,6 +110,7 @@ test(function () { var svg = document.getElementById('svg-transform'); + svg.scrollIntoView(); var svgRect = svg.getBoundingClientRect(); assert_equals(document.elementFromPoint(svgRect.left + Math.round(svgRect.width/2), svgRect.top + Math.round(svgRect.height/2)), @@ -116,6 +118,7 @@ "Should have returned SVG with Hello WPT! that has a transform"); var pink = document.getElementById('pink'); + pink.scrollIntoView(); var pinkRect = pink.getBoundingClientRect(); assert_equals(document.elementFromPoint(pinkRect.left + Math.round(pinkRect.width/2), pinkRect.top + Math.round(pinkRect.height/2)), @@ -126,11 +129,12 @@ test(function () { var anotherteal = document.getElementById('anotherteal'); + anotherteal.scrollIntoView(); var anothertealRect = anotherteal.getBoundingClientRect(); assert_equals(document.elementFromPoint(anothertealRect.left + Math.round(anothertealRect.width/2), anothertealRect.top + Math.round(anothertealRect.height/2)), document.body, - "Should have returned the root"); + "Should have returned the root as it has pointer-events:none"); var doc = frames[2].document; doc.removeChild(doc.documentElement); @@ -145,11 +149,23 @@ }, "No viewport available"); test(function () { + // HTML says: + // Pointing device interaction with an image associated with a set of layered shapes per + // the above algorithm must result in the relevant user interaction events being first + // fired to the top-most shape covering the point that the pointing device indicated, if + // any, or to the image element itself, if there is no shape covering that point. + // https://html.spec.whatwg.org/multipage/embedded-content.html#image-map-processing-model var area = document.getElementById('rectG'); + var image = document.getElementById('dinos'); + area.scrollIntoView(); var areaRect = area.getBoundingClientRect(); assert_equals(document.elementFromPoint(areaRect.left + Math.round(areaRect.width/2), areaRect.top + Math.round(areaRect.height/2)), area, + "Should have returned the area element"); + assert_equals(document.elementFromPoint(areaRect.left + 92, + areaRect.top + 2), + image, "Should have returned the image element"); }, "Image Maps"); done(); diff --git a/tests/wpt/web-platform-tests/cssom-view/scrollingElement.html b/tests/wpt/web-platform-tests/cssom-view/scrollingElement.html index abede49cf2c..a438541120d 100644 --- a/tests/wpt/web-platform-tests/cssom-view/scrollingElement.html +++ b/tests/wpt/web-platform-tests/cssom-view/scrollingElement.html @@ -9,7 +9,7 @@ - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html b/tests/wpt/web-platform-tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html deleted file mode 100644 index 64252ab49d8..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html +++ /dev/null @@ -1,54 +0,0 @@ - - - -Chars allowed for custom element type - - - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/concepts/custom-elements-type-naming.html b/tests/wpt/web-platform-tests/custom-elements/v0/concepts/custom-elements-type-naming.html deleted file mode 100644 index c05f1ccdeb4..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/concepts/custom-elements-type-naming.html +++ /dev/null @@ -1,65 +0,0 @@ - - - -The custom element type is a sequence of characters that must match the NCName production and contain a minus character - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html deleted file mode 100644 index 597f15c2154..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/new-registry-test.html +++ /dev/null @@ -1,39 +0,0 @@ - - - -When an HTML Document is loaded in a browsing context, a new registry must be created and associated with this document - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html deleted file mode 100644 index d936fd34f7b..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/no-registry-test.html +++ /dev/null @@ -1,48 +0,0 @@ - - - -New document without browsing context must not have a registry - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html b/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html deleted file mode 100644 index 64244f169c8..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/share-registry-create-document.html +++ /dev/null @@ -1,51 +0,0 @@ - - - -Document, created with createHTMLDocument or createDocument with HTML namespace, should share registry with the associated document - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html b/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html deleted file mode 100644 index 251e4f123ee..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/creating-and-passing-registries/share-registry-import-document.html +++ /dev/null @@ -1,95 +0,0 @@ - - - -When creating an import, use the registry of the master document - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html deleted file mode 100644 index 97fb735607c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/enqueuing-and-invoking-callbacks/invoke-callbacks.html +++ /dev/null @@ -1,60 +0,0 @@ - - - -Invoke CALLBACK with ELEMENT as callback this value - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html deleted file mode 100644 index df4df553525..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-move-element-test.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -Attached callback of a custom element should be called if element is moved - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html deleted file mode 100644 index a4cc0b746cc..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attached-callback-test.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -Attached callback of a custom element should be called - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html deleted file mode 100644 index cd5f3a4b8c6..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-change-attribute-test.html +++ /dev/null @@ -1,229 +0,0 @@ - - - -Test attributeChanged callback is called if custom element attribute value is changed - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html deleted file mode 100644 index fb451b074cc..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-remove-attribute-test.html +++ /dev/null @@ -1,166 +0,0 @@ - - - -Test attribute removing to check attributeChanged callback of a custom element - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html deleted file mode 100644 index 1c4ab8618a9..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/attribute-changed-callback-set-attribute-test.html +++ /dev/null @@ -1,338 +0,0 @@ - - - -Test attributeChanged callback is called if custom element attribute value is set - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html deleted file mode 100644 index 188957c1ac0..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-element-prototype-test.html +++ /dev/null @@ -1,87 +0,0 @@ - - - -The custom element prototype must be set just prior to invoking created callback - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html deleted file mode 100644 index b0f2d5ee8bf..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-order-test.html +++ /dev/null @@ -1,242 +0,0 @@ - - - -All other callbacks must not be enqueued until after the created callback's invocation had started - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html deleted file mode 100644 index 63814a80f50..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/created-callback-invocation-test.html +++ /dev/null @@ -1,167 +0,0 @@ - - - -Created callback of a custom element should be invoked after custom element instance is created and its definition is registered - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html deleted file mode 100644 index d69eb54dbb4..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-move-element-test.html +++ /dev/null @@ -1,130 +0,0 @@ - - - -Test detached callback of a custom element when moving custom element between different documents - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html deleted file mode 100644 index 2b420d11c2c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-no-browsing-context-test.html +++ /dev/null @@ -1,147 +0,0 @@ - - - -Detached callback of a custom element should not be called if document has no browsing context - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html b/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html deleted file mode 100644 index 31b06a9079c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/custom-element-lifecycle/types-of-callbacks/detached-callback-with-browsing-context-test.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -Detached callback of a custom element should be called if document has browsing context - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/changing-is-attribute.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/changing-is-attribute.html deleted file mode 100644 index fb4338840a8..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/changing-is-attribute.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -Changing IS attribute of the custom element must not affect this element's custom element type, after element is instantiated - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html deleted file mode 100644 index 0e18bf65105..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-is-attribute.html +++ /dev/null @@ -1,49 +0,0 @@ - - - -Custom element constructor sets value of IS attribute to custom element type, if it is not equal to name - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html deleted file mode 100644 index 28f6ca33ff2..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-local-name.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Custom element constructor sets local name to the name from custom element definition - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html deleted file mode 100644 index 7278086ac87..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-namespace.html +++ /dev/null @@ -1,43 +0,0 @@ - - - -Custom element constructor sets local namespace to the namespace from custom element definition - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html deleted file mode 100644 index 3112b36da3e..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-node-document.html +++ /dev/null @@ -1,100 +0,0 @@ - - - -Custom element constructor sets owner document to the document, where custom element type is registered - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html deleted file mode 100644 index 0158af511d1..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-constructor-prototype.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Custom element constructor prototype is the prototype object specified in element definition - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-prototype.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-prototype.html deleted file mode 100644 index 2b298ea7439..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-prototype.html +++ /dev/null @@ -1,30 +0,0 @@ - - - -Custom element prototype is the prototype object specified in element definition - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html deleted file mode 100644 index c18290d0e14..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-is-attribute.html +++ /dev/null @@ -1,73 +0,0 @@ - - - -Instantiation of custom element: custom element type is given as the value of the IS attribute - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html deleted file mode 100644 index c55e2cc25f6..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-local-name-and-is-attribute.html +++ /dev/null @@ -1,101 +0,0 @@ - - - -Instantiation of custom element: the custom tag must win over the type extension - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-local-name.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-local-name.html deleted file mode 100644 index 0f0d46f0a39..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/custom-element-type-local-name.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -Instantiation of custom element: custom element type is given via the local name of the custom element - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html deleted file mode 100644 index f59d6dcb82f..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-local-name.html +++ /dev/null @@ -1,43 +0,0 @@ - - - -Document.createElement() and Document.createElementNS() create custom element of type, specified by localName argument - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html deleted file mode 100644 index 3df04267627..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-interface-type-is-a-type-extension.html +++ /dev/null @@ -1,69 +0,0 @@ - - - -Document.createElement() and Document.createElementNS() create custom element of type, specified by typeExtension argument - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html deleted file mode 100644 index 374ec5922a8..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-is-attribute.html +++ /dev/null @@ -1,71 +0,0 @@ - - - -Document.createElement() and Document.createElementNS() set IS attribute to type - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html deleted file mode 100644 index 60d50121923..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-namespace.html +++ /dev/null @@ -1,68 +0,0 @@ - - - -Document.createElement() sets custom element namespace to HTML Namespace - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html deleted file mode 100644 index ce7c933e21a..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-is-a-type.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Document.createElement() and Document.createElementNS() create custom element of type, specified by typeExtension argument - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html deleted file mode 100644 index 3eaadf31251..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-extension-unresolved.html +++ /dev/null @@ -1,49 +0,0 @@ - - - -Document.createElement() and Document.createElementNS() create custom element of type, specified by localName argument - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html deleted file mode 100644 index 487b14b9dcc..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/create-element-type-is-a-local-name.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -Document.createElement() and Document.createElementNS() create custom element of type, specified by single localName argument - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html deleted file mode 100644 index 7bf09601cb8..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element-ns.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -Document.createElementNS() must enqueue created callback for registered custom element type - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html deleted file mode 100644 index dc05e01e17c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/extensions-to-document-interface/created-callback-create-element.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -Document.createElement() must enqueue created callback for registered custom element type - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html deleted file mode 100644 index ddb1ff9de97..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/non-configurable-constructor-property.html +++ /dev/null @@ -1,41 +0,0 @@ - - - -If prototype has a non-configurable property named constructor, Document.registerElement() throws NotSupportedError - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html deleted file mode 100644 index ad7f454f50c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/prototype-is-interface-prototype-object.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -If prototype is already an interface prototype object, Document.registerElement() throws a NotSupportedError - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/unchanged-attribute.html b/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/unchanged-attribute.html deleted file mode 100644 index 3baa174cb5f..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/instantiating/unchanged-attribute.html +++ /dev/null @@ -1,29 +0,0 @@ - - -Custom element's type is immutable. - - - - - -
    - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html deleted file mode 100644 index 6a1f532c785..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-default-namespace.html +++ /dev/null @@ -1,43 +0,0 @@ - - - -Default namespace is HTML namespace - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html deleted file mode 100644 index b3f661c4fde..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-duplicate-definition.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Check duplicate definition - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html deleted file mode 100644 index 5f2c09b4bbd..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-invalid-type.html +++ /dev/null @@ -1,22 +0,0 @@ - - - -If TYPE is an invalid custom element type, throw SyntaxError - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html deleted file mode 100644 index 7725e2efa54..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-local-name-lowercased.html +++ /dev/null @@ -1,32 +0,0 @@ - - - -Custom element local name should be converted to lower case if document is an HTML document - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html deleted file mode 100644 index 2b76818d6e6..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-name-is-null.html +++ /dev/null @@ -1,40 +0,0 @@ - - - -If NAME is null then localName must be set to TYPE - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html deleted file mode 100644 index 6d72d60df9a..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-no-interface-for-name.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -If element interface for name doesn't exists then error must be thrown - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html deleted file mode 100644 index dd6b61059b0..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace-name-is-null.html +++ /dev/null @@ -1,36 +0,0 @@ - - - -If namespace is SVG namespace and name is null then error must be thrown - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html deleted file mode 100644 index 497de2919fc..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-svg-namespace.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -For SVG prototype namespace is SVG namespace - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html deleted file mode 100644 index 38dce801c00..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/definition-construction-algorithm-type-name-lowercased.html +++ /dev/null @@ -1,41 +0,0 @@ - - - -Custom element type should be converted to lower case - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html deleted file mode 100644 index 6e9c20be30c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/element-registration-algorithm-no-registry.html +++ /dev/null @@ -1,39 +0,0 @@ - - - -If document has no registry NotSupportedError is thrown - - - - - - - - -
    - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html deleted file mode 100644 index e276e834a4a..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-name.html +++ /dev/null @@ -1,36 +0,0 @@ - - - -Custom element local name is the lowercased value of the EXTENDS property, supplied to Document.registerElement() - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html deleted file mode 100644 index de397aacd8d..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/extensions-to-document-interface/custom-element-prototype.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Test prototype object of a custom element - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html deleted file mode 100644 index 33c36463ceb..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html +++ /dev/null @@ -1,16 +0,0 @@ - - -The :unresolved pseudoclass reference file - - - -

    Test passes if x-element background below is red

    - - x-element - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html deleted file mode 100644 index 290e5b15cfc..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag.html +++ /dev/null @@ -1,23 +0,0 @@ - - -The :unresolved pseudoclass matching custom tag - - - - - - -

    Test passes if x-element background below is red

    - - x-element - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html deleted file mode 100644 index d49f3d768fd..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag-ref.html +++ /dev/null @@ -1,16 +0,0 @@ - - -The :unresolved pseudoclass reference file - - - -

    Test passes if x-element background below is yellow

    - - x-element - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html deleted file mode 100644 index 3cd7b41d6e7..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-custom-tag.html +++ /dev/null @@ -1,26 +0,0 @@ - - -The :unresolved pseudoclass matching custom tag - - - - - - -

    Test passes if x-element background below is yellow

    - - x-element - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html deleted file mode 100644 index 90baf95544c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension-ref.html +++ /dev/null @@ -1,16 +0,0 @@ - - -The :unresolved pseudoclass reference file - - - -

    Test passes if x-element background below is yellow

    - - x-element - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html deleted file mode 100644 index 65921bd4147..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-registered-type-extension.html +++ /dev/null @@ -1,33 +0,0 @@ - - -The :unresolved pseudoclass matching type extension - - - - - - - -

    Test passes if x-element background below is yellow

    - - x-element - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html deleted file mode 100644 index 9865f2e3926..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension-ref.html +++ /dev/null @@ -1,17 +0,0 @@ - - -The :unresolved pseudoclass reference file - - - -

    Test passes if x-element background below is red

    - - x-element - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html deleted file mode 100644 index 60f39125a0b..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html +++ /dev/null @@ -1,23 +0,0 @@ - - -The :unresolved pseudoclass matching type extension - - - - - - -

    Test passes if x-element background below is red

    - - x-element - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html deleted file mode 100644 index 2ddc2afc291..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector-all.html +++ /dev/null @@ -1,190 +0,0 @@ - - - -The :unresolved pseudoclass matching with Document.querySelectorAll() - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html deleted file mode 100644 index 47b7e5c4718..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-matching-query-selector.html +++ /dev/null @@ -1,161 +0,0 @@ - - - -The :unresolved pseudoclass matching with Document.querySelector() - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html deleted file mode 100644 index 492c75b7290..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-html-element.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Unresolved element interface must be HTMLElement, if the namespace is HTML Namespace - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html deleted file mode 100644 index 70c23d3c987..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-html-unknown-element.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Unresolved element interface must be HTMLUnknownElement, if the namespace is neither HTML Namespace nor SVG Namespace - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html deleted file mode 100644 index 4164b62dc9c..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/registering/unresolved-elements-interface-svg-element.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Unresolved element interface must be SVGElement, if the namespace is SVG Namespace - - - - - - - - - - -
    - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/blank.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/blank.html deleted file mode 100644 index 2e5697ba1fd..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/blank.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - Blank document - - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/import-master-async.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/import-master-async.html deleted file mode 100644 index 0ecaafb29b7..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/import-master-async.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - Import Master Document (asynchronous) - - - -

    Master document body

    - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/import-master.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/import-master.html deleted file mode 100644 index d91bcb9cdb6..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/import-master.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - Import Master Document - - - -

    Master document body

    - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/import.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/import.html deleted file mode 100644 index dddc4670181..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/import.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - Import Document - - -

    Import Document body

    - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/register-and-create-custom-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/register-and-create-custom-element.html deleted file mode 100644 index 3aabff24485..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/register-and-create-custom-element.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - Register and create custom element - - - - -
    - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-element.html deleted file mode 100644 index 0c0d2daad6a..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-element.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - x-element custom element - - - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-mathml-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-mathml-element.html deleted file mode 100644 index 3efdc2d0088..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-mathml-element.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - Custom element in MathML namespace - - - - - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-svg-element.html b/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-svg-element.html deleted file mode 100644 index 6cea8575882..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/resources/x-svg-element.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - SVG custom element - - - - - - - - diff --git a/tests/wpt/web-platform-tests/custom-elements/v0/testcommon.js b/tests/wpt/web-platform-tests/custom-elements/v0/testcommon.js deleted file mode 100644 index 5cddbe8bc72..00000000000 --- a/tests/wpt/web-platform-tests/custom-elements/v0/testcommon.js +++ /dev/null @@ -1,286 +0,0 @@ -/* -Distributed under both the W3C Test Suite License [1] and the W3C -3-clause BSD License [2]. To contribute to a W3C Test Suite, see the -policies and contribution forms [3]. - -[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license -[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license -[3] http://www.w3.org/2004/10/27-testcases - */ - -"use strict"; - -var HTML5_ELEMENTS = [ 'a', 'abbr', 'address', 'area', 'article', 'aside', - 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', - 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', - 'command', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', - 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', - 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', - 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', - 'keygen', 'label', 'legend', 'li', 'link', 'map', 'mark', 'menu', - 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', - 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 'rp', 'rt', - 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', - 'span', 'strong', 'style', 'sub', 'table', 'tbody', 'td', 'textarea', - 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', - 'var', 'video', 'wbr' ]; - -var HTML5_DOCUMENT_ELEMENTS = [ 'html', 'head', 'body' ]; - -var HTML5_TABLE_ELEMENTS = [ 'caption', 'col', 'colgroup', 'tbody', 'td', - 'tfoot', 'th', 'thead', 'tr' ]; - -var EXTENDER_CHARS = [ 0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, - 0x3005, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x309D, 0x309E, 0x30FC, - 0x30FD, 0x30FE ]; - -var COMBINING_CHARS = [ 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, - 0x0307, 0x0308, 0x0309, 0x030A, 0x030B, 0x030C, 0x030D, 0x030E, 0x030F, - 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, 0x0318, - 0x0319, 0x031A, 0x031B, 0x031C, 0x031D, 0x031E, 0x031F, 0x0320, 0x0321, - 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329, 0x032A, - 0x032B, 0x032C, 0x032D, 0x032E, 0x032F, 0x0330, 0x0331, 0x0332, 0x0333, - 0x0334, 0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x033A, 0x033B, 0x033C, - 0x033D, 0x033E, 0x033F, 0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, - 0x0360, 0x0361, 0x0483, 0x0484, 0x0485, 0x0486, 0x0591, 0x0592, 0x0593, - 0x0594, 0x0595, 0x0596, 0x0597, 0x0598, 0x0599, 0x05A0, 0x05A1, 0x05A3, - 0x05A4, 0x05A5, 0x05A6, 0x05A7, 0x05A8, 0x05A9, 0x05AA, 0x05AB, 0x05AC, - 0x05AD, 0x05AE, 0x05AF, 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, - 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BB, 0x05BC, 0x05BD, 0x05BF, 0x05C1, - 0x05C2, 0x05C4, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, 0x0650, 0x0651, - 0x0652, 0x0670, 0x06D6, 0x06D7, 0x06D8, 0x06D9, 0x06DA, 0x06DB, 0x06DC, - 0x06DD, 0x06DE, 0x06DF, 0x06E0, 0x06E1, 0x06E2, 0x06E3, 0x06E4, 0x06E7, - 0x06E8, 0x06EA, 0x06EB, 0x06EC, 0x06ED, 0x0901, 0x0902, 0x0903, 0x093C, - 0x093E, 0x093F, 0x0940, 0x0941, 0x0942, 0x0943, 0x0944, 0x0945, 0x0946, - 0x0947, 0x0948, 0x0949, 0x094A, 0x094B, 0x094C, 0x094D, 0x0951, 0x0952, - 0x0953, 0x0954, 0x0962, 0x0963, 0x0981, 0x0982, 0x0983, 0x09BC, 0x09BE, - 0x09BF, 0x09C0, 0x09C1, 0x09C2, 0x09C3, 0x09C4, 0x09C7, 0x09C8, 0x09CB, - 0x09CC, 0x09CD, 0x09D7, 0x09E2, 0x09E3, 0x0A02, 0x0A3C, 0x0A3E, 0x0A3F, - 0x0A40, 0x0A41, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4C, 0x0A4D, 0x0A70, - 0x0A71, 0x0A81, 0x0A82, 0x0A83, 0x0ABC, 0x0ABE, 0x0ABF, 0x0AC0, 0x0AC1, - 0x0AC2, 0x0AC3, 0x0AC4, 0x0AC5, 0x0AC7, 0x0AC8, 0x0AC9, 0x0ACB, 0x0ACC, - 0x0ACD, 0x0B01, 0x0B02, 0x0B03, 0x0B3C, 0x0B3E, 0x0B3F, 0x0B40, 0x0B41, - 0x0B42, 0x0B43, 0x0B47, 0x0B48, 0x0B4B, 0x0B4C, 0x0B4D, 0x0B56, 0x0B57, - 0x0B82, 0x0B83, 0x0BBE, 0x0BBF, 0x0BC0, 0x0BC1, 0x0BC2, 0x0BC6, 0x0BC7, - 0x0BC8, 0x0BCA, 0x0BCB, 0x0BCC, 0x0BCD, 0x0BD7, 0x0C01, 0x0C02, 0x0C03, - 0x0C3E, 0x0C3F, 0x0C40, 0x0C41, 0x0C42, 0x0C43, 0x0C44, 0x0C46, 0x0C47, - 0x0C48, 0x0C4A, 0x0C4B, 0x0C4C, 0x0C4D, 0x0C55, 0x0C56, 0x0C82, 0x0C83, - 0x0CBE, 0x0CBF, 0x0CC0, 0x0CC1, 0x0CC2, 0x0CC3, 0x0CC4, 0x0CC6, 0x0CC7, - 0x0CC8, 0x0CCA, 0x0CCB, 0x0CCC, 0x0CCD, 0x0CD5, 0x0CD6, 0x0D02, 0x0D03, - 0x0D3E, 0x0D3F, 0x0D40, 0x0D41, 0x0D42, 0x0D43, 0x0D46, 0x0D47, 0x0D48, - 0x0D4A, 0x0D4B, 0x0D4C, 0x0D4D, 0x0D57, 0x0E31, 0x0E34, 0x0E35, 0x0E36, - 0x0E37, 0x0E38, 0x0E39, 0x0E3A, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, - 0x0E4C, 0x0E4D, 0x0E4E, 0x0EB1, 0x0EB4, 0x0EB5, 0x0EB6, 0x0EB7, 0x0EB8, - 0x0EB9, 0x0EBB, 0x0EBC, 0x0EC8, 0x0EC9, 0x0ECA, 0x0ECB, 0x0ECC, 0x0ECD, - 0x0F18, 0x0F19, 0x0F35, 0x0F37, 0x0F39, 0x0F3E, 0x0F3F, 0x0F71, 0x0F72, - 0x0F73, 0x0F74, 0x0F75, 0x0F76, 0x0F77, 0x0F78, 0x0F79, 0x0F7A, 0x0F7B, - 0x0F7C, 0x0F7D, 0x0F7E, 0x0F7F, 0x0F80, 0x0F81, 0x0F82, 0x0F83, 0x0F84, - 0x0F86, 0x0F87, 0x0F88, 0x0F89, 0x0F8A, 0x0F8B, 0x0F90, 0x0F91, 0x0F92, - 0x0F93, 0x0F94, 0x0F95, 0x0F97, 0x0F99, 0x0F9A, 0x0F9B, 0x0F9C, 0x0F9D, - 0x0F9E, 0x0F9F, 0x0FA0, 0x0FA1, 0x0FA2, 0x0FA3, 0x0FA4, 0x0FA5, 0x0FA6, - 0x0FA7, 0x0FA8, 0x0FA9, 0x0FAA, 0x0FAB, 0x0FAC, 0x0FAD, 0x0FB1, 0x0FB2, - 0x0FB3, 0x0FB4, 0x0FB5, 0x0FB6, 0x0FB7, 0x0FB9, 0x20D0, 0x20D1, 0x20D2, - 0x20D3, 0x20D4, 0x20D5, 0x20D6, 0x20D7, 0x20D8, 0x20D9, 0x20DA, 0x20DB, - 0x20DC, 0x20E1, 0x302A, 0x302B, 0x302C, 0x302D, 0x302E, 0x302F, 0x3099, - 0x309A ]; - -var BASE_CHARS_SINGLE = [ 0x0386, 0x038C, 0x03DA, 0x03DC, 0x03DE, 0x03E0, - 0x0559, 0x06D5, 0x093D, 0x09B2, 0x0A5E, 0x0A8D, 0x0ABD, 0x0AE0, 0x0B3D, - 0x0B9C, 0x0CDE, 0x0E30, 0x0E84, 0x0E8A, 0x0E8D, 0x0EA5, 0x0EA7, 0x0EB0, - 0x0EBD, 0x1100, 0x1109, 0x113C, 0x113E, 0x1140, 0x114C, 0x114E, 0x1150, - 0x1159, 0x1163, 0x1165, 0x1167, 0x1169, 0x1175, 0x119E, 0x11A8, 0x11AB, - 0x11BA, 0x11EB, 0x11F0, 0x11F9, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2126, - 0x212E ]; - -var BASE_CHARS_RANGES = [ 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, - 0x00D8, 0x00F6, 0x00F8, 0x00FF, 0x0100, 0x0131, 0x0134, 0x013E, 0x0141, - 0x0148, 0x014A, 0x017E, 0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, - 0x01FA, 0x0217, 0x0250, 0x02A8, 0x02BB, 0x02C1, 0x0388, 0x038A, 0x038E, - 0x03A1, 0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03E2, 0x03F3, 0x0401, 0x040C, - 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481, 0x0490, 0x04C4, 0x04C7, - 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5, 0x04F8, 0x04F9, - 0x0531, 0x0556, 0x0561, 0x0586, 0x05D0, 0x05EA, 0x05F0, 0x05F2, 0x0621, - 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7, 0x06BA, 0x06BE, 0x06C0, 0x06CE, - 0x06D0, 0x06D3, 0x06E5, 0x06E6, 0x0905, 0x0939, 0x0958, 0x0961, 0x0985, - 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B6, 0x09B9, - 0x09DC, 0x09DD, 0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, - 0x0A10, 0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36, - 0x0A38, 0x0A39, 0x0A59, 0x0A5C, 0x0A72, 0x0A74, 0x0A85, 0x0A8B, 0x0A8F, - 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9, - 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30, 0x0B32, - 0x0B33, 0x0B36, 0x0B39, 0x0B5C, 0x0B5D, 0x0B5F, 0x0B61, 0x0B85, 0x0B8A, - 0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9E, 0x0B9F, 0x0BA3, - 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, - 0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C60, - 0x0C61, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, - 0x0CB5, 0x0CB9, 0x0CE0, 0x0CE1, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, - 0x0D28, 0x0D2A, 0x0D39, 0x0D60, 0x0D61, 0x0E01, 0x0E2E, 0x0E32, 0x0E33, - 0x0E40, 0x0E45, 0x0E81, 0x0E82, 0x0E87, 0x0E88, 0x0E94, 0x0E97, 0x0E99, - 0x0E9F, 0x0EA1, 0x0EA3, 0x0EAA, 0x0EAB, 0x0EAD, 0x0EAE, 0x0EB2, 0x0EB3, - 0x0EC0, 0x0EC4, 0x0F40, 0x0F47, 0x0F49, 0x0F69, 0x10A0, 0x10C5, 0x10D0, - 0x10F6, 0x1102, 0x1103, 0x1105, 0x1107, 0x110B, 0x110C, 0x110E, 0x1112, - 0x1154, 0x1155, 0x115F, 0x1161, 0x116D, 0x116E, 0x1172, 0x1173, 0x11AE, - 0x11AF, 0x11B7, 0x11B8, 0x11BC, 0x11C2, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9, - 0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D, 0x1F50, - 0x1F57, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC, 0x1FC2, 0x1FC4, - 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB, 0x1FE0, 0x1FEC, 0x1FF2, - 0x1FF4, 0x1FF6, 0x1FFC, 0x212A, 0x212B, 0x2180, 0x2182, 0x3041, 0x3094, - 0x30A1, 0x30FA, 0x3105, 0x312C, 0xAC00, 0xD7A3 ]; - -var IDEOGRAPHIC_CHARS_SINGLE = [ 0x3007 ]; - -var IDEOGRAPHIC_CHARS_RANGES = [ 0x3021, 0x3029, 0x4E00, 0x9FA5 ]; - -var DIGIT_CHARS_RANGES = [ 0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, - 0x0966, 0x096F, 0x09E6, 0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, - 0x0B6F, 0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F, - 0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F29 ]; - -function CharsArray(array) { - this.array = array; -} - -CharsArray.prototype.testEach = function(namingFunction, checkFunction) { - if (this.array != null) { - this.array.forEach(function(value) { - checkFunction(namingFunction(getCharCode(value))); - }); - } -}; - -function CharRangesArray(array) { - this.array = array; -} - -CharRangesArray.prototype.testEach = function(namingFunction, checkFunction) { - if (this.array != null) { - for (var i = 0; i < this.array.length; i += 2) { - var rangeStart = getCharCode(this.array[i]); - var rangeEnd = getCharCode(this.array[i+1]); - for (var c = rangeStart; c <= rangeEnd; c++) { - checkFunction(namingFunction(c)); - } - } - } -}; - -function testCharCode(charCode, namingFunction, checkFunction) { - checkFunction(namingFunction(charCode)); -} - -var extenderChars = new CharsArray(EXTENDER_CHARS); -var combiningChars = new CharsArray(COMBINING_CHARS); -var baseCharsSingle = new CharsArray(BASE_CHARS_SINGLE); -var baseCharsRanges = new CharRangesArray(BASE_CHARS_RANGES); -var ideographicCharsSingle = new CharsArray(IDEOGRAPHIC_CHARS_SINGLE); -var ideographicCharsRanges = new CharRangesArray(IDEOGRAPHIC_CHARS_RANGES); -var digitCharsRanges = new CharRangesArray(DIGIT_CHARS_RANGES); - -// Helper function, which verifies that given custom element name is valid -function checkValidName(name) { - var doc = newHTMLDocument(); - try { - doc.registerElement(name); - } catch (e) { - assert_unreached('The custom element name \'' + name + - '\' should be registered without errors'); - } -} - -// Helper function, which verifies that given custom element name is invalid -function checkInvalidName(name) { - var doc = newHTMLDocument(); - assert_throws('SyntaxError', function() { - doc.registerElement(name); - }, 'Registering invalid custom element name \'' + name + '\' should fail'); -} - -// Helper function to extract character code from given object -// expected input: either charater code or one character long string. -function getCharCode(c) { - if (typeof(c) === 'string') { - assert_equals(1, c.length, 'Error in test: input string should be one character long'); - c = c.charCodeAt(0); - } - assert_equals('number', typeof(c), 'Error in test: unexpected type for charater code'); - return c; -} - -var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; -var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; - -function newHTMLDocument() { - return document.implementation.createHTMLDocument('Test Document'); -} - -// Creates new iframe and loads given url into it. -// Returns reference to created iframe. -function newIFrame(url) { - assert_not_equals(url, null, 'argument url should not be null'); - var iframe = document.createElement('iframe'); - iframe.src = url; - document.body.appendChild(iframe); - return iframe; -} - -// Creates new iframe and loads given url into it. -// Function f is bound to the iframe's onload event. -// Function f receives iframe's contentDocument as argument. -// The iframe is disposed after function f is executed. -function testInIFrame(url, f, testName, testProps) { - var t = async_test(testName, testProps); - t.step(function() { - var iframe = newIFrame(url); - iframe.onload = t.step_func(function() { - try { - f(iframe.contentDocument); - t.done(); - } finally { - iframe.remove(); - } - }); - }); -} - -// Helper function to create a prototype for custom element -// with predefined callbacks -function newHTMLElementPrototype() { - return newCustomElementPrototype(HTMLElement.prototype); -} - -// Helper function to create a prototype for custom element -// with predefined callbacks -function newCustomElementPrototype(parent) { - var proto = Object.create(parent); - proto.createdCallbackThis = null; - proto.createdCallbackCalledCounter = 0; - - proto.attachedCallbackThis = null; - proto.attachedCallbackCalledCounter = 0; - - proto.detachedCallbackThis = null; - proto.detachedCallbackCalledCounter = 0; - - proto.attributeChangedCallbackThis = null; - proto.attributeChangedCallbackCalledCounter = 0; - proto.attributeChangedCallbackArgs = null; - - proto.createdCallback = function() { - proto.createdCallbackThis = this; - proto.createdCallbackCalledCounter++; - }; - proto.attachedCallback = function() { - proto.attachedCallbackThis = this; - proto.attachedCallbackCalledCounter++; - }; - proto.detachedCallback = function() { - proto.detachedCallbackThis = this; - proto.detachedCallbackCalledCounter++; - }; - proto.attributeChangedCallback = function(arg1, arg2, arg3) { - proto.attributeChangedCallbackThis = this; - proto.attributeChangedCallbackCalledCounter++; - proto.attributeChangedCallbackArgs = [arg1, arg2, arg3]; - }; - return proto; -} diff --git a/tests/wpt/web-platform-tests/dom/OWNERS b/tests/wpt/web-platform-tests/dom/OWNERS index fad498154e4..0d508945827 100644 --- a/tests/wpt/web-platform-tests/dom/OWNERS +++ b/tests/wpt/web-platform-tests/dom/OWNERS @@ -1,6 +1,5 @@ @ayg @jdm @Ms2ger -@plehegar @zcorpan @zqzhang diff --git a/tests/wpt/web-platform-tests/dom/events/Event-cancelBubble.html b/tests/wpt/web-platform-tests/dom/events/Event-cancelBubble.html new file mode 100644 index 00000000000..d8d2d7239d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/Event-cancelBubble.html @@ -0,0 +1,132 @@ + + + + + Event.cancelBubble + + + + + + + +
    +
    +
    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubble-canceled.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubble-canceled.html new file mode 100644 index 00000000000..20f398f66f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubble-canceled.html @@ -0,0 +1,59 @@ + + + +Setting cancelBubble=true prior to dispatchEvent() + + + + +
    + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html new file mode 100644 index 00000000000..2873fd7794b --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html @@ -0,0 +1,51 @@ + + + +Multiple dispatchEvent() and cancelBubble + + + + +
    + + + + + + diff --git a/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html b/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html index 85abdff2fe7..568232a53c1 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html +++ b/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html @@ -85,6 +85,7 @@ test(function() { var target = document.createElement("div") var called = false target.addEventListener("type", function() { called = true }, false) + assert_false(e.cancelBubble, "cancelBubble must be false") assert_true(target.dispatchEvent(e), "dispatchEvent must return true") assert_true(called, "Listener must be called") }, "Calling initEvent must unset the stop propagation flag.") diff --git a/tests/wpt/web-platform-tests/dom/events/Event-propagation.html b/tests/wpt/web-platform-tests/dom/events/Event-propagation.html index 459d45c1886..33989eb4bf9 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-propagation.html +++ b/tests/wpt/web-platform-tests/dom/events/Event-propagation.html @@ -38,4 +38,11 @@ ev.stopImmediatePropagation(); testPropagationFlag(ev, false, "After stopImmediatePropagation()"); ev.initEvent("foo", true, false); testPropagationFlag(ev, true, "Reinitialized after stopImmediatePropagation()"); + +var ev = document.createEvent("Event"); +ev.initEvent("foo", true, false); +ev.cancelBubble = true; +testPropagationFlag(ev, false, "After cancelBubble=true"); +ev.initEvent("foo", true, false); +testPropagationFlag(ev, true, "Reinitialized after cancelBubble=true"); diff --git a/tests/wpt/web-platform-tests/dom/historical.html b/tests/wpt/web-platform-tests/dom/historical.html index cec30930864..e0612be814e 100644 --- a/tests/wpt/web-platform-tests/dom/historical.html +++ b/tests/wpt/web-platform-tests/dom/historical.html @@ -71,6 +71,18 @@ var elementNuked = [ ] elementNuked.forEach(isNukedFromElement) +function isNukedFromAttr(name) { + test(function() { + var attr = document.createAttribute("test") + assert_equals(attr[name], undefined) + }, "Attr member must be nuked: " + name) +} +var attrNuked = [ + "schemaTypeInfo", + "isId" +] +attrNuked.forEach(isNukedFromAttr) + function isNukedFromDoctype(name) { test(function() { var doctype = document.implementation.createDocumentType("test", "", "") @@ -129,4 +141,29 @@ var windowNuked = [ "attachEvent" ] windowNuked.forEach(isNukedFromWindow) + +function isRemovedFromEvent(name) { + test(() => { + assert_equals(Event[name], undefined) + }, "Event should not have this constant: " + name) +} +var EventRemoved = [ + "MOUSEDOWN", + "MOUSEUP", + "MOUSEOVER", + "MOUSEOUT", + "MOUSEMOVE", + "MOUSEDRAG", + "CLICK", + "DBLCLICK", + "KEYDOWN", + "KEYUP", + "KEYPRESS", + "DRAGDROP", + "FOCUS", + "BLUR", + "SELECT", + "CHANGE" +] +EventRemoved.forEach(isRemovedFromEvent) diff --git a/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html b/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html index 9fb939f7e65..9f4f8fc74c5 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html +++ b/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html @@ -34,139 +34,138 @@ function check_copy(orig, copy, type) { assert_true(copy instanceof type, "Should be type"); } -function create_element_and_check(localName, type) { +function create_element_and_check(localName, typeName) { test(function() { + assert_true(typeName in window, typeName + " is not supported"); var element = document.createElement(localName); var copy = element.cloneNode(); - check_copy(element, copy, type); + check_copy(element, copy, window[typeName]); }, "createElement(" + localName + ")"); } // test1: createElement -test(function() { - create_element_and_check("a", HTMLAnchorElement); - create_element_and_check("abbr", HTMLElement); - create_element_and_check("acronym", HTMLElement); - create_element_and_check("address", HTMLElement); - create_element_and_check("applet", HTMLAppletElement); - create_element_and_check("area", HTMLAreaElement); - create_element_and_check("article", HTMLElement); - create_element_and_check("aside", HTMLElement); - create_element_and_check("audio", HTMLAudioElement); - create_element_and_check("b", HTMLElement); - create_element_and_check("base", HTMLBaseElement); - create_element_and_check("bdi", HTMLElement); - create_element_and_check("bdo", HTMLElement); - create_element_and_check("bgsound", HTMLElement); - create_element_and_check("big", HTMLElement); - create_element_and_check("blockquote",HTMLElement); - create_element_and_check("body", HTMLBodyElement); - create_element_and_check("br", HTMLBRElement); - create_element_and_check("button", HTMLButtonElement); - create_element_and_check("canvas", HTMLCanvasElement); - create_element_and_check("caption", HTMLTableCaptionElement); - create_element_and_check("center", HTMLElement); - create_element_and_check("cite", HTMLElement); - create_element_and_check("code", HTMLElement); - create_element_and_check("col", HTMLTableColElement); - create_element_and_check("colgroup", HTMLTableColElement); - create_element_and_check("data", HTMLDataElement); - create_element_and_check("datalist", HTMLDataListElement); - create_element_and_check("dialog", HTMLDialogElement); - create_element_and_check("dd", HTMLElement); - create_element_and_check("del", HTMLModElement); - create_element_and_check("details", HTMLElement); - create_element_and_check("dfn", HTMLElement); - create_element_and_check("dir", HTMLDirectoryElement); - create_element_and_check("div", HTMLDivElement); - create_element_and_check("dl", HTMLDListElement); - create_element_and_check("dt", HTMLElement); - create_element_and_check("embed", HTMLEmbedElement); - create_element_and_check("fieldset", HTMLFieldSetElement); - create_element_and_check("figcaption",HTMLElement); - create_element_and_check("figure", HTMLElement); - create_element_and_check("font", HTMLFontElement); - create_element_and_check("footer", HTMLElement); - create_element_and_check("form", HTMLFormElement); - create_element_and_check("frame", HTMLFrameElement); - create_element_and_check("frameset", HTMLFrameSetElement); - create_element_and_check("h1", HTMLHeadingElement); - create_element_and_check("h2", HTMLHeadingElement); - create_element_and_check("h3", HTMLHeadingElement); - create_element_and_check("h4", HTMLHeadingElement); - create_element_and_check("h5", HTMLHeadingElement); - create_element_and_check("h6", HTMLHeadingElement); - create_element_and_check("head", HTMLHeadElement); - create_element_and_check("header", HTMLElement); - create_element_and_check("hgroup", HTMLElement); - create_element_and_check("hr", HTMLHRElement); - create_element_and_check("html", HTMLHtmlElement); - create_element_and_check("i", HTMLElement); - create_element_and_check("iframe", HTMLIFrameElement); - create_element_and_check("img", HTMLImageElement); - create_element_and_check("input", HTMLInputElement); - create_element_and_check("ins", HTMLModElement); - create_element_and_check("isindex", HTMLElement); - create_element_and_check("kbd", HTMLElement); - create_element_and_check("label", HTMLLabelElement); - create_element_and_check("legend", HTMLLegendElement); - create_element_and_check("li", HTMLLIElement); - create_element_and_check("link", HTMLLinkElement); - create_element_and_check("main", HTMLElement); - create_element_and_check("map", HTMLMapElement); - create_element_and_check("mark", HTMLElement); - create_element_and_check("marquee", HTMLElement); - create_element_and_check("meta", HTMLMetaElement); - create_element_and_check("meter", HTMLMeterElement); - create_element_and_check("nav", HTMLElement); - create_element_and_check("nobr", HTMLElement); - create_element_and_check("noframes", HTMLElement); - create_element_and_check("noscript", HTMLElement); - create_element_and_check("object", HTMLObjectElement); - create_element_and_check("ol", HTMLOListElement); - create_element_and_check("optgroup", HTMLOptGroupElement); - create_element_and_check("option", HTMLOptionElement); - create_element_and_check("output", HTMLOutputElement); - create_element_and_check("p", HTMLParagraphElement); - create_element_and_check("param", HTMLParamElement); - create_element_and_check("pre", HTMLPreElement); - create_element_and_check("progress", HTMLProgressElement); - create_element_and_check("q", HTMLQuoteElement); - create_element_and_check("rp", HTMLElement); - create_element_and_check("rt", HTMLElement); - create_element_and_check("ruby", HTMLElement); - create_element_and_check("s", HTMLElement); - create_element_and_check("samp", HTMLElement); - create_element_and_check("script", HTMLScriptElement); - create_element_and_check("section", HTMLElement); - create_element_and_check("select", HTMLSelectElement); - create_element_and_check("small", HTMLElement); - create_element_and_check("source", HTMLSourceElement); - create_element_and_check("spacer", HTMLElement); - create_element_and_check("span", HTMLSpanElement); - create_element_and_check("strike", HTMLElement); - create_element_and_check("style", HTMLStyleElement); - create_element_and_check("sub", HTMLElement); - create_element_and_check("summary", HTMLElement); - create_element_and_check("sup", HTMLElement); - create_element_and_check("table", HTMLTableElement); - create_element_and_check("tbody", HTMLTableSectionElement); - create_element_and_check("td", HTMLTableCellElement); - create_element_and_check("template", HTMLTemplateElement); - create_element_and_check("textarea", HTMLTextAreaElement); - create_element_and_check("th", HTMLTableCellElement); - create_element_and_check("time", HTMLTimeElement); - create_element_and_check("title", HTMLTitleElement); - create_element_and_check("tr", HTMLTableRowElement); - create_element_and_check("tt", HTMLElement); - create_element_and_check("track", HTMLTrackElement); - create_element_and_check("u", HTMLElement); - create_element_and_check("ul", HTMLUListElement); - create_element_and_check("var", HTMLElement); - create_element_and_check("video", HTMLVideoElement); - create_element_and_check("unknown", HTMLUnknownElement); - create_element_and_check("wbr", HTMLElement); -}, ""); +create_element_and_check("a", "HTMLAnchorElement"); +create_element_and_check("abbr", "HTMLElement"); +create_element_and_check("acronym", "HTMLElement"); +create_element_and_check("address", "HTMLElement"); +create_element_and_check("applet", "HTMLAppletElement"); +create_element_and_check("area", "HTMLAreaElement"); +create_element_and_check("article", "HTMLElement"); +create_element_and_check("aside", "HTMLElement"); +create_element_and_check("audio", "HTMLAudioElement"); +create_element_and_check("b", "HTMLElement"); +create_element_and_check("base", "HTMLBaseElement"); +create_element_and_check("bdi", "HTMLElement"); +create_element_and_check("bdo", "HTMLElement"); +create_element_and_check("bgsound", "HTMLElement"); +create_element_and_check("big", "HTMLElement"); +create_element_and_check("blockquote","HTMLElement"); +create_element_and_check("body", "HTMLBodyElement"); +create_element_and_check("br", "HTMLBRElement"); +create_element_and_check("button", "HTMLButtonElement"); +create_element_and_check("canvas", "HTMLCanvasElement"); +create_element_and_check("caption", "HTMLTableCaptionElement"); +create_element_and_check("center", "HTMLElement"); +create_element_and_check("cite", "HTMLElement"); +create_element_and_check("code", "HTMLElement"); +create_element_and_check("col", "HTMLTableColElement"); +create_element_and_check("colgroup", "HTMLTableColElement"); +create_element_and_check("data", "HTMLDataElement"); +create_element_and_check("datalist", "HTMLDataListElement"); +create_element_and_check("dialog", "HTMLDialogElement"); +create_element_and_check("dd", "HTMLElement"); +create_element_and_check("del", "HTMLModElement"); +create_element_and_check("details", "HTMLElement"); +create_element_and_check("dfn", "HTMLElement"); +create_element_and_check("dir", "HTMLDirectoryElement"); +create_element_and_check("div", "HTMLDivElement"); +create_element_and_check("dl", "HTMLDListElement"); +create_element_and_check("dt", "HTMLElement"); +create_element_and_check("embed", "HTMLEmbedElement"); +create_element_and_check("fieldset", "HTMLFieldSetElement"); +create_element_and_check("figcaption","HTMLElement"); +create_element_and_check("figure", "HTMLElement"); +create_element_and_check("font", "HTMLFontElement"); +create_element_and_check("footer", "HTMLElement"); +create_element_and_check("form", "HTMLFormElement"); +create_element_and_check("frame", "HTMLFrameElement"); +create_element_and_check("frameset", "HTMLFrameSetElement"); +create_element_and_check("h1", "HTMLHeadingElement"); +create_element_and_check("h2", "HTMLHeadingElement"); +create_element_and_check("h3", "HTMLHeadingElement"); +create_element_and_check("h4", "HTMLHeadingElement"); +create_element_and_check("h5", "HTMLHeadingElement"); +create_element_and_check("h6", "HTMLHeadingElement"); +create_element_and_check("head", "HTMLHeadElement"); +create_element_and_check("header", "HTMLElement"); +create_element_and_check("hgroup", "HTMLElement"); +create_element_and_check("hr", "HTMLHRElement"); +create_element_and_check("html", "HTMLHtmlElement"); +create_element_and_check("i", "HTMLElement"); +create_element_and_check("iframe", "HTMLIFrameElement"); +create_element_and_check("img", "HTMLImageElement"); +create_element_and_check("input", "HTMLInputElement"); +create_element_and_check("ins", "HTMLModElement"); +create_element_and_check("isindex", "HTMLElement"); +create_element_and_check("kbd", "HTMLElement"); +create_element_and_check("label", "HTMLLabelElement"); +create_element_and_check("legend", "HTMLLegendElement"); +create_element_and_check("li", "HTMLLIElement"); +create_element_and_check("link", "HTMLLinkElement"); +create_element_and_check("main", "HTMLElement"); +create_element_and_check("map", "HTMLMapElement"); +create_element_and_check("mark", "HTMLElement"); +create_element_and_check("marquee", "HTMLElement"); +create_element_and_check("meta", "HTMLMetaElement"); +create_element_and_check("meter", "HTMLMeterElement"); +create_element_and_check("nav", "HTMLElement"); +create_element_and_check("nobr", "HTMLElement"); +create_element_and_check("noframes", "HTMLElement"); +create_element_and_check("noscript", "HTMLElement"); +create_element_and_check("object", "HTMLObjectElement"); +create_element_and_check("ol", "HTMLOListElement"); +create_element_and_check("optgroup", "HTMLOptGroupElement"); +create_element_and_check("option", "HTMLOptionElement"); +create_element_and_check("output", "HTMLOutputElement"); +create_element_and_check("p", "HTMLParagraphElement"); +create_element_and_check("param", "HTMLParamElement"); +create_element_and_check("pre", "HTMLPreElement"); +create_element_and_check("progress", "HTMLProgressElement"); +create_element_and_check("q", "HTMLQuoteElement"); +create_element_and_check("rp", "HTMLElement"); +create_element_and_check("rt", "HTMLElement"); +create_element_and_check("ruby", "HTMLElement"); +create_element_and_check("s", "HTMLElement"); +create_element_and_check("samp", "HTMLElement"); +create_element_and_check("script", "HTMLScriptElement"); +create_element_and_check("section", "HTMLElement"); +create_element_and_check("select", "HTMLSelectElement"); +create_element_and_check("small", "HTMLElement"); +create_element_and_check("source", "HTMLSourceElement"); +create_element_and_check("spacer", "HTMLElement"); +create_element_and_check("span", "HTMLSpanElement"); +create_element_and_check("strike", "HTMLElement"); +create_element_and_check("style", "HTMLStyleElement"); +create_element_and_check("sub", "HTMLElement"); +create_element_and_check("summary", "HTMLElement"); +create_element_and_check("sup", "HTMLElement"); +create_element_and_check("table", "HTMLTableElement"); +create_element_and_check("tbody", "HTMLTableSectionElement"); +create_element_and_check("td", "HTMLTableCellElement"); +create_element_and_check("template", "HTMLTemplateElement"); +create_element_and_check("textarea", "HTMLTextAreaElement"); +create_element_and_check("th", "HTMLTableCellElement"); +create_element_and_check("time", "HTMLTimeElement"); +create_element_and_check("title", "HTMLTitleElement"); +create_element_and_check("tr", "HTMLTableRowElement"); +create_element_and_check("tt", "HTMLElement"); +create_element_and_check("track", "HTMLTrackElement"); +create_element_and_check("u", "HTMLElement"); +create_element_and_check("ul", "HTMLUListElement"); +create_element_and_check("var", "HTMLElement"); +create_element_and_check("video", "HTMLVideoElement"); +create_element_and_check("unknown", "HTMLUnknownElement"); +create_element_and_check("wbr", "HTMLElement"); test(function() { var fragment = document.createDocumentFragment(); @@ -230,7 +229,16 @@ test(function() { var doc = document.implementation.createDocument(null, null); var copy = doc.cloneNode(); check_copy(doc, copy, Document); + assert_equals(doc.charset, "UTF-8"); + assert_equals(doc.charset, copy.charset); + assert_equals(doc.contentType, "application/xml"); assert_equals(doc.contentType, copy.contentType); + assert_equals(doc.URL, "about:blank") + assert_equals(doc.URL, copy.URL); + assert_equals(doc.origin, "null") + assert_equals(doc.origin, copy.origin); + assert_equals(doc.compatMode, "CSS1Compat"); + assert_equals(doc.compatMode, copy.compatMode); }, "implementation.createDocument"); test(function() { diff --git a/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html b/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html index a9bbb158807..42404562a3c 100644 --- a/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html +++ b/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html @@ -17,6 +17,10 @@ function xpath_test(test_el) { /* note this func adopts the tree! */ var new_doc = document.implementation.createDocument("", ""); var xpath = find_child_element(test_el, "xpath"); + var result = find_child_element(test_el, "result"); + var namespace = find_child_element(result, "namespace"); + var localname = find_child_element(result, "localname"); + var nth = find_child_element(result, "nth"); var tree = find_child_element(test_el, "tree"); var actual_tree = new_doc.adoptNode(tree.firstElementChild); new_doc.appendChild(actual_tree); @@ -32,6 +36,9 @@ function xpath_test(test_el) { matched.push(cur); } assert_equals(matched.length, 1, "Should match one node"); + var similar = new_doc.getElementsByTagNameNS(namespace.textContent, + localname.textContent); + assert_equals(matched[0], similar[nth.textContent]); }); } diff --git a/tests/wpt/web-platform-tests/domxpath/xml_xpath_tests.xml b/tests/wpt/web-platform-tests/domxpath/xml_xpath_tests.xml index e40bb5b6d35..91d6428f48a 100644 --- a/tests/wpt/web-platform-tests/domxpath/xml_xpath_tests.xml +++ b/tests/wpt/web-platform-tests/domxpath/xml_xpath_tests.xml @@ -6,6 +6,11 @@ //mu[@xml:id="id1"]//rho[@title][@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::rho[@object="this.nodeValue"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@object][@xml:lang="no-nb"][not(child::node())][following-sibling::alpha[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[starts-with(concat(@content,"-"),"_blank-")][not(following-sibling::*)]/iota[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::zeta[@insert][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/lambda[@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::delta[contains(concat(@object,"$"),"se$")][preceding-sibling::*[position() = 1]]//mu[@attrib][@xml:lang="en-GB"]/omicron[contains(concat(@false,"$"),"lse$")][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:id="id9"][not(following-sibling::*)]/rho[contains(concat(@attr,"$"),"100%$")][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::*[@xml:lang="en-US"][@xml:id="id10"][not(child::node())][following-sibling::alpha[contains(concat(@att,"$"),"rue$")][following-sibling::omicron[@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//omicron[contains(concat(@abort,"$"),"tt-value$")][@xml:lang="en"]/upsilon[starts-with(concat(@string,"-"),"100%-")][@xml:lang="no-nb"][@xml:id="id12"]]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]] + + + rho + 0 + @@ -43,6 +48,11 @@ //pi[@xml:lang="no"][@xml:id="id1"]//iota[@attribute][@xml:id="id2"][not(following-sibling::*)]/phi[@object][@xml:id="id3"][not(following-sibling::*)]//pi[starts-with(concat(@number,"-"),"another attribute value-")][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:id="id4"][not(preceding-sibling::*)]/xi[@xml:id="id5"]/eta[@insert][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::nu[following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@desciption][@xml:id="id8"]/kappa[not(preceding-sibling::*)]/beta[starts-with(concat(@insert,"-"),"100%-")][not(child::node())][following-sibling::eta[starts-with(concat(@token,"-"),"content-")][not(following-sibling::*)]//pi[@and="_blank"][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:id="id10"]/psi[starts-with(@and,"another attribut")][@xml:lang="en"][@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@title="attribute"][following-sibling::eta[@or="solid 1px green"][@xml:id="id12"][following-sibling::lambda[@xml:lang="no"][@xml:id="id13"][following-sibling::theta[@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/epsilon[@object][@xml:id="id14"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + eta + 0 + @@ -82,6 +92,11 @@ //pi[starts-with(@attribute,"attribute val")][@xml:lang="en-US"][@xml:id="id1"]/upsilon[starts-with(concat(@attribute,"-"),"this.nodeValue-")][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]/epsilon[following-sibling::epsilon[contains(@attrib,"10")][preceding-sibling::*[position() = 1]][following-sibling::xi[preceding-sibling::*[position() = 2]]//lambda[@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::eta[@insert][preceding-sibling::*[position() = 1]][following-sibling::omega[@token][@xml:lang="nb"][not(child::node())][following-sibling::kappa[starts-with(concat(@object,"-"),"this.nodeValue-")][@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::xi[contains(@true,"e")][@xml:id="id5"][not(child::node())][following-sibling::phi[@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::nu[following-sibling::*[position()=1]][following-sibling::zeta[starts-with(concat(@object,"-"),"attribute-")]//kappa[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::chi[@xml:lang="nb"][following-sibling::theta[@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::xi[contains(concat(@name,"$"),"789$")][@xml:lang="no"]/tau[@xml:lang="en"][not(preceding-sibling::*)]/beta[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]]]]] + + + epsilon + 0 + @@ -116,6 +131,11 @@ //rho[@xml:id="id1"]/xi[@src][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]//eta[not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:id="id3"][not(child::node())][following-sibling::omega[starts-with(@name,"this.nodeVal")]//rho[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[contains(@attrib," gree")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[starts-with(concat(@insert,"-"),"100%-")][@xml:lang="no"][not(following-sibling::*)]/gamma[starts-with(@attrib,"attribu")][@xml:lang="en-GB"][not(child::node())][following-sibling::delta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::sigma[starts-with(concat(@number,"-"),"_blank-")][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::omega[starts-with(concat(@false,"-"),"this-")][not(following-sibling::*)]/epsilon[starts-with(concat(@true,"-"),"attribute-")]][position() = 1]]]][position() = 1]] + + + mu + 0 + @@ -143,6 +163,11 @@ //rho[@xml:lang="no-nb"]//tau[@attr][not(preceding-sibling::*)]/alpha[@xml:lang="en-GB"][following-sibling::*[position()=6]][not(child::node())][following-sibling::phi[starts-with(@number,"attribute val")][preceding-sibling::*[position() = 1]][following-sibling::psi[preceding-sibling::*[position() = 2]][following-sibling::phi[not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id1"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::zeta[@number][@xml:id="id2"][preceding-sibling::*[position() = 5]][following-sibling::psi[@attrib][@xml:id="id3"][preceding-sibling::*[position() = 6]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -161,6 +186,11 @@ //sigma[@and][@xml:id="id1"]/beta[@name][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@xml:id="id3"][not(following-sibling::*)]//beta[following-sibling::*[position()=3]][not(child::node())][following-sibling::theta[not(child::node())][following-sibling::eta[contains(concat(@object,"$"),"rue$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[contains(concat(@data,"$"),"ttribute-value$")][@xml:id="id4"][not(following-sibling::omicron)]/alpha[@xml:lang="no"][@xml:id="id5"][following-sibling::kappa[@token="content"][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]] + + + beta + 1 + @@ -181,6 +211,11 @@ //lambda/kappa[contains(@false,"attribut")][@xml:id="id1"]/rho[starts-with(concat(@object,"-"),"false-")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::chi[@content][not(following-sibling::*)]/beta[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)]/psi[contains(concat(@and,"$"),"bute value$")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::alpha[starts-with(concat(@insert,"-"),"attribute-")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//kappa[@title][@xml:id="id6"][not(following-sibling::*)]//epsilon[contains(concat(@attrib,"$"),"e$")][@xml:id="id7"][not(child::node())][following-sibling::xi[@number][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omicron[@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//theta[@xml:lang="no-nb"][@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:id="id11"][not(following-sibling::*)]/rho[starts-with(@delete,"c")][@xml:id="id12"][following-sibling::alpha[@name][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::phi[@abort][@xml:lang="nb"][@xml:id="id13"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + rho + 0 + @@ -213,6 +248,11 @@ //phi[@attr="100%"]//beta[contains(concat(@delete,"$"),"k$")][@xml:lang="en"][not(preceding-sibling::*)]/phi[not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:lang="en-GB"][not(following-sibling::*)]//kappa[following-sibling::nu[@name][following-sibling::*[position()=3]][following-sibling::*[@name][not(child::node())][following-sibling::sigma[starts-with(concat(@token,"-"),"another attribute value-")][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::lambda[@xml:id="id1"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/rho[contains(concat(@class,"$"),"123456789$")][not(preceding-sibling::*)][following-sibling::epsilon[@xml:lang="nb"][@xml:id="id2"]/xi//beta[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[starts-with(@abort,"fa")][@xml:id="id4"][following-sibling::phi[@true][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::nu[@string="another attribute value"][@xml:lang="no"][@xml:id="id6"][not(following-sibling::*)]/phi[contains(concat(@token,"$"),"1px green$")][not(preceding-sibling::*)]/theta[@xml:lang="no-nb"][not(following-sibling::*)]//lambda[@attr][not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::lambda)]/*[following-sibling::*[position()=1]][following-sibling::psi[contains(concat(@desciption,"$"),"n$")][@xml:id="id7"][preceding-sibling::*[position() = 1]]//theta[contains(@src,"ue")][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]] + + + kappa + 0 + @@ -254,6 +294,11 @@ //gamma[starts-with(@data,"tr")][@xml:lang="no"][@xml:id="id1"]//omicron[starts-with(concat(@class,"-"),"attribute value-")]/rho[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@xml:lang="no"][@xml:id="id2"]//omega[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[starts-with(@object,"conten")][preceding-sibling::*[position() = 2]][following-sibling::zeta[preceding-sibling::*[position() = 3]][following-sibling::omicron[@object][@xml:lang="en-GB"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::mu[contains(@delete,"_b")][@xml:lang="no"][@xml:id="id4"][following-sibling::pi[@xml:lang="no"][not(following-sibling::*)]/alpha[@desciption][@xml:lang="en-US"][not(child::node())][following-sibling::upsilon[contains(concat(@attribute,"$"),"eValue$")][@xml:lang="en-GB"][not(following-sibling::*)]/phi[starts-with(@title,"solid 1p")][@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)][not(preceding-sibling::phi)]/epsilon[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::alpha[@token][@xml:lang="en-US"][@xml:id="id6"][following-sibling::rho[@xml:id="id7"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + omega + 0 + @@ -285,6 +330,11 @@ //mu/iota[starts-with(concat(@desciption,"-"),"attribute-")][not(child::node())][following-sibling::lambda[contains(concat(@or,"$"),"tribute-value$")][@xml:id="id1"][preceding-sibling::*[position() = 1]]//pi[starts-with(concat(@name,"-"),"false-")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::sigma[@name][not(child::node())][following-sibling::mu[following-sibling::zeta[@true][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][following-sibling::tau[starts-with(@abort,"_bl")][@xml:id="id4"][not(child::node())][following-sibling::delta[contains(@token,"soli")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 5]]//mu[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::nu[@att="attribute value"][@xml:id="id6"][preceding-sibling::*[position() = 1]]][position() = 1]]][position() = 1]]]][position() = 1]] + + + iota + 0 + @@ -306,6 +356,11 @@ //*[starts-with(concat(@attribute,"-"),"attribute-")][@xml:lang="nb"]/theta[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[not(following-sibling::*)]/phi[@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]//pi[contains(concat(@attribute,"$"),"another attribute value$")][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]//eta[starts-with(@desciption,"another attribu")][@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)] + + + eta + 0 + @@ -324,6 +379,11 @@ //omicron[starts-with(concat(@object,"-"),"100%-")][@xml:lang="en-GB"]//alpha[following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@content][@xml:id="id1"][preceding-sibling::*[position() = 1]]//upsilon[following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[@class][not(child::node())][following-sibling::epsilon[@desciption][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//iota[@name="attribute-value"][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[contains(concat(@object,"$"),"nodeValue$")][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]] + + + alpha + 0 + @@ -346,6 +406,11 @@ //zeta[@xml:id="id1"]//kappa[@xml:id="id2"][following-sibling::alpha[@xml:id="id3"]/nu[contains(@content,"%")][@xml:lang="en-GB"][following-sibling::*[position()=3]][not(child::node())][following-sibling::alpha[@object][@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:id="id5"][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 3]]//omicron[starts-with(concat(@desciption,"-"),"solid 1px green-")][@xml:lang="en-GB"][@xml:id="id6"]/epsilon[contains(@class,"ank")][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="nb"][following-sibling::kappa[@xml:lang="en-GB"][following-sibling::chi[starts-with(@att,"a")][@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::tau[starts-with(concat(@data,"-"),"content-")][preceding-sibling::*[position() = 4]]/delta[contains(concat(@attr,"$"),"89$")][not(child::node())][following-sibling::rho[@xml:id="id9"][following-sibling::alpha[not(following-sibling::*)]//iota[not(following-sibling::*)]//eta/lambda[@xml:lang="en"][not(child::node())][following-sibling::epsilon[starts-with(@object,"t")][@xml:lang="no"][@xml:id="id10"][following-sibling::gamma[@or][@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 2]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -382,6 +447,11 @@ //omega[starts-with(concat(@desciption,"-"),"attribute-")][@xml:lang="en"][@xml:id="id1"]/upsilon[@xml:id="id2"][not(preceding-sibling::*)]//kappa[@abort="this.nodeValue"][@xml:id="id3"][not(preceding-sibling::*)]//chi[@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)]//phi[@xml:id="id5"][not(following-sibling::*)]/omega[contains(concat(@false,"$"),"te$")][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)] + + + sigma + 0 + @@ -402,6 +472,11 @@ //mu[@xml:id="id1"]//chi[starts-with(concat(@true,"-"),"content-")][following-sibling::upsilon[contains(@abort,"6789")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]//pi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:id="id3"][preceding-sibling::*[position() = 1]]/gamma[not(preceding-sibling::*)][not(following-sibling::*)]]] + + + chi + 0 + @@ -420,6 +495,11 @@ //psi[@xml:id="id1"]//theta[contains(concat(@number,"$"),"bute value$")][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[@xml:id="id2"][not(preceding-sibling::*)]/theta[starts-with(concat(@abort,"-"),"solid 1px green-")][@xml:lang="en-US"][following-sibling::upsilon[starts-with(@number,"c")][@xml:lang="no-nb"][@xml:id="id3"]//zeta[starts-with(@attrib,"100")][@xml:lang="en-US"][not(child::node())][following-sibling::chi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::eta[@xml:id="id4"]//theta[starts-with(concat(@name,"-"),"123456789-")][not(following-sibling::*)]/zeta[@xml:id="id5"]//rho[@xml:lang="no-nb"][@xml:id="id6"][not(child::node())][following-sibling::mu[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi//iota[@xml:lang="no"][@xml:id="id8"]/zeta[@xml:id="id9"][following-sibling::delta[@desciption][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::theta[starts-with(concat(@insert,"-"),"_blank-")][@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 2]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + theta + 1 + @@ -453,6 +533,11 @@ //zeta[starts-with(concat(@att,"-"),"solid 1px green-")][@xml:id="id1"]//lambda[@attribute][@xml:id="id2"][not(following-sibling::*)]//omicron[contains(concat(@abort,"$"),"e$")][not(child::node())][following-sibling::zeta[@xml:lang="nb"][preceding-sibling::*[position() = 1]]//sigma[starts-with(concat(@token,"-"),"this.nodeValue-")][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]/phi[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@false="attribute value"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::eta[starts-with(@token,"123456789")][@xml:lang="no"][@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha]]] + + + omicron + 0 + @@ -474,6 +559,11 @@ //delta//alpha[@xml:lang="no-nb"][not(preceding-sibling::*)]//tau[@object][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[contains(concat(@and,"$"),"00%$")][@xml:lang="nb"]//rho[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::eta[@xml:id="id2"]/rho[starts-with(@abort,"this-is-")][@xml:id="id3"][not(preceding-sibling::*)]/rho[not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:lang="no"][not(following-sibling::*)]//gamma[not(child::node())][following-sibling::omega[@attribute][@xml:lang="no-nb"][@xml:id="id4"]/kappa[@attrib][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en"][@xml:id="id5"][not(child::node())][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::pi[@xml:lang="en"][@xml:id="id7"]//sigma[starts-with(@att,"123")][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=5]][following-sibling::kappa[contains(@attr,"bute value")][@xml:lang="no-nb"][@xml:id="id9"][not(child::node())][following-sibling::alpha[@and="attribute value"][@xml:id="id10"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::lambda[preceding-sibling::*[position() = 3]][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id11"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::omicron[@xml:lang="no-nb"][@xml:id="id12"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]] + + + tau + 0 + @@ -511,6 +601,11 @@ //mu[@xml:lang="no"]/tau[contains(@data,"value")][@xml:lang="no"][not(child::node())][following-sibling::kappa[@att][not(following-sibling::*)]//delta[starts-with(@attrib,"100")][@xml:lang="en"][@xml:id="id1"]//omega[@xml:lang="en-GB"][@xml:id="id2"]/epsilon[@delete][following-sibling::sigma[@xml:id="id3"]/nu[starts-with(@token,"a")][not(preceding-sibling::*)]/rho[contains(concat(@delete,"$"),"00%$")][@xml:lang="no"][@xml:id="id4"]][position() = 1]] + + + tau + 0 + @@ -533,6 +628,11 @@ //zeta[starts-with(concat(@object,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id1"]//pi[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)]/eta[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::eta)]/rho[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::pi[@desciption]/epsilon[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@att="true"][following-sibling::psi[starts-with(@abort,"attribute")][@xml:id="id6"][position() = 1]]][position() = 1]] + + + rho + 0 + @@ -554,6 +654,11 @@ //upsilon[starts-with(concat(@src,"-"),"this-")][@xml:id="id1"]/chi[@attrib][@xml:lang="nb"][following-sibling::eta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@xml:lang="no-nb"][not(following-sibling::*)]//kappa[@and][not(preceding-sibling::*)]//mu[@string][@xml:id="id3"][not(following-sibling::*)]//tau[@name][@xml:lang="en"][@xml:id="id4"][following-sibling::upsilon[not(following-sibling::*)]][position() = 1]] + + + chi + 0 + @@ -574,6 +679,11 @@ //*[starts-with(concat(@insert,"-"),"_blank-")]/alpha[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(concat(@token,"$"),"e-value$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[contains(@insert,"1")][not(child::node())][following-sibling::sigma[contains(@and,"_")][following-sibling::beta[@xml:lang="en"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::mu[not(child::node())][following-sibling::psi[following-sibling::kappa[not(following-sibling::*)]//beta//xi[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::kappa[@content][@xml:id="id3"][not(following-sibling::*)]/xi[@xml:lang="nb"][not(preceding-sibling::*)]//upsilon[contains(@content,"ri")][@xml:lang="nb"][not(following-sibling::*)]//psi[contains(@and,"te")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::iota[@attribute][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::lambda[starts-with(concat(@and,"-"),"123456789-")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::theta//beta[not(preceding-sibling::*)]//epsilon[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)]//zeta[starts-with(@insert,"content")][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + alpha + 0 + @@ -611,6 +721,11 @@ //chi[@xml:lang="en-GB"][@xml:id="id1"]/tau//phi[@title][@xml:id="id2"]/sigma[@xml:lang="no-nb"]//theta[@xml:id="id3"][not(preceding-sibling::*)]/tau[contains(concat(@title,"$"),"nother attribute value$")][@xml:lang="en"][not(following-sibling::*)]/phi[@attribute][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::mu[@xml:lang="no"][@xml:id="id4"]/chi[@xml:lang="en-GB"][@xml:id="id5"][not(child::node())][following-sibling::tau[starts-with(@att,"false")][@xml:id="id6"][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 2]]/gamma[@attr][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="en"][preceding-sibling::*[position() = 1]]/tau[contains(@and,"r")][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@token="false"][@xml:lang="no"][not(following-sibling::*)]]]][position() = 1]]] + + + phi + 1 + @@ -644,6 +759,11 @@ //sigma[@title][@xml:id="id1"]/zeta[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@xml:id="id2"][following-sibling::psi[@att][@xml:lang="nb"][@xml:id="id3"]//alpha[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[starts-with(@title,"123456")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[@xml:id="id5"][following-sibling::*[position()=1]][not(preceding-sibling::any)][following-sibling::theta[preceding-sibling::*[position() = 3]][not(following-sibling::*)]//nu[contains(@desciption,"a")][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@object][preceding-sibling::*[position() = 1]]//iota[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:id="id8"]//omega[@delete][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[following-sibling::*[position()=1]][following-sibling::omega[@number="solid 1px green"][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//rho[@string][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]] + + + nu + 0 + @@ -674,6 +794,11 @@ //*[@xml:lang="no-nb"][@xml:id="id1"]//theta[starts-with(@content,"fal")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[starts-with(@insert,"100")][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//theta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::epsilon[@desciption="100%"][@xml:lang="en"][@xml:id="id5"]/upsilon//xi[contains(@abort,"nt")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)]//beta[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::gamma[preceding-sibling::*[position() = 1]]//kappa[@xml:lang="en-US"][following-sibling::gamma[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(@abort,"solid 1px g")]//gamma[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@object="solid 1px green"][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@name="_blank"][@xml:lang="no-nb"]//nu[@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)]//sigma[@desciption][@xml:lang="nb"][following-sibling::beta[@xml:lang="en"][@xml:id="id10"][not(following-sibling::*)]/pi[contains(concat(@delete,"$"),"ue$")][not(preceding-sibling::*)][following-sibling::rho[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@xml:lang="en"][preceding-sibling::*[position() = 2]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + theta + 0 + @@ -714,6 +839,11 @@ //rho[@content][@xml:lang="no-nb"][@xml:id="id1"]//alpha[@title="content"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][following-sibling::theta[@abort][@xml:lang="no"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][not(following-sibling::theta)][not(child::node())][following-sibling::pi[@attr="true"][@xml:lang="nb"]//eta[contains(concat(@attr,"$"),"false$")][@xml:lang="en-US"]//omega[@insert="solid 1px green"][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:lang="en"]]][position() = 1]]]] + + + alpha + 0 + @@ -735,6 +865,11 @@ //zeta[@xml:lang="nb"]/psi[contains(@object,"te")][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[contains(@number,"d 1p")][@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=1]][not(preceding-sibling::chi)][not(preceding-sibling::chi or following-sibling::chi)][following-sibling::tau[@delete][@xml:lang="en-US"][not(following-sibling::*)]//phi[@token][@xml:id="id3"][not(preceding-sibling::*)]//xi[starts-with(concat(@att,"-"),"123456789-")][@xml:id="id4"][not(preceding-sibling::*)]//iota[@class="attribute-value"][not(preceding-sibling::*)]//rho[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[contains(@insert,"px green")][@xml:id="id5"][following-sibling::*[position()=3]][following-sibling::lambda[@token][@xml:lang="en-US"][not(child::node())][following-sibling::gamma[not(child::node())][following-sibling::mu[@xml:id="id6"]//omicron[contains(concat(@desciption,"$"),"his.nodeValue$")][@xml:id="id7"][not(preceding-sibling::*)]/sigma[starts-with(@attr,"at")][@xml:lang="en-US"][@xml:id="id8"][following-sibling::tau[contains(@true,"ute value")][@xml:lang="no-nb"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + psi + 0 + @@ -765,6 +900,11 @@ //theta[@false][@xml:lang="no"][@xml:id="id1"]//zeta[@name][@xml:id="id2"][following-sibling::*[position()=2]][following-sibling::sigma[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@src][@xml:lang="en"][@xml:id="id4"]//theta[contains(concat(@src,"$"),"%$")][@xml:id="id5"][following-sibling::omicron[contains(@or,"ribute")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::xi[@true="another attribute value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//*[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@or][@xml:id="id8"][not(preceding-sibling::*)]//kappa[not(preceding-sibling::*)][following-sibling::phi[@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[starts-with(@delete,"this.")][@xml:id="id10"][following-sibling::omega[contains(@string,"on")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -791,6 +931,11 @@ //zeta[@xml:id="id1"]//mu[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::alpha[@true][@xml:id="id3"][preceding-sibling::*[position() = 1]]//epsilon[contains(concat(@content,"$"),"e$")][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[starts-with(@data,"100")][not(preceding-sibling::*)]//pi[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[starts-with(concat(@attrib,"-"),"content-")][@xml:lang="no"][@xml:id="id5"][not(following-sibling::*)]/upsilon[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id6"][not(following-sibling::*)]//iota[not(preceding-sibling::*)][not(following-sibling::*)]/zeta[not(preceding-sibling::*)][position() = 1]][position() = 1]]] + + + mu + 0 + @@ -818,6 +963,11 @@ //tau[@abort][@xml:id="id1"]/rho[contains(concat(@true,"$"),"e$")][not(following-sibling::*)]//eta[not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:lang="no"]//tau[@xml:id="id2"]//iota[@xml:lang="no"][@xml:id="id3"][following-sibling::omega[@string][@xml:lang="no-nb"][following-sibling::theta[starts-with(@attr,"cont")][@xml:id="id4"][preceding-sibling::*[position() = 2]]/sigma[starts-with(@name,"this.nodeValue")][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]//rho[starts-with(@attrib,"cont")][@xml:lang="nb"][@xml:id="id6"][not(child::node())][following-sibling::pi[contains(concat(@token,"$"),"rue$")][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="en"][preceding-sibling::*[position() = 2]][following-sibling::omega[@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/*[@content][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::chi[@class][@xml:lang="no"][@xml:id="id10"]/alpha[@xml:lang="nb"][@xml:id="id11"][following-sibling::*[position()=4]][not(child::node())][following-sibling::upsilon[starts-with(concat(@name,"-"),"this-")][@xml:id="id12"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@delete][@xml:id="id13"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::xi[contains(concat(@true,"$"),"ank$")][not(child::node())][following-sibling::alpha[@xml:lang="en"][@xml:id="id14"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]] + + + eta + 0 + @@ -853,6 +1003,11 @@ //kappa[@string="another attribute value"]/alpha[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]/eta[@xml:lang="en-US"][following-sibling::*[@content][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 2]]/gamma[starts-with(@insert,"attr")][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -870,6 +1025,11 @@ //*//alpha//beta[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::mu[contains(@false,"value")][@xml:lang="no-nb"][@xml:id="id1"][following-sibling::*[position()=3]][following-sibling::beta[@xml:lang="no-nb"][not(child::node())][following-sibling::iota[contains(@or,"e")][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 3]][following-sibling::xi[preceding-sibling::*[position() = 4]][not(following-sibling::*)]//delta[@xml:lang="no"]//upsilon[contains(concat(@token,"$"),"alue$")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::omega[@false][@xml:id="id4"][preceding-sibling::*[position() = 1]]/omega[starts-with(concat(@desciption,"-"),"_blank-")][@xml:id="id5"][not(following-sibling::*)]/sigma[@xml:id="id6"][not(preceding-sibling::*)]//lambda[following-sibling::theta[starts-with(@token,"_")][preceding-sibling::*[position() = 1]]//eta/tau[@false]//epsilon[contains(concat(@true,"$"),"ue$")][@xml:lang="nb"]]]][position() = 1]]]] + + + beta + 0 + @@ -904,6 +1064,11 @@ //phi[@abort]//mu[@xml:lang="no-nb"][@xml:id="id1"]/xi[starts-with(@name,"att")][@xml:lang="no"][@xml:id="id2"]//beta[contains(@number,"l")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@string][@xml:id="id3"][not(following-sibling::*)]/pi[contains(concat(@false,"$"),"100%$")][@xml:lang="en-GB"]/omicron[@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[contains(concat(@attribute,"$"),"e$")][@xml:id="id5"][not(following-sibling::*)]//chi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::rho[@false="another attribute value"][not(following-sibling::*)]/beta[@xml:lang="no"][following-sibling::lambda[contains(concat(@name,"$"),"deValue$")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@title="this-is-att-value"][@xml:id="id6"][not(preceding-sibling::*)]/kappa[@false="false"][@xml:id="id7"][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + omicron + 0 + @@ -935,6 +1100,11 @@ //epsilon[@xml:id="id1"]//lambda[contains(@data,"alu")][@xml:lang="no-nb"][not(preceding-sibling::*)]//lambda[@xml:lang="nb"][not(child::node())][following-sibling::upsilon[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[contains(concat(@abort,"$"),"t-value$")][not(following-sibling::*)]//alpha[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]//kappa[contains(concat(@string,"$"),"alue$")][@xml:lang="en-GB"][@xml:id="id4"]//lambda[contains(concat(@insert,"$")," value$")][not(preceding-sibling::*)][following-sibling::zeta[not(child::node())][following-sibling::psi[@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::tau[@title="another attribute value"][@xml:lang="en-US"][preceding-sibling::*[position() = 3]][following-sibling::epsilon[not(following-sibling::*)]//gamma[contains(concat(@data,"$"),"23456789$")][@xml:id="id6"][not(following-sibling::*)]/mu[starts-with(@data,"solid 1px g")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@attr][@xml:lang="en-GB"][@xml:id="id7"][not(child::node())][following-sibling::lambda[@number][@xml:lang="nb"]//mu[contains(concat(@number,"$"),"t-value$")][@xml:lang="no"][not(child::node())][following-sibling::mu[@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[@data="attribute"][@xml:lang="no"][not(preceding-sibling::*)]/pi[not(following-sibling::*)]//lambda[starts-with(concat(@false,"-"),"this-")][@xml:lang="en"][@xml:id="id9"]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]] + + + lambda + 1 + @@ -975,6 +1145,11 @@ //theta[@src]//*[contains(@desciption,"alue")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:lang="en-US"][following-sibling::gamma[@string][@xml:lang="en-GB"][@xml:id="id2"][following-sibling::psi[starts-with(concat(@delete,"-"),"attribute-")][following-sibling::nu[@or][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::iota[@number="false"][@xml:lang="no"][@xml:id="id4"]//eta[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::rho[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::rho)][following-sibling::omega[@xml:id="id7"][not(preceding-sibling::omega)][following-sibling::*[not(following-sibling::*)]//rho[@xml:lang="en-US"][@xml:id="id8"][following-sibling::xi[@xml:lang="no"][preceding-sibling::*[position() = 1]]/omicron[not(preceding-sibling::*)][not(following-sibling::*)]//tau[@xml:id="id9"]//omega[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]]]] + + + phi + 0 + @@ -1005,6 +1180,11 @@ //chi[@number]/lambda[not(following-sibling::*)]/rho[@xml:lang="no"][not(following-sibling::*)]/mu[@xml:id="id1"][not(following-sibling::*)]/lambda[@xml:id="id2"][not(preceding-sibling::*)]//epsilon[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[@xml:id="id4"][preceding-sibling::*[position() = 1]]/lambda[starts-with(@abort,"th")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[contains(@false,"e v")][@xml:id="id6"][following-sibling::alpha[following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[contains(@delete,"te value")][@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]/xi[@xml:lang="no"][not(preceding-sibling::*)]/epsilon[contains(concat(@string,"$"),"ontent$")][@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::delta[@token][@xml:lang="nb"][not(following-sibling::*)]//zeta[contains(@string,"alue")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]] + + + epsilon + 0 + @@ -1037,6 +1217,11 @@ //nu[contains(@abort,"234567")]/delta[contains(concat(@token,"$"),"0%$")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[not(following-sibling::*)]//mu[@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::mu[@abort][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]/omega[starts-with(@att,"12")][@xml:lang="en"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[starts-with(concat(@attribute,"-"),"this.nodeValue-")][@xml:id="id4"][not(following-sibling::*)]/rho[contains(@src,"100")][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[not(preceding-sibling::*)]//chi[@string="attribute"][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]] + + + mu + 0 + @@ -1061,6 +1246,11 @@ //alpha//zeta[@abort][not(preceding-sibling::*)][following-sibling::tau[@token][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]//tau[@true="another attribute value"]/theta[contains(concat(@delete,"$"),"attribute$")][@xml:lang="nb"][not(preceding-sibling::*)]/xi[contains(concat(@and,"$"),"Value$")][@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::omicron[@title][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::epsilon[@xml:lang="en-US"][@xml:id="id4"][not(child::node())][following-sibling::gamma[starts-with(@object,"_")][@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::theta[not(child::node())][following-sibling::kappa[@xml:id="id6"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::omicron[@title][@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 6]]/phi[starts-with(concat(@src,"-"),"attribute-")][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@title="_blank"][@xml:lang="nb"][preceding-sibling::*[position() = 1]]//sigma[@xml:lang="en-GB"][@xml:id="id9"]/theta[starts-with(@insert,"this.node")][@xml:lang="en-US"][@xml:id="id10"]//chi//*[contains(@abort,"e")][@xml:id="id11"][not(child::node())][following-sibling::*[@xml:id="id12"][not(following-sibling::*)]/kappa[contains(concat(@data,"$"),"alue$")][not(following-sibling::*)]]]][position() = 1]]]]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -1100,6 +1290,11 @@ //omega[@xml:lang="en-GB"]/tau[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::epsilon[contains(@att,"ttribute-")][following-sibling::*[position()=3]][not(child::node())][following-sibling::pi[contains(concat(@desciption,"$"),"nt$")][not(child::node())][following-sibling::omicron[@object][@xml:id="id1"][preceding-sibling::*[position() = 3]][following-sibling::epsilon[@false][not(following-sibling::*)]/alpha[@xml:lang="en-US"][not(following-sibling::*)]/phi[contains(@number,"lue")][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/delta[not(preceding-sibling::*)]/psi[starts-with(@desciption,"tru")][@xml:id="id4"][not(preceding-sibling::*)][not(preceding-sibling::psi or following-sibling::psi)]]]]][position() = 1]] + + + tau + 0 + @@ -1123,6 +1318,11 @@ //theta[contains(concat(@attrib,"$"),"lue$")][@xml:id="id1"]/phi[contains(@desciption,"on")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:lang="nb"]/tau[@string][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@token][@xml:id="id2"][not(following-sibling::*)][not(following-sibling::psi)]/tau[@xml:lang="en-US"][@xml:id="id3"] + + + tau + 1 + @@ -1141,6 +1341,11 @@ //epsilon[@src="123456789"]//alpha[not(preceding-sibling::*)]/delta[@xml:id="id1"][following-sibling::tau[@desciption][@xml:id="id2"][not(following-sibling::*)]/pi[contains(concat(@attribute,"$"),"ute value$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:lang="no-nb"][@xml:id="id3"]/*[starts-with(concat(@object,"-"),"attribute value-")][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[@xml:id="id5"][not(following-sibling::*)]//upsilon[@xml:id="id6"][following-sibling::gamma[starts-with(@true,"at")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]//delta[starts-with(@string,"t")][following-sibling::kappa[@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(concat(@desciption,"-"),"100%-")][preceding-sibling::*[position() = 2]]/mu[starts-with(@data,"another attribu")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::xi[contains(concat(@or,"$"),".nodeValue$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/kappa[contains(concat(@attrib,"$")," value$")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[contains(concat(@desciption,"$"),"se$")]//theta[@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]]]][position() = 1]]]] + + + delta + 0 + @@ -1176,6 +1381,11 @@ //xi[starts-with(concat(@attribute,"-"),"attribute-")][@xml:lang="en"][@xml:id="id1"]/*[@xml:lang="no-nb"]/zeta[starts-with(@or,"attribute-va")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[starts-with(@data,"attribute")][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@string][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[not(following-sibling::*)]//epsilon[starts-with(concat(@true,"-"),"this-")][@xml:id="id3"][not(following-sibling::*)]/gamma[@desciption][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[@xml:lang="no"][not(child::node())][following-sibling::theta[@xml:id="id5"][following-sibling::*[position()=3]][not(child::node())][following-sibling::xi[@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::pi[not(child::node())][following-sibling::lambda[@class][preceding-sibling::*[position() = 4]]/lambda[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::sigma[contains(@object,"alse")][@xml:id="id8"]/delta[@xml:lang="nb"][position() = 1]]]]][position() = 1]][position() = 1]] + + + gamma + 0 + @@ -1210,6 +1420,11 @@ //omicron[@insert]/gamma[@xml:id="id1"][not(child::node())][following-sibling::alpha[@abort="content"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//epsilon[contains(concat(@title,"$"),"his-is-att-value$")][not(child::node())][following-sibling::delta[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@src][@xml:lang="en-GB"][not(child::node())][following-sibling::*[@abort][@xml:lang="en"]/kappa[contains(@insert,"ont")][@xml:lang="no-nb"]/xi[starts-with(@data,"at")][@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[not(following-sibling::*)][position() = 1]]][position() = 1]]]] + + + gamma + 0 + @@ -1233,6 +1448,11 @@ //eta/xi[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@content][not(preceding-sibling::*)]/phi[not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:id="id2"]//epsilon[contains(concat(@attr,"$")," 1px green$")][not(following-sibling::*)]//zeta[contains(concat(@true,"$"),"23456789$")][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::zeta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@xml:lang="no"][@xml:id="id4"][following-sibling::zeta[@xml:id="id5"][following-sibling::*[position()=4]][following-sibling::iota[@delete][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::chi[starts-with(concat(@title,"-"),"123456789-")][@xml:id="id7"][following-sibling::omicron[starts-with(@or,"attribute v")][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::rho[contains(@name,"e")][@xml:lang="no"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]/phi[@xml:lang="no-nb"][not(preceding-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -1263,6 +1483,11 @@ //sigma[starts-with(@att,"th")][@xml:lang="no"][@xml:id="id1"]//sigma[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::rho[starts-with(concat(@true,"-"),"content-")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::rho[starts-with(concat(@insert,"-"),"solid 1px green-")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/zeta[@title][@xml:lang="nb"]/rho[@xml:lang="no-nb"][not(preceding-sibling::*)]][position() = 1]] + + + sigma + 1 + @@ -1279,6 +1504,11 @@ //zeta[starts-with(@false,"attribute val")][@xml:id="id1"]//eta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::kappa[following-sibling::*[position()=3]][not(child::node())][following-sibling::kappa[@xml:id="id3"][following-sibling::*[position()=2]][following-sibling::rho[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omicron[@desciption="another attribute value"][@xml:lang="nb"][not(following-sibling::*)]/tau[@and][@xml:id="id5"][not(following-sibling::*)]//chi[@token][@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[contains(concat(@name,"$"),"-att-value$")]//tau[contains(concat(@and,"$"),"789$")][following-sibling::pi[contains(@data,"0")][@xml:lang="nb"][not(following-sibling::*)]//delta[@src="true"][@xml:lang="nb"]/psi[@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@xml:id="id8"][not(preceding-sibling::*)]/tau[@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)]//lambda[not(following-sibling::*)]][position() = 1]]][position() = 1]]][position() = 1]] + + + eta + 0 + @@ -1311,6 +1541,11 @@ //phi[@xml:lang="en-GB"]//chi[contains(@desciption,"e")][@xml:lang="no-nb"]//omega[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[not(following-sibling::*)]//nu[contains(concat(@attr,"$"),"alue$")][@xml:lang="en-US"][not(preceding-sibling::*)]//iota[@xml:lang="en-US"]//rho[not(preceding-sibling::*)][not(following-sibling::*)]/phi[following-sibling::lambda[starts-with(concat(@desciption,"-"),"attribute-")][@xml:lang="no"][@xml:id="id2"][position() = 1]] + + + phi + 1 + @@ -1334,6 +1569,11 @@ //beta[@data][@xml:lang="en-US"][@xml:id="id1"]/lambda[starts-with(concat(@attr,"-"),"_blank-")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::iota[contains(concat(@or,"$"),"er attribute value$")][@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[contains(concat(@and,"$"),"e$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//epsilon[@or="123456789"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::epsilon[@attribute][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/zeta[@content][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]/*[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[contains(concat(@attrib,"$"),"ent$")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]] + + + lambda + 0 + @@ -1355,6 +1595,11 @@ //lambda[starts-with(concat(@data,"-"),"another attribute value-")][@xml:lang="en"]/xi[not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 1]][following-sibling::eta[starts-with(concat(@att,"-"),"this.nodeValue-")][@xml:id="id1"]//mu[@att][@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]//mu[@xml:lang="no"][not(following-sibling::*)]//chi[@xml:id="id3"]/lambda[contains(concat(@content,"$"),"ttribute value$")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::iota[contains(@name,"en")][preceding-sibling::*[position() = 1]][following-sibling::kappa[@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]]]] + + + xi + 0 + @@ -1377,6 +1622,11 @@ //*[starts-with(@string,"another attribute va")][@xml:lang="en"][@xml:id="id1"]/gamma[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[starts-with(concat(@token,"-"),"content-")][@xml:id="id3"]/rho[@true="attribute-value"][not(preceding-sibling::*)]/pi[@insert="123456789"][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::pi)]/chi[contains(concat(@delete,"$"),"content$")][@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::eta[@xml:lang="en"]/kappa[@xml:id="id5"]/delta[starts-with(@number,"a")][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::delta)]/epsilon[@abort][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::gamma[@xml:lang="en"][@xml:id="id7"][not(child::node())][following-sibling::delta[following-sibling::*[position()=2]][following-sibling::omega[starts-with(@or,"solid ")][@xml:id="id8"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 4]]/gamma[contains(@number,"e value")][@xml:lang="no"][@xml:id="id9"][not(child::node())][following-sibling::*[starts-with(@delete,"_")]/rho[@xml:lang="nb"][following-sibling::alpha[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::mu[@xml:id="id10"][preceding-sibling::*[position() = 2]]//*[@xml:lang="en-GB"][not(following-sibling::*)]//zeta[@abort][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@attribute="123456789"][not(following-sibling::*)]//iota[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]]]]] + + + gamma + 0 + @@ -1420,6 +1670,11 @@ //gamma[@xml:id="id1"]/tau[@xml:id="id2"][not(child::node())][following-sibling::phi[starts-with(@insert,"attribute-v")][@xml:lang="en-US"][@xml:id="id3"][following-sibling::pi//upsilon[@xml:lang="en-GB"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@title][@xml:lang="en-US"]/eta[contains(concat(@abort,"$"),"alue$")][not(child::node())][following-sibling::alpha[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]/epsilon[@and="solid 1px green"][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::nu[@desciption][@xml:lang="nb"]/psi[@xml:id="id6"][not(following-sibling::*)]//omicron[not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:lang="no"][not(child::node())][following-sibling::mu[not(following-sibling::*)]/iota[contains(concat(@true,"$"),"attribute$")][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@attr][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:lang="en-US"][@xml:id="id8"]//*[not(preceding-sibling::*)][position() = 1]][position() = 1]]]]]]]][position() = 1]] + + + tau + 0 + @@ -1453,6 +1708,11 @@ //iota[@xml:id="id1"]//kappa[@xml:id="id2"][not(child::node())][following-sibling::*[@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]//lambda[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@att][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::psi[@content="_blank"][@xml:id="id7"]//kappa[starts-with(concat(@data,"-"),"this-")][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -1472,6 +1732,11 @@ //tau[@data="solid 1px green"][@xml:lang="nb"][@xml:id="id1"]//zeta[@xml:lang="nb"][not(child::node())][following-sibling::upsilon[@xml:lang="nb"][preceding-sibling::*[position() = 1]]/*[@content="this-is-att-value"][not(preceding-sibling::*)][following-sibling::sigma[starts-with(concat(@false,"-"),"content-")][@xml:lang="nb"][not(following-sibling::*)]//lambda[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::theta[@desciption="attribute"][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@and][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(concat(@data,"-"),"100%-")][not(following-sibling::*)]//eta[@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]//alpha[not(child::node())][following-sibling::omicron[starts-with(@content,"this.nodeVal")][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@object="123456789"][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="no"][@xml:id="id5"][not(following-sibling::*)]/eta[@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[starts-with(@number,"this.")][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:id="id8"][preceding-sibling::*[position() = 2]]//iota/iota[@name][@xml:id="id9"][not(preceding-sibling::*)]/tau[following-sibling::chi[contains(@true,"e")][@xml:id="id10"][preceding-sibling::*[position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]] + + + zeta + 0 + @@ -1510,6 +1775,11 @@ //epsilon[contains(@attrib,"e")][@xml:id="id1"]//eta[@true][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@or][@xml:id="id2"][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 2]]//psi[@number][@xml:lang="nb"][@xml:id="id3"][following-sibling::*[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[@xml:lang="en"][@xml:id="id5"][not(following-sibling::*)]/gamma[@xml:id="id6"]/theta[not(preceding-sibling::*)][not(following-sibling::*)]/chi//lambda[@xml:lang="no-nb"]/gamma[@xml:lang="no"][@xml:id="id7"][not(child::node())][following-sibling::phi[@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::gamma[contains(@false,".nodeValue")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 3]]//tau[@xml:lang="no-nb"][@xml:id="id9"][not(child::node())][following-sibling::chi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]]] + + + eta + 0 + @@ -1543,6 +1813,11 @@ //pi[@string="100%"][@xml:lang="en"]/chi[@xml:lang="en"][@xml:id="id1"]/xi[contains(concat(@content,"$"),"se$")][not(preceding-sibling::*)]//alpha[contains(@title," ")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::rho[@xml:id="id3"][not(following-sibling::*)]/delta[@name="attribute value"][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[contains(concat(@delete,"$"),"e$")][@xml:lang="nb"][not(child::node())][following-sibling::epsilon[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::epsilon)]/alpha[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::psi[starts-with(concat(@attribute,"-"),"this.nodeValue-")][@xml:id="id5"][preceding-sibling::*[position() = 1]]//tau[starts-with(@title,"_blan")][not(following-sibling::*)]/*[@delete][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::psi[contains(@or,"nother attribute ")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::pi[following-sibling::nu[starts-with(concat(@object,"-"),"solid 1px green-")][@xml:id="id7"][preceding-sibling::*[position() = 3]][following-sibling::kappa[contains(@content,"attribute va")][@xml:id="id8"][not(child::node())][following-sibling::delta[@xml:lang="no"][not(following-sibling::*)]//phi[@and="attribute-value"][@xml:lang="no-nb"][not(child::node())][following-sibling::theta[contains(@att,"nk")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[starts-with(@object,"attr")][not(child::node())][following-sibling::mu[@xml:lang="nb"][not(following-sibling::*)]/phi[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@xml:lang="en-GB"][@xml:id="id11"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -1586,6 +1861,11 @@ //tau/xi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@insert][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@token][not(following-sibling::*)]/tau[@xml:id="id1"]//zeta[contains(@insert,"100")][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[not(child::node())][following-sibling::alpha[@xml:lang="en-US"][preceding-sibling::*[position() = 2]]]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -1604,6 +1884,11 @@ //omega[starts-with(@number,"_bla")][@xml:lang="en"]/tau[@xml:id="id1"][not(preceding-sibling::*)]/eta[contains(@src,"deValue")][@xml:lang="en"][following-sibling::gamma[contains(concat(@false,"$"),"100%$")][@xml:id="id2"][following-sibling::alpha[not(following-sibling::*)]/nu[starts-with(concat(@data,"-"),"this-")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[starts-with(@att,"attrib")][preceding-sibling::*[position() = 1]][following-sibling::pi[contains(@att,"a")][preceding-sibling::*[position() = 2]][following-sibling::*[@false][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::psi[starts-with(@and,"another attribu")][@xml:id="id4"][not(preceding-sibling::psi)]//epsilon[starts-with(concat(@insert,"-"),"attribute-")][@xml:id="id5"][following-sibling::omega[@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/theta[@attribute][@xml:id="id7"][not(child::node())][following-sibling::nu[@xml:lang="en"]//omicron[@att][@xml:lang="en-US"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[@insert][@xml:lang="no"][following-sibling::*[position()=3]][not(child::node())][following-sibling::alpha[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::lambda[@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::nu[not(following-sibling::*)]//xi[@xml:lang="en"][@xml:id="id10"][following-sibling::*[position()=3]][not(child::node())][following-sibling::tau[contains(concat(@data,"$"),"false$")][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[@xml:lang="en"][not(child::node())][following-sibling::theta[@delete="attribute"][@xml:id="id12"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + eta + 0 + @@ -1642,6 +1927,11 @@ //gamma[@xml:id="id1"]//rho[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id3"][not(following-sibling::*)]//chi[@string][not(following-sibling::chi)][not(child::node())][following-sibling::epsilon[contains(concat(@abort,"$"),"value$")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::theta[@data="solid 1px green"][@xml:id="id5"]//omega[starts-with(@true,"this.n")][@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)][not(preceding-sibling::omega or following-sibling::omega)]/theta[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[contains(concat(@attribute,"$"),"bute value$")][@xml:lang="en-GB"][following-sibling::kappa[@src][@xml:lang="nb"][@xml:id="id8"]/iota[@xml:id="id9"][not(following-sibling::*)]/upsilon[starts-with(@insert,"fal")][@xml:lang="no"][@xml:id="id10"]//phi[not(following-sibling::*)]/lambda[not(following-sibling::*)]//chi[@data][@xml:lang="no-nb"][not(child::node())][following-sibling::theta[@xml:id="id11"][not(following-sibling::*)]]]][position() = 1]]]] + + + rho + 0 + @@ -1674,6 +1964,11 @@ //tau[@xml:lang="no-nb"]//chi[@name="this.nodeValue"][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@delete][@xml:lang="en-US"][@xml:id="id1"][not(child::node())][following-sibling::kappa[@true][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/*[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::sigma[@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::nu[@xml:id="id5"][preceding-sibling::*[position() = 2]]//delta[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[starts-with(@desciption,"true")][@xml:lang="no-nb"][@xml:id="id7"]/omega[starts-with(concat(@abort,"-"),"123456789-")][@xml:id="id8"]//tau[starts-with(concat(@src,"-"),"false-")][@xml:lang="nb"][@xml:id="id9"][not(following-sibling::*)]//lambda[contains(concat(@or,"$"),"een$")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[contains(@attribute,"ls")][@xml:lang="no-nb"][following-sibling::chi[@class][@xml:id="id10"][not(following-sibling::*)]//lambda[@string][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::psi[following-sibling::upsilon[@xml:id="id11"][not(following-sibling::*)]/chi[starts-with(@src,"123456")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::theta[preceding-sibling::*[position() = 1]][following-sibling::epsilon[contains(@number,"ribute value")][preceding-sibling::*[position() = 2]][not(preceding-sibling::epsilon or following-sibling::epsilon)][following-sibling::kappa[@xml:lang="nb"]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + rho + 0 + @@ -1712,6 +2007,11 @@ //epsilon[contains(@attribute,"als")][@xml:id="id1"]/omicron[@xml:id="id2"]/mu[starts-with(@title,"another att")][@xml:lang="nb"][@xml:id="id3"][following-sibling::kappa[@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::psi[starts-with(@number,"this-is-at")][@xml:lang="en"][preceding-sibling::*[position() = 2]]//*[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@xml:id="id5"][not(preceding-sibling::*)]/rho[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[@xml:id="id6"]/lambda[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)]/chi[@xml:lang="nb"][@xml:id="id8"][not(following-sibling::chi)][not(child::node())][following-sibling::theta[contains(concat(@class,"$"),"ue$")][@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 2]]//pi[starts-with(concat(@data,"-"),"attribute-")][not(preceding-sibling::*)][not(preceding-sibling::pi)][not(child::node())][following-sibling::nu[@att][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -1742,6 +2042,11 @@ //gamma//upsilon[not(child::node())][following-sibling::nu[@xml:id="id1"][not(child::node())][following-sibling::eta[starts-with(concat(@att,"-"),"another attribute value-")][preceding-sibling::*[position() = 2]]//sigma[not(preceding-sibling::*)]//lambda[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[@xml:id="id3"][following-sibling::mu[contains(@title,"tt-valu")][@xml:id="id4"][not(following-sibling::*)]/sigma[contains(@title,"ibute")]/theta[contains(@true," value")][not(following-sibling::*)]/gamma[position() = 1]]][position() = 1]]] + + + upsilon + 0 + @@ -1766,6 +2071,11 @@ //eta[@xml:id="id1"]//gamma[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[not(child::node())][following-sibling::lambda[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::xi[starts-with(concat(@delete,"-"),"this-")][preceding-sibling::*[position() = 2]]//psi[contains(@desciption,"tribute")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]/tau[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omega[@content="true"][@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/mu[contains(concat(@number,"$"),"lse$")][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="en-US"][@xml:id="id8"]//pi[not(following-sibling::*)]//pi[contains(@title,"t")][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[not(preceding-sibling::*)]/gamma[contains(@name,"ntent")][not(child::node())][following-sibling::theta[@string][@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[not(following-sibling::*)]//alpha[contains(@src,"x gree")][@xml:lang="nb"]//delta[@xml:lang="en-US"][not(child::node())][following-sibling::upsilon[contains(@delete,"k")][@xml:lang="nb"][@xml:id="id11"][following-sibling::*[position()=1]][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id12"]/upsilon[starts-with(@delete,"this-is-att-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@xml:id="id13"][following-sibling::*[position()=1]][following-sibling::omega[starts-with(concat(@class,"-"),"true-")][@xml:lang="no"][@xml:id="id14"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -1811,6 +2121,11 @@ //pi[@xml:id="id1"]/zeta[contains(concat(@and,"$"),"n$")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=5]][following-sibling::gamma[@xml:lang="en-US"][@xml:id="id3"][not(child::node())][following-sibling::psi[@xml:lang="en"][not(child::node())][following-sibling::iota[@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::zeta[starts-with(@number,"attr")][@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::beta[@xml:lang="en"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//gamma[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[contains(concat(@attrib,"$"),"3456789$")][@xml:id="id5"][preceding-sibling::*[position() = 1]]//omega[starts-with(@content,"c")][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:lang="no-nb"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[starts-with(@attribute,"att")][@xml:lang="nb"]][position() = 1]][position() = 1]]]][position() = 1]] + + + zeta + 0 + @@ -1835,6 +2150,11 @@ //nu[@xml:id="id1"]/chi[contains(concat(@class,"$"),"k$")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[@xml:lang="nb"][not(preceding-sibling::*)]/mu[contains(@number,"ute")][@xml:lang="en-US"][not(following-sibling::*)]/kappa[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[starts-with(concat(@number,"-"),"attribute value-")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/iota[starts-with(concat(@number,"-"),"true-")][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id4"][following-sibling::upsilon[@xml:id="id5"][position() = 1]][position() = 1]][position() = 1]]] + + + chi + 0 + @@ -1857,6 +2177,11 @@ //delta[starts-with(concat(@attribute,"-"),"true-")][@xml:id="id1"]/chi[starts-with(concat(@or,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//beta[@content][@xml:id="id4"]//upsilon[@delete][@xml:id="id5"][not(following-sibling::*)]/rho[contains(@desciption,"tru")][@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)]//nu[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::pi[@title][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][@xml:id="id8"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omega[starts-with(@number,"123")][@xml:lang="no-nb"][@xml:id="id9"][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id10"]/sigma[@xml:lang="en-US"][@xml:id="id11"][following-sibling::omicron[@xml:lang="nb"][@xml:id="id12"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[starts-with(concat(@or,"-"),"123456789-")][@xml:id="id13"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]]] + + + chi + 0 + @@ -1886,6 +2211,11 @@ //epsilon[@object="attribute"][@xml:id="id1"]/mu[starts-with(@att,"1")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu//lambda[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@attrib][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::*[position()=3]][following-sibling::omicron[starts-with(concat(@title,"-"),"_blank-")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::omicron)][not(child::node())][following-sibling::upsilon[starts-with(concat(@number,"-"),"_blank-")][@xml:lang="en"][not(child::node())][following-sibling::iota[starts-with(concat(@delete,"-"),"100%-")][@xml:lang="no-nb"][@xml:id="id7"]/psi[not(following-sibling::*)]//iota[starts-with(@att,"this-is-att-valu")][@xml:id="id8"][position() = 1]]]]][position() = 1]] + + + phi + 0 + @@ -1911,6 +2241,11 @@ //omicron[starts-with(concat(@title,"-"),"content-")][@xml:id="id1"]/zeta[starts-with(concat(@att,"-"),"content-")][@xml:lang="en"]/psi[@att][@xml:lang="no"][not(following-sibling::*)][not(preceding-sibling::psi)]/xi[@or="attribute value"][not(child::node())][following-sibling::upsilon[not(following-sibling::*)]//alpha[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::xi[contains(@false,"fa")][@xml:lang="en"][following-sibling::*[position()=4]][following-sibling::xi[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::iota[contains(concat(@object,"$")," attribute value$")][@xml:id="id2"][following-sibling::lambda[starts-with(concat(@title,"-"),"this-")][@xml:lang="no-nb"][@xml:id="id3"][not(child::node())][following-sibling::omicron[@xml:lang="en"][preceding-sibling::*[position() = 5]]/alpha[@data="123456789"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@data="solid 1px green"][@xml:lang="en-GB"]//delta[following-sibling::*[position()=1]][following-sibling::lambda[starts-with(concat(@desciption,"-"),"this.nodeValue-")][@xml:lang="en-US"]/sigma[starts-with(@name,"12")][@xml:lang="en-GB"]/phi[contains(concat(@attrib,"$"),"100%$")]//zeta[@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -1946,6 +2281,11 @@ //chi[starts-with(concat(@object,"-"),"solid 1px green-")][@xml:lang="en-US"]/xi[contains(@string,"onte")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::iota[@insert="true"][preceding-sibling::*[position() = 1]]/mu[@number="another attribute value"][@xml:lang="nb"][not(child::node())][following-sibling::omicron[@or="this-is-att-value"][@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]]/eta[contains(@desciption,"deValue")][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 1]]/upsilon[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[@data="solid 1px green"][@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/*[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::lambda[starts-with(@attr,"1234")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]]//zeta[starts-with(concat(@string,"-"),"content-")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -1971,6 +2311,11 @@ //epsilon[@data="true"]//lambda[starts-with(@attrib,"false")][@xml:lang="nb"][following-sibling::*[@xml:lang="no"][not(following-sibling::*)]/eta[contains(concat(@delete,"$"),"ribute value$")][@xml:lang="en-US"][@xml:id="id1"]/xi[@title][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id2"]//omicron[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@false="this.nodeValue"][following-sibling::mu[not(child::node())][following-sibling::*[starts-with(concat(@false,"-"),"another attribute value-")][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::beta[starts-with(@content,"so")][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@att][@xml:id="id4"][not(following-sibling::*)][position() = 1]]][position() = 1]]]]]] + + + lambda + 0 + @@ -1994,6 +2339,11 @@ //rho[@xml:lang="en"][@xml:id="id1"]/*[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]/omega[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[starts-with(@data,"thi")][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@false][following-sibling::*[position()=1]][not(preceding-sibling::eta)][following-sibling::theta[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]]/iota[not(preceding-sibling::*)]//epsilon[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]] + + + epsilon + 0 + @@ -2016,6 +2366,11 @@ //eta[contains(@token,"bla")][@xml:lang="no"][@xml:id="id1"]/tau[@attribute="another attribute value"][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@abort="this-is-att-value"][@xml:lang="en-US"][not(child::node())][following-sibling::delta[starts-with(concat(@title,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@token][@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=4]][not(child::node())][following-sibling::theta[@xml:lang="en"][@xml:id="id5"][following-sibling::*[position()=3]][following-sibling::xi[@xml:lang="no"][@xml:id="id6"][following-sibling::beta[@xml:lang="no"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::kappa[contains(concat(@desciption,"$"),"alse$")][@xml:id="id7"][not(following-sibling::*)]/kappa[not(following-sibling::*)]//theta[@xml:id="id8"][not(child::node())][following-sibling::omicron[@data][following-sibling::psi[@xml:lang="nb"][not(following-sibling::*)]//rho[contains(@token,"t")][@xml:lang="nb"][not(following-sibling::*)][not(preceding-sibling::rho)]//omega[@xml:lang="en-GB"][@xml:id="id9"][not(following-sibling::*)]/eta[starts-with(@false,"t")][@xml:lang="en-GB"]/eta[@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)]//omicron[@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + kappa + 0 + @@ -2051,6 +2406,11 @@ //chi[@attrib="content"][@xml:id="id1"]/nu[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="nb"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[@xml:id="id4"]//beta[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::lambda[contains(concat(@name,"$"),"his-is-att-value$")][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[contains(concat(@att,"$"),"deValue$")][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -2067,6 +2427,11 @@ //lambda[@xml:lang="en-US"][@xml:id="id1"]//omega[@xml:lang="no"][@xml:id="id2"]//*[@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]//sigma[@name][@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]/pi[starts-with(@token,"attribute-va")][@xml:lang="no-nb"][not(preceding-sibling::*)]/epsilon[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::sigma[@true][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[starts-with(@attr,"_bla")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::theta[@xml:lang="en"][@xml:id="id6"]//eta[@name][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@name][@xml:lang="nb"][following-sibling::*[position()=3]][following-sibling::eta[@title][@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::lambda[@xml:id="id8"][preceding-sibling::*[position() = 3]][following-sibling::pi[@xml:id="id9"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/omicron[not(preceding-sibling::*)][not(following-sibling::*)]//psi[@xml:lang="no-nb"][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id10"][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]]]][position() = 1]]]]] + + + epsilon + 0 + @@ -2100,6 +2465,11 @@ //eta[contains(@attrib,"lue")][@xml:id="id1"]/phi[@data][@xml:lang="en-GB"][following-sibling::omicron[contains(@attribute,"-att-val")][not(following-sibling::*)]/kappa[contains(@data,"t")][not(preceding-sibling::*)][following-sibling::nu[@title][following-sibling::*[position()=3]][following-sibling::delta[@xml:id="id2"][not(preceding-sibling::delta)][following-sibling::*[@xml:id="id3"][preceding-sibling::*[position() = 3]][following-sibling::xi[starts-with(concat(@delete,"-"),"another attribute value-")][@xml:id="id4"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/theta[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[contains(@att,"tribu")][@xml:lang="no"][@xml:id="id6"][following-sibling::omicron[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[@content][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@number][@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)]][position() = 1]]]]][position() = 1]] + + + phi + 0 + @@ -2126,6 +2496,11 @@ //beta[@xml:lang="no-nb"][@xml:id="id1"]//tau[@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::psi[@xml:id="id3"][preceding-sibling::*[position() = 1]]//xi[contains(concat(@false,"$"),"alse$")][@xml:id="id4"][following-sibling::kappa[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[not(preceding-sibling::*)]/alpha[@xml:id="id5"]/phi[@att][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::upsilon[@and][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omega[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]] + + + tau + 0 + @@ -2150,6 +2525,11 @@ //mu[@class]//pi[starts-with(concat(@delete,"-"),"true-")][not(following-sibling::*)]/omicron[contains(concat(@insert,"$"),"456789$")][@xml:lang="en-GB"][not(child::node())][following-sibling::lambda[@object][@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]]/delta[@or="_blank"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[starts-with(concat(@true,"-"),"100%-")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[contains(@name,"ttribut")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)]/kappa[contains(concat(@token,"$"),"attribute$")][@xml:lang="no-nb"][not(following-sibling::*)]/pi[@false][@xml:id="id4"][following-sibling::phi[@and][@xml:id="id5"][not(following-sibling::*)]/rho[starts-with(concat(@false,"-"),"attribute-")][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:id="id6"][not(following-sibling::*)]//lambda[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@name][@xml:lang="nb"][@xml:id="id8"][following-sibling::*[position()=3]][not(child::node())][following-sibling::lambda[@xml:lang="en"][@xml:id="id9"][not(child::node())][following-sibling::alpha[starts-with(@delete,"a")][@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="no"][@xml:id="id10"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -2184,6 +2564,11 @@ //nu[@attribute][@xml:lang="en"]//xi[contains(@object,"e")][@xml:lang="no"][@xml:id="id1"][following-sibling::*[position()=5]][not(child::node())][following-sibling::psi[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::pi[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omega[starts-with(@name,"false")][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][following-sibling::upsilon[@xml:lang="nb"][@xml:id="id4"][following-sibling::sigma[@true][@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)]/xi[@src][@xml:lang="no"][@xml:id="id6"][not(following-sibling::*)]//*[@attrib][@xml:id="id7"][not(child::node())][following-sibling::psi[starts-with(@attribute,"tr")][@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]/rho[@xml:id="id9"]/omicron[@desciption][@xml:lang="en"][not(preceding-sibling::omicron)][following-sibling::xi[not(following-sibling::*)]]][position() = 1]][position() = 1]]]][position() = 1]] + + + xi + 0 + @@ -2209,6 +2594,11 @@ //chi[@xml:id="id1"]//gamma[@token][@xml:lang="no"][@xml:id="id2"][following-sibling::*[position()=3]][following-sibling::tau[@xml:lang="en-GB"][following-sibling::*[position()=2]][following-sibling::xi[@xml:id="id3"][not(child::node())][following-sibling::xi[@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//upsilon[@xml:id="id5"][not(preceding-sibling::*)]/omega[contains(concat(@true,"$"),"0%$")][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::nu[preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::iota[@number="100%"][@xml:lang="en"][@xml:id="id7"][not(following-sibling::*)]/upsilon[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(@desciption,"t")][@xml:lang="en-US"][@xml:id="id9"]/*]][position() = 1]][position() = 1]]][position() = 1]] + + + gamma + 0 + @@ -2235,6 +2625,11 @@ //nu[@xml:lang="en"]//tau[contains(concat(@true,"$"),"attribute value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(preceding-sibling::tau)]/omega[@false="attribute value"][@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)]//phi[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::rho[contains(concat(@att,"$"),"lank$")][not(following-sibling::*)]/eta[@xml:id="id2"][following-sibling::*[position()=3]][following-sibling::omicron[starts-with(concat(@att,"-"),"false-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::rho[@xml:id="id3"][following-sibling::delta[@xml:lang="en"][not(preceding-sibling::delta)]//omega[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/rho/alpha[following-sibling::*[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::sigma[@abort][@xml:id="id5"][not(following-sibling::*)]/omicron[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::chi[@xml:id="id7"][not(child::node())][following-sibling::iota[starts-with(concat(@true,"-"),"solid 1px green-")][@xml:id="id8"][preceding-sibling::*[position() = 3]][following-sibling::kappa[@xml:id="id9"]/nu[@and][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::iota[@or][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//iota[@xml:lang="no"][following-sibling::gamma[@att="this.nodeValue"][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]] + + + phi + 0 + @@ -2275,6 +2670,11 @@ //upsilon[contains(@insert,"true")][@xml:lang="no"]//delta[starts-with(concat(@and,"-"),"this.nodeValue-")][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[starts-with(concat(@string,"-"),"this.nodeValue-")][@xml:id="id2"][not(child::node())][following-sibling::iota[@desciption][@xml:id="id3"][not(child::node())][following-sibling::psi[@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::rho/zeta[@xml:id="id5"][not(child::node())][following-sibling::beta[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]] + + + omicron + 0 + @@ -2293,6 +2693,11 @@ //psi[@abort][@xml:lang="en"]/beta[starts-with(concat(@attribute,"-"),"123456789-")][@xml:id="id1"]/tau[@attr]/beta[@name][following-sibling::phi[contains(concat(@object,"$"),"lse$")][@xml:id="id2"][not(following-sibling::*)]/psi[starts-with(@abort,"f")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@number][@xml:lang="en-US"]/rho[starts-with(concat(@desciption,"-"),"_blank-")][@xml:id="id3"]/omicron[@att][@xml:lang="nb"][@xml:id="id4"][position() = 1]][position() = 1]] + + + beta + 1 + @@ -2315,6 +2720,11 @@ //lambda[contains(@src,"attribute-valu")][@xml:id="id1"]//upsilon[@xml:lang="en-US"][not(child::node())][following-sibling::nu[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(preceding-sibling::nu or following-sibling::nu)][not(preceding-sibling::nu)][following-sibling::lambda[@data][@xml:id="id3"][not(following-sibling::*)]//theta[@string="attribute"][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[not(child::node())][following-sibling::pi[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@class="attribute"][@xml:lang="nb"][preceding-sibling::*[position() = 3]]/lambda[starts-with(concat(@title,"-"),"this.nodeValue-")][@xml:lang="no-nb"][@xml:id="id6"][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 1]][following-sibling::iota[@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::phi[contains(@title,"ue")][@xml:lang="en"][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@attr="100%"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::kappa[starts-with(@delete,"1234")][@xml:lang="no-nb"][not(following-sibling::*)]//gamma[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id8"][following-sibling::sigma[@or][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]]]] + + + upsilon + 0 + @@ -2343,6 +2753,11 @@ //phi[@xml:id="id1"]//pi[@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]//phi[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:id="id4"][preceding-sibling::*[position() = 1]]/sigma[contains(concat(@delete,"$"),"x green$")][following-sibling::kappa[contains(@true,"ibute val")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[@title][position() = 1]]]] + + + phi + 1 + @@ -2360,6 +2775,11 @@ //omicron[@src="this-is-att-value"][@xml:lang="no"]/upsilon[@and="attribute-value"][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[contains(concat(@or,"$"),"nodeValue$")][@xml:id="id1"][not(following-sibling::*)]/pi[@attrib][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:lang="no"][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[@xml:id="id4"][not(child::node())][following-sibling::delta[@attr][@xml:lang="nb"]//mu[not(preceding-sibling::*)][not(following-sibling::*)]//*[@insert="123456789"][@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::lambda[@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)][not(preceding-sibling::lambda)]/chi[@xml:lang="no-nb"][not(preceding-sibling::*)]//nu[@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)]][position() = 1]]][position() = 1]]] + + + upsilon + 0 + @@ -2385,6 +2805,11 @@ //iota[contains(concat(@src,"$"),"e$")][@xml:lang="no"][@xml:id="id1"]//omicron[@xml:id="id2"][not(child::node())][following-sibling::nu[contains(@number,"lid 1px gre")][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::mu[@xml:id="id4"][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 3]]/pi[starts-with(@desciption,"another attribute va")][@xml:id="id5"]//omega[@false][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -2402,6 +2827,11 @@ //kappa[@xml:lang="no"]/nu[contains(concat(@class,"$"),"ontent$")][@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[not(child::node())][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 2]][not(preceding-sibling::delta)][following-sibling::theta[@xml:id="id3"][preceding-sibling::*[position() = 3]]//omicron[@desciption][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(@content,"fa")][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][not(child::node())][following-sibling::tau[contains(@delete,"value")][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::tau[@xml:lang="nb"][@xml:id="id5"]//iota[not(preceding-sibling::*)]/omicron[contains(@and,"ue")][@xml:lang="no"][@xml:id="id6"]/mu[contains(concat(@insert,"$"),"lue$")][@xml:id="id7"][not(preceding-sibling::*)]/phi[contains(@desciption,"0%")][@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/omega[@xml:lang="no"][@xml:id="id9"][following-sibling::epsilon[@attr][@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]]//tau[@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="en-US"][not(preceding-sibling::*)]/rho[not(child::node())][following-sibling::zeta[contains(concat(@true,"$"),"en$")][@xml:id="id12"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(@attr,"solid 1px")][@xml:id="id13"][preceding-sibling::*[position() = 2]]//xi[@xml:lang="no-nb"][@xml:id="id14"][not(following-sibling::*)]/phi[not(preceding-sibling::*)]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + nu + 0 + @@ -2446,6 +2876,11 @@ //omicron[@xml:lang="no-nb"][@xml:id="id1"]//psi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/omicron[@data][@xml:lang="en-GB"][not(preceding-sibling::*)]/*[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@abort][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@xml:lang="en-US"][not(following-sibling::*)]/*[starts-with(@and,"fals")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]] + + + psi + 0 + @@ -2467,6 +2902,11 @@ //psi[@xml:lang="no-nb"]//omicron[@xml:id="id1"][not(preceding-sibling::*)]//omega[@class="_blank"]/xi[contains(@and,"ue")][@xml:lang="no"][@xml:id="id2"]//pi[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@attrib][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::omega[@content][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[contains(concat(@abort,"$"),"ontent$")][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::psi[contains(concat(@or,"$"),"te-value$")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omicron[@class][@xml:id="id6"]//phi[@xml:lang="nb"][not(preceding-sibling::*)]//delta[contains(@att,"00%")][@xml:id="id7"][not(following-sibling::*)]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -2493,6 +2933,11 @@ //kappa[@xml:id="id1"]/zeta[@xml:lang="en-US"][not(preceding-sibling::*)]/nu[starts-with(@title,"con")][@xml:id="id2"][not(following-sibling::*)]//phi[starts-with(concat(@and,"-"),"true-")][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="nb"]//psi[@xml:lang="no-nb"][@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]]]] + + + phi + 1 + @@ -2513,6 +2958,11 @@ //*[@xml:lang="en-US"]//psi[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@xml:lang="no"][not(preceding-sibling::*)]//omicron[@attr="true"][@xml:lang="nb"][following-sibling::epsilon[@delete][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::tau[not(following-sibling::*)]/phi[following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[starts-with(concat(@true,"-"),"attribute value-")][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/xi[not(preceding-sibling::*)][not(child::node())][following-sibling::rho[contains(@content,"tribute value")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[@xml:id="id4"][following-sibling::gamma[not(following-sibling::*)]//theta[@xml:id="id5"]/xi[@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::pi[starts-with(concat(@abort,"-"),"this-")][@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[preceding-sibling::*[position() = 2]]//kappa[starts-with(concat(@token,"-"),"100%-")][@xml:lang="en-US"][not(child::node())][following-sibling::iota[starts-with(concat(@abort,"-"),"123456789-")][@xml:id="id8"][preceding-sibling::*[position() = 1]]]][position() = 1]]][position() = 1]]][position() = 1]]]][position() = 1]]] + + + omicron + 0 + @@ -2548,6 +2998,11 @@ //omega[@data="100%"][@xml:lang="en"][@xml:id="id1"]/alpha[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(preceding-sibling::alpha)][following-sibling::xi[starts-with(concat(@and,"-"),"attribute-")][@xml:id="id3"][following-sibling::*[position()=4]][not(child::node())][following-sibling::psi[@desciption][following-sibling::*[position()=3]][not(child::node())][following-sibling::xi[not(child::node())][following-sibling::*[contains(@desciption,"nten")][@xml:id="id4"][not(child::node())][following-sibling::pi[@xml:lang="en-US"][not(following-sibling::*)]/lambda[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@and="this-is-att-value"][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)]//phi[@xml:lang="no"][not(child::node())][following-sibling::xi[contains(concat(@and,"$"),"nk$")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]] + + + alpha + 0 + @@ -2570,6 +3025,11 @@ //beta[@attribute][@xml:lang="no"]/*[@xml:lang="en-GB"][not(preceding-sibling::*)]//rho[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@xml:lang="en"]//xi[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id3"]] + + + xi + 0 + @@ -2591,6 +3051,11 @@ //beta[starts-with(@attr,"attribu")]/xi[contains(@number,"id 1px ")][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[contains(@attrib,"e")][@xml:id="id1"][not(following-sibling::*)]//zeta[starts-with(@desciption,"t")][@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]/nu[starts-with(@desciption,"fals")][not(preceding-sibling::*)][not(following-sibling::*)]/rho[starts-with(@or,"another attribut")][@xml:lang="no"][@xml:id="id3"][following-sibling::omicron[@xml:lang="nb"]//omega[@xml:lang="no"][not(following-sibling::*)][position() = 1]]] + + + xi + 0 + @@ -2611,6 +3076,11 @@ //nu[@xml:id="id1"]/pi[starts-with(@abort,"1")][@xml:lang="no"][@xml:id="id2"][following-sibling::eta[starts-with(@att,"1")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[contains(@delete,"e")][@xml:lang="en-US"][not(preceding-sibling::*)]//beta[@xml:id="id3"][not(preceding-sibling::*)]/omega[starts-with(concat(@false,"-"),"100%-")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[starts-with(@attr,"attribute-v")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]/eta[@true="this-is-att-value"][@xml:lang="no-nb"][@xml:id="id6"]/sigma[@true="attribute value"][@xml:lang="no"][@xml:id="id7"][not(following-sibling::*)]/omega[not(preceding-sibling::*)]/alpha[contains(concat(@content,"$")," attribute value$")][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@number][@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::epsilon[following-sibling::epsilon[@xml:lang="en-GB"]/psi[@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[not(preceding-sibling::*)][following-sibling::iota[not(child::node())][following-sibling::phi[@xml:id="id11"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/epsilon[@xml:id="id12"][not(following-sibling::*)]/pi[@xml:id="id13"][not(preceding-sibling::*)]//*[@xml:lang="en-GB"][@xml:id="id14"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(concat(@token,"-"),"content-")][@xml:lang="no-nb"][@xml:id="id15"]/tau[@object][@xml:id="id16"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + pi + 0 + @@ -2658,6 +3128,11 @@ //iota[starts-with(concat(@desciption,"-"),"this.nodeValue-")][@xml:id="id1"]/psi[starts-with(concat(@attribute,"-"),"another attribute value-")][@xml:id="id2"]/mu[@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@attr][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="no"][not(child::node())][following-sibling::iota[contains(@insert,"lid 1")][not(following-sibling::*)]/beta[@xml:id="id5"][not(preceding-sibling::*)]/beta[@string="true"][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::epsilon[contains(concat(@src,"$"),"ribute value$")][@xml:lang="en-US"][@xml:id="id6"]//omega[@xml:lang="en-US"][not(preceding-sibling::*)][position() = 1]][position() = 1]]] + + + kappa + 0 + @@ -2681,6 +3156,11 @@ //omicron[@string][@xml:id="id1"]/nu[starts-with(@false,"co")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::theta//pi[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::nu[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[@attribute][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(preceding-sibling::alpha)][following-sibling::lambda[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][following-sibling::psi[@attrib][@xml:lang="en"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]]]]]] + + + nu + 0 + @@ -2698,6 +3178,11 @@ //gamma[@string][@xml:lang="en"]//tau[@token][@xml:lang="no-nb"][@xml:id="id1"][not(following-sibling::*)]//zeta[starts-with(@object,"conten")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@true][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::*[@xml:id="id4"][preceding-sibling::*[position() = 2]]//iota[@string="123456789"]//epsilon[starts-with(@att,"this.nodeValu")][@xml:lang="en-GB"][@xml:id="id5"][not(child::node())][following-sibling::upsilon[@xml:id="id6"][preceding-sibling::*[position() = 1]]]]] + + + zeta + 0 + @@ -2717,6 +3202,11 @@ //psi[@xml:lang="no-nb"][@xml:id="id1"]/nu[@attribute][@xml:lang="no"][@xml:id="id2"]//eta[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[contains(@class,"ntent")][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//rho[starts-with(concat(@or,"-"),"false-")][following-sibling::kappa[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::gamma[not(child::node())][following-sibling::xi[@object][not(child::node())][following-sibling::iota[@string][preceding-sibling::*[position() = 4]][not(preceding-sibling::iota)][following-sibling::upsilon[@desciption]//lambda[contains(concat(@string,"$")," value$")][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@attr][@xml:lang="en-GB"][@xml:id="id5"][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + rho + 0 + @@ -2741,6 +3231,11 @@ //kappa[@attr="this.nodeValue"][@xml:lang="en-GB"][@xml:id="id1"]/omega[@xml:id="id2"][not(preceding-sibling::*)]/zeta[@xml:lang="nb"][@xml:id="id3"]/mu[@xml:lang="en-GB"][not(following-sibling::*)]//eta[@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::beta[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[@xml:lang="nb"][@xml:id="id6"][not(child::node())][following-sibling::alpha[starts-with(@false,"solid 1px ")][@xml:lang="nb"][@xml:id="id7"][not(child::node())][following-sibling::omega[contains(@src,"attribute")][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::mu[preceding-sibling::*[position() = 5]][following-sibling::*[position()=1]][following-sibling::epsilon[contains(concat(@delete,"$"),"en$")][@xml:lang="en-US"][@xml:id="id8"][not(following-sibling::*)]/xi[contains(@and,"00%")][@xml:lang="nb"][not(following-sibling::*)]//tau[@xml:lang="nb"]/alpha[starts-with(@name,"solid 1px gr")][@xml:lang="no"][not(preceding-sibling::*)]//pi[@xml:lang="no-nb"][not(following-sibling::*)]/kappa[@xml:lang="en"][@xml:id="id9"]/beta[@xml:id="id10"][not(following-sibling::*)]//omega[starts-with(@number,"con")][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[starts-with(@object,"attribute valu")][@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@attr="attribute value"][@xml:lang="no"][@xml:id="id12"][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + eta + 0 + @@ -2780,6 +3275,11 @@ //kappa[contains(concat(@attr,"$"),"e-value$")][@xml:lang="en-US"][@xml:id="id1"]/mu[@xml:lang="no-nb"][@xml:id="id2"][following-sibling::alpha[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="nb"][not(following-sibling::*)]/alpha[starts-with(@desciption,"_")][@xml:lang="en"][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[@xml:lang="nb"][not(child::node())][following-sibling::tau[contains(@attrib,"fal")][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + mu + 0 + @@ -2797,6 +3297,11 @@ //beta[@data][@xml:lang="no-nb"][@xml:id="id1"]//tau[not(preceding-sibling::*)]//*[not(preceding-sibling::*)][not(child::node())][following-sibling::eta[starts-with(@name,"solid 1px gr")][following-sibling::pi[starts-with(@token,"attribute val")][@xml:lang="en"][not(following-sibling::*)][not(following-sibling::pi)]//tau[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::psi[@attribute][@xml:lang="en"]/*[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::theta[@string="this.nodeValue"][@xml:id="id4"][not(child::node())][following-sibling::upsilon[@delete][@xml:id="id5"][preceding-sibling::*[position() = 2]]/lambda[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]]] + + + any + 0 + @@ -2820,6 +3325,11 @@ //psi[@xml:id="id1"]//psi[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(preceding-sibling::psi or following-sibling::psi)]/omega[@data][following-sibling::pi[@xml:id="id3"][following-sibling::omega[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[@attrib][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::gamma[starts-with(concat(@class,"-"),"content-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//omicron[@attrib][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::theta[contains(concat(@insert,"$"),"ent$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[contains(@attribute,"t-value")][@xml:id="id5"][preceding-sibling::*[position() = 2]]/iota[@xml:id="id6"][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + omega + 0 + @@ -2842,6 +3352,11 @@ //omega[starts-with(@att,"10")][@xml:lang="no"][@xml:id="id1"]/eta[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[starts-with(concat(@object,"-"),"this-")][@xml:id="id2"][following-sibling::*[position()=2]][following-sibling::upsilon[@xml:lang="no-nb"][not(child::node())][following-sibling::lambda[contains(@string,"te value")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 3]]//omega[starts-with(@data,"solid 1px")][@xml:id="id4"][not(child::node())][following-sibling::phi[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="nb"][not(following-sibling::*)]//omega[contains(@number,"onten")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]] + + + eta + 0 + @@ -2861,6 +3376,11 @@ //psi[@xml:lang="no"]/alpha[@token][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="en"][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="no"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(preceding-sibling::kappa or following-sibling::kappa)]//chi[contains(@title,"e")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@object][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]/mu[@xml:lang="en"][following-sibling::sigma[starts-with(concat(@delete,"-"),"100%-")][@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::nu[@xml:id="id5"][not(following-sibling::*)]//beta[contains(concat(@data,"$")," attribute value$")][not(child::node())][following-sibling::chi[@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]//eta[@xml:id="id7"][not(following-sibling::*)]/pi[@xml:id="id8"][not(following-sibling::*)]//phi[@xml:lang="no-nb"][@xml:id="id9"][following-sibling::gamma[starts-with(@attrib,"conten")][preceding-sibling::*[position() = 1]]//delta[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]]] + + + rho + 0 + @@ -2899,6 +3419,11 @@ //pi[@src="this.nodeValue"][@xml:lang="nb"]/lambda[starts-with(concat(@and,"-"),"this-")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]/eta[not(child::node())][following-sibling::gamma[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="en"]//delta[@content][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 1]][following-sibling::gamma[@xml:lang="no"][not(following-sibling::*)]//gamma[starts-with(concat(@true,"-"),"123456789-")][not(preceding-sibling::*)][not(following-sibling::*)]/*[starts-with(concat(@insert,"-"),"123456789-")]//alpha[contains(concat(@false,"$"),"%$")][@xml:lang="no"][@xml:id="id2"]//chi[not(following-sibling::chi)]/phi[@xml:lang="nb"][not(preceding-sibling::*)]//upsilon[@xml:id="id3"][not(child::node())][following-sibling::mu[not(following-sibling::*)]]][position() = 1]]][position() = 1]] + + + lambda + 0 + @@ -2930,6 +3455,11 @@ //xi[contains(@insert,"00%")][@xml:lang="en-GB"][@xml:id="id1"]//mu[@false][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(concat(@delete,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@content][not(following-sibling::*)]/tau[not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id3"][not(following-sibling::*)]//mu[contains(concat(@src,"$"),"px green$")][@xml:lang="en-US"][not(child::node())][following-sibling::phi[@or][not(following-sibling::*)]/chi[starts-with(concat(@data,"-"),"false-")][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[@xml:id="id4"][following-sibling::iota[@xml:id="id5"][not(following-sibling::*)]//tau[starts-with(concat(@data,"-"),"content-")][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="en"][not(following-sibling::*)]//phi[@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)]/psi[not(preceding-sibling::*)][not(following-sibling::*)]/kappa[contains(concat(@attribute,"$"),"false$")][@xml:lang="en"][not(following-sibling::*)]/epsilon[contains(concat(@src,"$"),"e$")][@xml:lang="en"][@xml:id="id7"]//tau[@insert][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[@xml:id="id8"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + mu + 0 + @@ -2966,6 +3496,11 @@ //beta[contains(@attrib,"ue")]/nu[contains(@title,"fals")][@xml:id="id1"][not(preceding-sibling::*)]/rho[@insert][@xml:id="id2"][not(preceding-sibling::*)]/kappa[not(following-sibling::*)]//upsilon[@and][@xml:id="id3"][not(preceding-sibling::*)]//chi[not(preceding-sibling::*)][following-sibling::delta[preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]] + + + chi + 0 + @@ -2985,6 +3520,11 @@ //zeta[@xml:lang="en"][@xml:id="id1"]/delta[@and][@xml:lang="en"]/omicron[@xml:lang="no"][following-sibling::iota[contains(@number,"t")][@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::beta[contains(concat(@number,"$"),"k$")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/phi[not(preceding-sibling::*)]/omicron[contains(@class,"lue")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)]//omicron[not(preceding-sibling::*)]/omicron[@class="this-is-att-value"][@xml:id="id4"]/epsilon[starts-with(@false,"this.node")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[starts-with(@desciption,"co")][@xml:lang="no-nb"]/mu[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::upsilon[starts-with(concat(@name,"-"),"true-")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[@xml:id="id8"][not(child::node())][following-sibling::theta[@xml:lang="no"][not(child::node())][following-sibling::pi[contains(concat(@data,"$"),"lue$")][@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//*[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::phi[@xml:lang="en"][not(child::node())][following-sibling::psi[@xml:lang="en-US"][not(following-sibling::*)]/lambda[@xml:lang="en-GB"][@xml:id="id10"][position() = 1]]][position() = 1]][position() = 1]]]]] + + + omicron + 0 + @@ -3026,6 +3566,11 @@ //phi[@xml:id="id1"]//kappa[starts-with(concat(@att,"-"),"123456789-")][@xml:lang="no"][not(following-sibling::*)]//epsilon[@number][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//beta[contains(@desciption,"6789")][@xml:lang="no"][@xml:id="id4"][not(following-sibling::beta)][not(child::node())][following-sibling::delta[@name][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//phi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[starts-with(@false,"a")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::psi[contains(concat(@number,"$"),"%$")][@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -3047,6 +3592,11 @@ //beta[contains(concat(@false,"$"),"t-value$")][@xml:lang="en-GB"][@xml:id="id1"]//*[@xml:lang="en"][not(child::node())][following-sibling::rho[@false][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 2]][following-sibling::omicron[@token="attribute"][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//zeta[@content][@xml:lang="nb"]/phi[@attrib][@xml:id="id3"]/nu[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::omega[starts-with(concat(@number,"-"),"solid 1px green-")][@xml:lang="en-US"][@xml:id="id6"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + any + 0 + @@ -3071,6 +3621,11 @@ //*/delta[@xml:lang="en-GB"][not(preceding-sibling::*)]//lambda[not(preceding-sibling::*)]//lambda[@abort][@xml:lang="no"][@xml:id="id1"][following-sibling::*[position()=8]][not(child::node())][following-sibling::phi[following-sibling::*[position()=7]][following-sibling::psi[@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[starts-with(concat(@attribute,"-"),"this-")][@xml:lang="en"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::upsilon[contains(concat(@att,"$"),"t$")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=4]][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 5]][following-sibling::*[position()=3]][following-sibling::pi[@xml:id="id5"][preceding-sibling::*[position() = 6]][not(preceding-sibling::pi or following-sibling::pi)][not(child::node())][following-sibling::alpha[contains(concat(@attr,"$"),"456789$")][@xml:lang="no"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::beta[contains(@data,"an")][@xml:lang="en-US"]/rho[@att][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[contains(concat(@class,"$"),"another attribute value$")][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + lambda + 1 + @@ -3099,6 +3654,11 @@ //theta[contains(concat(@attr,"$"),"ue$")]/zeta[@xml:lang="en-US"][not(preceding-sibling::*)]/rho[starts-with(concat(@insert,"-"),"attribute value-")][@xml:lang="nb"][@xml:id="id1"]/theta[starts-with(concat(@and,"-"),"this.nodeValue-")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="en"]/alpha[contains(@att,"hi")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::chi[@xml:lang="nb"][preceding-sibling::*[position() = 1]]//chi[@attrib="another attribute value"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::psi[starts-with(@number,"_blank")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[not(preceding-sibling::*)][following-sibling::gamma[@true][@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + theta + 1 + @@ -3123,6 +3683,11 @@ //tau[@xml:lang="no"][@xml:id="id1"]//nu//omicron[not(preceding-sibling::*)][following-sibling::beta[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@string][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::tau[contains(@src,"s")][@xml:lang="no-nb"][following-sibling::nu[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::gamma[@xml:lang="en-US"][@xml:id="id5"]/omega[contains(concat(@abort,"$"),"eValue$")][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[not(child::node())][following-sibling::alpha[starts-with(@name,"this.n")][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::tau[@xml:id="id8"][not(following-sibling::*)]//lambda[@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[starts-with(concat(@true,"-"),"attribute value-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id10"]]]]]][position() = 1]]][position() = 1]] + + + omicron + 0 + @@ -3151,6 +3716,11 @@ //*[@data="false"][@xml:id="id1"]/mu[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@xml:lang="no-nb"][not(child::node())][following-sibling::lambda[@xml:lang="en-GB"][following-sibling::zeta[@xml:id="id3"][following-sibling::eta[@class][@xml:id="id4"][not(child::node())][following-sibling::sigma[@attrib][@xml:lang="no-nb"][not(following-sibling::*)]//mu[not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@delete][@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//gamma[not(preceding-sibling::*)]//upsilon[@data][@xml:id="id6"][not(following-sibling::*)]//beta/psi[contains(@number," green")][@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::alpha[@attrib][@xml:id="id8"][preceding-sibling::*[position() = 1]]//delta[contains(concat(@class,"$"),"this-is-att-value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::eta[@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[@xml:lang="en-GB"][@xml:id="id10"][position() = 1]][position() = 1]]][position() = 1]]]]] + + + tau + 0 + @@ -3186,6 +3756,11 @@ //lambda[contains(concat(@src,"$"),"-value$")]/omega[not(child::node())][following-sibling::zeta[@data][@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::omega[starts-with(concat(@attrib,"-"),"this.nodeValue-")][@xml:id="id2"]//nu[contains(@number,"00")][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/delta[starts-with(@true,"this-is-att")][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[starts-with(@abort,"solid 1px gr")][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[not(following-sibling::*)]/eta[@xml:lang="no-nb"][@xml:id="id6"][following-sibling::sigma[starts-with(concat(@desciption,"-"),"123456789-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@insert="this-is-att-value"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::*[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 3]][not(preceding-sibling::any)]/tau[@token="123456789"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[starts-with(@token,"_blan")][@xml:lang="no-nb"][@xml:id="id10"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -3216,6 +3791,11 @@ //upsilon[starts-with(@content,"attribute valu")][@xml:lang="en"][@xml:id="id1"]/iota[contains(concat(@attrib,"$"),"tribute value$")][not(preceding-sibling::*)][following-sibling::alpha[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="no-nb"][@xml:id="id2"]//nu[contains(concat(@abort,"$"),"rue$")][@xml:id="id3"][following-sibling::omicron[preceding-sibling::*[position() = 1]][following-sibling::*[position()=6]][following-sibling::epsilon[@xml:lang="en-GB"][following-sibling::*[position()=5]][not(child::node())][following-sibling::mu[contains(concat(@data,"$"),"ute value$")][following-sibling::pi[@xml:id="id4"][not(child::node())][following-sibling::gamma[@desciption][@xml:lang="nb"][following-sibling::omicron[@insert][@xml:lang="en-US"][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 7]][not(following-sibling::*)]//omega[@attribute][@xml:lang="no"][@xml:id="id5"][not(following-sibling::*)]//gamma[@xml:lang="en"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::tau[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[starts-with(@delete,"false")][not(preceding-sibling::*)]//rho[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::delta//lambda[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::omega[@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/*[contains(@or,"ntent")][@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)]/kappa[contains(@name,"reen")][@xml:lang="en-GB"][@xml:id="id11"][not(following-sibling::*)]//nu[@xml:lang="no"][@xml:id="id12"][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[@xml:lang="en-US"][@xml:id="id13"]]]]]][position() = 1]]]][position() = 1]][position() = 1]]]]] + + + iota + 0 + @@ -3257,6 +3837,11 @@ //gamma[@object][@xml:lang="en-GB"][@xml:id="id1"]//tau[@class][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:id="id4"]//pi[starts-with(concat(@true,"-"),"_blank-")][@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::eta[@class="true"][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]]/theta[@src][not(preceding-sibling::*)][not(following-sibling::*)]//eta[starts-with(@attrib,"true")][@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]//zeta[starts-with(concat(@insert,"-"),"this.nodeValue-")][not(preceding-sibling::*)][following-sibling::xi[starts-with(concat(@attr,"-"),"another attribute value-")][not(child::node())][following-sibling::tau[@xml:id="id8"][preceding-sibling::*[position() = 2]]/lambda[@and][not(following-sibling::*)]//kappa[not(following-sibling::*)]//delta[@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@xml:lang="no-nb"][not(following-sibling::*)]/rho[@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::*[@true][@xml:lang="no"][@xml:id="id10"][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + tau + 0 + @@ -3292,6 +3877,11 @@ //phi[contains(concat(@object,"$")," 1px green$")][@xml:id="id1"]//xi[starts-with(@attr,"content")]//epsilon[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:lang="no"][preceding-sibling::*[position() = 2]]/iota[@abort][@xml:id="id3"][not(following-sibling::*)]]] + + + epsilon + 0 + @@ -3308,6 +3898,11 @@ //psi[@xml:lang="en"][@xml:id="id1"]/nu/pi[@attribute][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::nu[@xml:lang="nb"][preceding-sibling::*[position() = 1]]/beta[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@xml:id="id4"][not(child::node())][following-sibling::lambda[@xml:lang="no"]/rho[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="no-nb"][@xml:id="id6"][not(child::node())][following-sibling::tau[@or="content"][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 2]]/kappa[@xml:lang="en"][not(preceding-sibling::*)]/tau[starts-with(concat(@delete,"-"),"false-")][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[contains(@and,"100")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::omicron[starts-with(concat(@title,"-"),"attribute-")][@xml:id="id8"][not(following-sibling::*)]//sigma[contains(@data,"fals")][@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)]//theta[@and="true"][@xml:lang="nb"][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + pi + 0 + @@ -3342,6 +3937,11 @@ //iota[starts-with(@title,"solid 1")]//nu[@xml:lang="no-nb"][not(child::node())][following-sibling::beta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::theta[@xml:id="id1"]/nu[contains(@number,"e valu")][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@string="content"][@xml:lang="no"][not(preceding-sibling::*)]//*[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/zeta[starts-with(@attrib,"this-is-att-valu")][@xml:lang="nb"][@xml:id="id3"]//*[@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[not(child::node())][following-sibling::omicron[contains(@number,"ibute")]/delta[contains(concat(@number,"$"),"his.nodeValue$")][@xml:lang="en-GB"][not(child::node())][following-sibling::lambda[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@class][@xml:lang="nb"][not(following-sibling::*)]/zeta[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::mu[@number="false"][@xml:lang="en"][following-sibling::zeta[following-sibling::*[position()=1]][following-sibling::nu[@class][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/epsilon[@abort][@xml:id="id7"][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -3380,6 +3980,11 @@ //phi//theta[@xml:lang="en-GB"]//*[@attribute][@xml:id="id1"][following-sibling::*[position()=6]][not(child::node())][following-sibling::*[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::nu[@object][@xml:id="id3"][not(child::node())][following-sibling::alpha[contains(concat(@true,"$"),"value$")][@xml:id="id4"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=3]][following-sibling::omicron[preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::phi[@or][@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="en-US"][preceding-sibling::*[position() = 6]][not(following-sibling::*)]/delta[@name][@xml:lang="en-GB"][@xml:id="id5"][following-sibling::*[position()=3]][not(child::node())][following-sibling::nu[@xml:lang="en-US"][not(child::node())][following-sibling::nu[@xml:id="id6"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::zeta[@data][@xml:id="id7"][not(following-sibling::*)]//alpha[@insert="solid 1px green"][@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-US"][@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::kappa[contains(concat(@abort,"$"),"other attribute value$")][@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 2]]//gamma[@insert][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][not(following-sibling::*)]//gamma[@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[contains(@true,"rue")][@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]]][position() = 1]]]]]]]][position() = 1]][position() = 1]][position() = 1]] + + + any + 0 + @@ -3414,6 +4019,11 @@ //phi[@xml:lang="nb"]/upsilon[@xml:lang="no-nb"][@xml:id="id1"]/psi[@xml:id="id2"]//kappa[@name][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en-GB"][following-sibling::*[position()=1]][not(preceding-sibling::omicron)][not(child::node())][following-sibling::alpha[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 2]]//lambda[starts-with(concat(@class,"-"),"_blank-")][@xml:lang="no-nb"][not(preceding-sibling::*)]/alpha[@attribute][@xml:id="id5"][not(preceding-sibling::*)]/delta[@xml:id="id6"]/delta[contains(concat(@title,"$"),"3456789$")][following-sibling::omicron[contains(@true,"_blan")][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/sigma[contains(@token,"3456")][@xml:lang="en-US"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::xi[starts-with(concat(@title,"-"),"attribute-")][@xml:id="id9"][preceding-sibling::*[position() = 1]]//sigma[@attr][@xml:lang="en-US"][@xml:id="id10"][not(following-sibling::*)]/phi[contains(@desciption,"nother a")][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[contains(concat(@true,"$"),"ue$")][@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[starts-with(concat(@name,"-"),"solid 1px green-")][@xml:lang="no-nb"][@xml:id="id11"][preceding-sibling::*[position() = 2]]][position() = 1]][position() = 1]]]][position() = 1]] + + + kappa + 0 + @@ -3448,6 +4058,11 @@ //delta[@xml:id="id1"]//eta[@xml:lang="en-US"][@xml:id="id2"]//*[starts-with(@attrib,"false")][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@src,"$"),"lue$")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]/*[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:id="id6"][preceding-sibling::*[position() = 1]]/sigma[contains(@src,"l")][@xml:lang="no-nb"][@xml:id="id7"]/lambda[@xml:lang="no-nb"]//iota[contains(concat(@src,"$"),"ttribute value$")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="en-US"]//eta[starts-with(@desciption,"attribute va")][not(following-sibling::*)]//psi[following-sibling::*[position()=1]][following-sibling::rho[@attr][@xml:lang="no-nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]] + + + any + 0 + @@ -3477,6 +4092,11 @@ //rho[@xml:id="id1"]/tau[@string][@xml:id="id2"]//alpha[@insert][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)]//lambda[starts-with(@or,"1234567")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::theta[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:lang="no"][@xml:id="id6"][not(child::node())][following-sibling::iota[contains(@title,"en")][@xml:lang="no"][@xml:id="id7"]/phi[contains(@or,"e")][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id8"]//*[contains(concat(@src,"$"),"e$")][@xml:lang="nb"][not(child::node())][following-sibling::eta[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//gamma[@xml:lang="no-nb"][following-sibling::omicron[contains(concat(@insert,"$"),"blank$")][@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]]]] + + + lambda + 0 + @@ -3503,6 +4123,11 @@ //iota[contains(concat(@attr,"$"),"e$")][@xml:lang="no-nb"]/chi[@att][@xml:lang="en-GB"]//kappa[@name="content"][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[starts-with(concat(@title,"-"),"attribute-")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//xi[@attribute][not(preceding-sibling::*)]//phi[@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[contains(concat(@content,"$"),"ue$")][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@class][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::zeta/iota[starts-with(@object,"c")][@xml:lang="en-US"][following-sibling::*[starts-with(concat(@token,"-"),"another attribute value-")][@xml:id="id6"][preceding-sibling::*[position() = 1]]][position() = 1]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -3528,6 +4153,11 @@ //chi[@xml:lang="no"]//theta[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::xi[contains(concat(@or,"$"),"false$")][following-sibling::*[position()=2]][following-sibling::beta[@content="true"][not(following-sibling::beta)][following-sibling::phi[@xml:lang="en-US"][not(following-sibling::*)]/epsilon[contains(concat(@title,"$")," value$")][@xml:id="id1"][not(preceding-sibling::*)]/theta[starts-with(@content,"a")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)]/xi[starts-with(@true,"true")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::delta[contains(@insert,"other att")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[contains(concat(@attr,"$"),"k$")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="no-nb"][following-sibling::alpha[@xml:lang="no-nb"][@xml:id="id4"]//lambda[contains(@insert,"ttr")][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::tau[@or="attribute value"][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::nu[contains(@string,"thi")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 2]]/nu[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -3560,6 +4190,11 @@ //iota[@xml:lang="en-US"][@xml:id="id1"]/omega[@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)][not(preceding-sibling::omega)]//eta[starts-with(@number,"1234567")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="no"][not(child::node())][following-sibling::theta[starts-with(concat(@string,"-"),"solid 1px green-")][@xml:lang="en-US"][@xml:id="id3"]/nu[@object][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::nu[starts-with(concat(@src,"-"),"attribute-")][@xml:id="id4"]//kappa[@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::beta[starts-with(@name,"content")][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 1]]]]][position() = 1]] + + + eta + 0 + @@ -3580,6 +4215,11 @@ //iota[@xml:lang="no"][@xml:id="id1"]//zeta[@xml:id="id2"][not(preceding-sibling::*)]//delta[@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@xml:id="id4"]//nu[not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::upsilon[@attr="solid 1px green"][following-sibling::mu[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::alpha[@xml:lang="en"][@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[@xml:id="id7"]//pi[@xml:id="id8"]]]][position() = 1]] + + + nu + 0 + @@ -3602,6 +4242,11 @@ //omega[starts-with(@abort,"anoth")]//beta[@string][@xml:lang="no"][not(child::node())][following-sibling::xi[contains(concat(@content,"$"),"other attribute value$")][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[contains(@class,"_")][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[@true][@xml:lang="en-GB"][@xml:id="id2"][following-sibling::omega[starts-with(concat(@false,"-"),"content-")][@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(following-sibling::*)][position() = 1]]][position() = 1]]] + + + beta + 0 + @@ -3616,6 +4261,11 @@ //mu[@xml:id="id1"]//xi[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)]/omicron[@xml:id="id3"][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@xml:id="id5"][preceding-sibling::*[position() = 2]]/xi[@string][@xml:lang="en-US"][not(preceding-sibling::*)]/xi[@att="content"][@xml:id="id6"][following-sibling::alpha[@xml:id="id7"][preceding-sibling::*[position() = 1]]//nu[@attrib][@xml:id="id8"][not(preceding-sibling::*)]/tau[starts-with(@att,"attribut")][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[starts-with(@token,"this.nodeValue")][@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::lambda)][not(child::node())][following-sibling::alpha[@xml:lang="nb"][@xml:id="id11"]//delta[@delete][@xml:lang="no"][not(child::node())][following-sibling::upsilon[@class][@xml:lang="no"][@xml:id="id12"][following-sibling::phi[@xml:lang="en"][preceding-sibling::*[position() = 2]][following-sibling::lambda[@xml:lang="nb"][following-sibling::alpha[contains(@token,"s-is-a")][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//epsilon[starts-with(@name,"another attribute val")][@xml:id="id13"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:lang="en-GB"][@xml:id="id14"][following-sibling::epsilon[starts-with(@token,"12345")][@xml:id="id15"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]]]]] + + + omicron + 0 + @@ -3653,6 +4303,11 @@ //gamma[@xml:lang="en"]/xi[contains(concat(@number,"$"),"ribute-value$")][@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)]/*[contains(concat(@object,"$"),"lank$")][@xml:id="id2"][following-sibling::psi[preceding-sibling::*[position() = 1]]//pi[not(preceding-sibling::*)][not(following-sibling::*)]/eta[@title="this.nodeValue"][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id3"][not(child::node())][following-sibling::chi[starts-with(concat(@name,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau[contains(@number,"k")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::phi[preceding-sibling::*[position() = 1]][following-sibling::*[@xml:lang="en"][@xml:id="id6"]//omicron[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::eta[@xml:id="id8"][not(following-sibling::*)]//delta[contains(@abort,"al")][not(preceding-sibling::delta or following-sibling::delta)]/*[starts-with(concat(@and,"-"),"attribute value-")][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::eta[contains(@insert,"nk")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::gamma[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/sigma[@xml:lang="en-GB"][not(child::node())][following-sibling::zeta[starts-with(concat(@src,"-"),"solid 1px green-")][@xml:lang="en"][not(following-sibling::*)]//eta[@data][@xml:lang="nb"][not(following-sibling::*)][position() = 1]]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + any + 0 + @@ -3690,6 +4345,11 @@ //mu[starts-with(@abort,"anothe")]/pi[@xml:id="id1"][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[following-sibling::omega[@class="_blank"][following-sibling::delta[@object][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi/zeta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@attr][@xml:lang="no-nb"][@xml:id="id2"][following-sibling::sigma[contains(concat(@string,"$"),"789$")][@xml:lang="no"]//chi[not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@and][@xml:id="id3"]//eta[not(preceding-sibling::*)][not(child::node())][following-sibling::mu[starts-with(concat(@true,"-"),"true-")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[starts-with(concat(@or,"-"),"123456789-")][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/omicron[@xml:id="id6"][following-sibling::sigma[@attr][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/*[starts-with(concat(@insert,"-"),"this.nodeValue-")][@xml:lang="en"]][position() = 1]]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -3721,6 +4381,11 @@ //omega[contains(concat(@desciption,"$"),"ute$")][@xml:lang="no"]//iota[@xml:lang="en-US"][@xml:id="id1"][following-sibling::*[position()=2]][following-sibling::psi[following-sibling::chi[starts-with(@true,"12345678")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/omega[starts-with(@attribute,"solid 1px")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::zeta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//gamma[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::sigma[contains(@att,"e")][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]//iota[starts-with(concat(@attr,"-"),"123456789-")][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]]] + + + iota + 0 + @@ -3743,6 +4408,11 @@ //beta/mu[@desciption][@xml:lang="no"][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[starts-with(concat(@attribute,"-"),"attribute-")][not(following-sibling::*)]//beta[contains(@or,"content")][@xml:lang="en"][@xml:id="id2"]/chi[@abort][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[@attrib][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::gamma[@xml:id="id5"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -3762,6 +4432,11 @@ //iota[@xml:lang="en-US"][@xml:id="id1"]/psi[contains(@data,"se")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[contains(concat(@token,"$"),"nk$")][@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]//nu[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::phi[starts-with(@and,"this-is-att-val")][not(child::node())][following-sibling::eta[contains(@attribute,"is-is-att-v")][@xml:id="id4"][not(following-sibling::*)]/nu[@xml:id="id5"][not(preceding-sibling::*)][not(preceding-sibling::nu)]//tau[not(preceding-sibling::*)][following-sibling::alpha[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[@false][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omicron[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[not(preceding-sibling::*)]//mu[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)]/zeta[@name="another attribute value"][not(preceding-sibling::*)]//delta[@insert="123456789"][not(following-sibling::*)]/iota[@xml:id="id7"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -3798,6 +4473,11 @@ //upsilon[@xml:id="id1"]//omega[@xml:lang="en-US"]/kappa[@desciption][not(preceding-sibling::*)]//omicron[@and="100%"][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[preceding-sibling::*[position() = 1]][following-sibling::theta[@title][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/pi[@and="attribute-value"][@xml:lang="en"][@xml:id="id3"]/upsilon[@xml:lang="nb"][following-sibling::omicron[@att="true"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[@or][@xml:id="id5"][not(following-sibling::*)]]][position() = 1]] + + + omicron + 0 + @@ -3821,6 +4501,11 @@ //zeta/gamma[@class][@xml:id="id1"][not(following-sibling::*)]/sigma[@delete][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(@and,"ute-value")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[contains(concat(@string,"$"),"attribute-value$")][@xml:lang="no-nb"][@xml:id="id3"]//epsilon[@desciption][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]/sigma[@xml:id="id5"][following-sibling::*[position()=11]][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=10]][following-sibling::omicron[@xml:lang="en-GB"][following-sibling::omicron[@content][@xml:id="id7"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::eta[@true][@xml:lang="nb"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=7]][following-sibling::tau[@xml:id="id8"][following-sibling::psi[@xml:id="id9"][not(child::node())][following-sibling::delta[contains(concat(@and,"$"),"nt$")][@xml:id="id10"][preceding-sibling::*[position() = 7]][following-sibling::*[position()=4]][following-sibling::zeta[@xml:id="id11"][following-sibling::alpha[not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 10]][following-sibling::psi[@string="false"][preceding-sibling::*[position() = 11]]][position() = 1]]]]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]] + + + sigma + 0 + @@ -3851,6 +4536,11 @@ //pi[@xml:id="id1"]//tau[following-sibling::*[position()=1]][following-sibling::rho[starts-with(concat(@and,"-"),"attribute-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[following-sibling::*[position()=6]][not(child::node())][following-sibling::omicron[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=4]][following-sibling::theta[@token][@xml:lang="en-GB"][following-sibling::*[position()=3]][following-sibling::alpha[contains(concat(@string,"$"),"123456789$")][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::chi[@xml:id="id4"][preceding-sibling::*[position() = 5]][following-sibling::iota//pi[@name][@xml:id="id5"][not(preceding-sibling::*)]/phi[@xml:id="id6"][not(child::node())][following-sibling::pi[@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::theta[contains(@attrib,"olid 1p")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::pi[@false][@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + tau + 0 + @@ -3877,6 +4567,11 @@ //iota[@xml:lang="no"][@xml:id="id1"]/chi[contains(@name,"0")][@xml:lang="en-GB"][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@attr][@xml:id="id2"][following-sibling::epsilon[@xml:lang="en"][@xml:id="id3"][not(following-sibling::epsilon)]/psi[starts-with(@title,"attrib")][@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@xml:lang="nb"][@xml:id="id5"][following-sibling::*[position()=1]][not(preceding-sibling::iota)][not(child::node())][following-sibling::epsilon[@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]//omicron[@src][@xml:lang="en-US"][@xml:id="id7"][following-sibling::*[position()=3]][following-sibling::upsilon[contains(@and,"fa")][@xml:id="id8"][following-sibling::sigma[@xml:lang="no"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::zeta[starts-with(concat(@and,"-"),"123456789-")][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]]]]][position() = 1]]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -3898,6 +4593,11 @@ //lambda[@xml:lang="no-nb"][@xml:id="id1"]//rho[@xml:id="id2"][not(child::node())][following-sibling::chi[not(following-sibling::*)]/rho[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::kappa[@xml:lang="en"][following-sibling::*[@or][@xml:lang="en-GB"][@xml:id="id4"]//mu[@xml:lang="en"][@xml:id="id5"]//psi[following-sibling::pi[@number][not(following-sibling::*)]/beta[@xml:lang="en-GB"][following-sibling::*[position()=2]][following-sibling::lambda[@or][@xml:id="id6"][following-sibling::gamma[starts-with(concat(@insert,"-"),"content-")][@xml:lang="no"][@xml:id="id7"][not(following-sibling::*)]//*[@xml:lang="en-US"][@xml:id="id8"]]]]]][position() = 1]] + + + rho + 0 + @@ -3924,6 +4624,11 @@ //kappa[@data][@xml:lang="no"][@xml:id="id1"]//rho[contains(concat(@object,"$"),"te value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::rho)][following-sibling::phi[following-sibling::tau[@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/mu[@attribute][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::alpha[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/alpha[@xml:id="id4"][following-sibling::pi[contains(concat(@att,"$"),"lank$")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[starts-with(concat(@and,"-"),"attribute value-")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]]]]] + + + rho + 0 + @@ -3943,6 +4648,11 @@ //omicron[@xml:id="id1"]/kappa[@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::gamma[@xml:id="id3"][not(following-sibling::*)]/rho[@xml:lang="nb"][not(preceding-sibling::*)]/rho[@xml:lang="en-US"]//upsilon[starts-with(@desciption,"false")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[starts-with(@delete,"123456789")][@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[@data="content"][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 2]]/beta[contains(@title,"n")][@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]/omicron[@xml:lang="no"][not(child::node())][following-sibling::gamma[@false][@xml:id="id8"]/iota[following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[contains(concat(@title,"$"),"3456789$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::epsilon[@xml:lang="en-GB"][@xml:id="id9"]/zeta[contains(@delete,"reen")]]]]]][position() = 1]]] + + + kappa + 0 + @@ -3974,6 +4684,11 @@ //phi[@xml:id="id1"]//theta[starts-with(concat(@desciption,"-"),"false-")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[starts-with(@or,"_blan")][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::theta[contains(concat(@content,"$"),"100%$")][@xml:lang="en-US"][@xml:id="id4"][not(child::node())][following-sibling::beta[starts-with(concat(@title,"-"),"false-")][@xml:lang="nb"][not(following-sibling::*)]//iota[@delete][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[starts-with(@att,"this-is-att-va")][not(preceding-sibling::*)]/iota[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@xml:lang="en"][@xml:id="id6"][not(child::node())][following-sibling::*[contains(@and,"-value")][@xml:lang="nb"]/rho[following-sibling::epsilon[@abort][@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]//epsilon[@attrib][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -4002,6 +4717,11 @@ //kappa[@abort]//delta[contains(@attr,"alu")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)]//epsilon[starts-with(concat(@attribute,"-"),"_blank-")][@xml:lang="no"][not(child::node())][following-sibling::omicron[@delete][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::theta[starts-with(@and,"attribute v")][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::delta[not(child::node())][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/eta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[not(preceding-sibling::*)]/theta[not(child::node())][following-sibling::beta[starts-with(@string,"a")][@xml:lang="nb"][not(following-sibling::*)]//epsilon[contains(@att,"olid 1px gr")][@xml:id="id4"][following-sibling::delta[@or="solid 1px green"][@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[not(child::node())][following-sibling::eta[@xml:lang="nb"][not(child::node())][following-sibling::epsilon[@xml:id="id6"][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id7"][not(child::node())][following-sibling::phi[@attr="123456789"][@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::omega[@xml:lang="en-GB"]//lambda[@xml:id="id9"][not(preceding-sibling::*)]//omicron[@attr="content"][@xml:lang="no-nb"][not(child::node())][following-sibling::pi[@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@xml:id="id11"]]]]][position() = 1]]][position() = 1]][position() = 1]]]]]] + + + epsilon + 0 + @@ -4042,6 +4762,11 @@ //*[@xml:id="id1"]/delta[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="nb"][@xml:id="id3"]//theta[@src][@xml:lang="en"][following-sibling::eta[@xml:id="id4"]/chi[@abort][@xml:id="id5"][not(child::node())][following-sibling::iota[starts-with(@false,"tru")][@xml:lang="nb"][not(following-sibling::*)]/psi[@att="solid 1px green"][@xml:lang="no-nb"]//kappa[@or][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::kappa[@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:id="id8"][not(following-sibling::*)]//kappa[starts-with(@attribute,"another a")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[starts-with(concat(@insert,"-"),"attribute-")][@xml:lang="en-GB"][not(following-sibling::*)]/*[@and][@xml:lang="no-nb"][@xml:id="id9"][not(following-sibling::*)]//omicron[@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)]/phi[@xml:id="id11"][not(child::node())][following-sibling::tau[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::pi[@xml:id="id12"][following-sibling::iota[@name="123456789"][preceding-sibling::*[position() = 3]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -4078,6 +4803,11 @@ //iota[contains(@and,"ute value")][@xml:id="id1"]/nu[contains(@and," ")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::psi[starts-with(@token,"fals")][@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::tau[not(following-sibling::*)]/gamma[starts-with(@content,"a")][@xml:lang="en-GB"]//alpha[@data][@xml:lang="en-US"][not(preceding-sibling::*)]//upsilon[contains(concat(@true,"$"),"tribute-value$")][not(following-sibling::*)]/chi[contains(@data,"alue")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@src="another attribute value"][not(following-sibling::*)]//pi[@false][@xml:lang="no"]]][position() = 1]] + + + nu + 0 + @@ -4101,6 +4831,11 @@ //eta/alpha[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="nb"]//iota/delta[contains(@token,"alue")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omega[@xml:id="id3"][preceding-sibling::*[position() = 1]]//theta[@xml:id="id4"][not(preceding-sibling::*)]/delta[@xml:lang="no-nb"][not(preceding-sibling::*)]//theta[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en-US"]//lambda//beta[@data][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[contains(concat(@object,"$"),"bute value$")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@and][@xml:lang="en-US"][@xml:id="id8"]//*[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[not(preceding-sibling::*)][following-sibling::*[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@or][@xml:id="id9"][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -4137,6 +4872,11 @@ //delta//delta[contains(@attr,"att")][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::iota[@xml:lang="en-GB"]//mu[starts-with(@true,"this.nodeVa")][@xml:lang="en"][@xml:id="id2"][not(child::node())][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(preceding-sibling::upsilon)]//lambda[starts-with(concat(@attribute,"-"),"_blank-")][@xml:lang="en-GB"][@xml:id="id4"]//theta[@data][@xml:lang="en-GB"][following-sibling::gamma[preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]/omega[@xml:id="id5"][not(preceding-sibling::*)]//xi[@class][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[contains(@string,"this-is-a")][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@number][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//eta[not(preceding-sibling::*)][not(following-sibling::*)]//eta[@xml:id="id7"][following-sibling::omega[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::omicron[contains(concat(@src,"$"),"his.nodeValue$")][@xml:id="id9"][preceding-sibling::*[position() = 2]]//upsilon[starts-with(@name,"fals")][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::beta[@xml:lang="no"][@xml:id="id11"][not(following-sibling::*)]/alpha[@delete][@xml:id="id12"][not(preceding-sibling::*)]/pi[starts-with(@name,"a")][@xml:lang="no"][@xml:id="id13"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[contains(concat(@attribute,"$"),"blank$")]/alpha[@xml:lang="en-US"][not(preceding-sibling::*)]//alpha[@true="123456789"][@xml:lang="en-GB"][@xml:id="id14"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + delta + 1 + @@ -4181,6 +4921,11 @@ //tau/tau[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::upsilon[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@number="attribute-value"][@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::chi[contains(@attribute,"bu")][@xml:id="id1"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:lang="no"][@xml:id="id2"]/nu[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::mu[starts-with(concat(@token,"-"),"solid 1px green-")][preceding-sibling::*[position() = 1]][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id4"][not(child::node())][following-sibling::chi[@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/upsilon[starts-with(@string,"attribute-")][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)]/alpha[@true="attribute-value"][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]] + + + lambda + 0 + @@ -4206,6 +4951,11 @@ //alpha[starts-with(@attr,"attribute valu")][@xml:id="id1"]/psi[contains(concat(@src,"$"),"-att-value$")][@xml:lang="en"]//sigma[@xml:id="id2"][not(preceding-sibling::*)]//kappa[contains(@attrib,"attri")][@xml:id="id3"][not(preceding-sibling::*)]/alpha[@attr][@xml:id="id4"][not(following-sibling::*)]//alpha[contains(concat(@string,"$"),"89$")][@xml:lang="en-US"]//tau[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)] + + + tau + 0 + @@ -4226,6 +4976,11 @@ //phi[@xml:id="id1"]/rho[not(following-sibling::*)]/mu[not(preceding-sibling::*)][not(following-sibling::*)]/mu[@data="this-is-att-value"][following-sibling::alpha[@xml:lang="en-US"][following-sibling::eta[@xml:id="id2"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::chi[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/psi[contains(concat(@title,"$"),"value$")][@xml:lang="en"]//tau[contains(concat(@class,"$"),"ue$")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::alpha[not(following-sibling::*)]/tau[@xml:lang="en-GB"][@xml:id="id5"]//omicron[contains(concat(@abort,"$"),"bute value$")][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::phi[@xml:lang="en"][not(following-sibling::*)]//alpha[@xml:id="id7"]/sigma[@attribute="123456789"][@xml:lang="en"][@xml:id="id8"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 1 + @@ -4257,6 +5012,11 @@ //sigma[contains(@false,"0%")][@xml:lang="no-nb"]/tau[@insert][@xml:id="id1"]//*[@title="false"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[contains(concat(@false,"$"),"nk$")][@xml:id="id2"][following-sibling::*[position()=3]][following-sibling::nu[@number][@xml:id="id3"][following-sibling::*[@object][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omicron[contains(@att,"nk")][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//omicron[@or][@xml:id="id5"][not(preceding-sibling::*)]//omega[contains(concat(@delete,"$"),"ue$")][not(preceding-sibling::*)]/gamma[starts-with(concat(@abort,"-"),"false-")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::sigma[@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=2]][following-sibling::alpha[@xml:id="id8"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@xml:lang="en-US"]/lambda[@data][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::lambda)][not(child::node())][following-sibling::zeta[starts-with(concat(@delete,"-"),"true-")][@xml:lang="en-GB"]/pi[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]] + + + sigma + 1 + @@ -4288,6 +5048,11 @@ //pi[@xml:lang="no-nb"][@xml:id="id1"]//eta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]/omega[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[starts-with(@object,"a")][@xml:lang="nb"][not(following-sibling::*)]][position() = 1]]] + + + eta + 0 + @@ -4303,6 +5068,11 @@ //upsilon[@xml:lang="nb"]//nu[following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[contains(concat(@and,"$"),"-att-value$")][@xml:lang="en"][not(child::node())][following-sibling::beta[not(following-sibling::*)]//lambda[not(preceding-sibling::*)][not(following-sibling::*)]//mu[starts-with(@title,"false")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::rho[@name="this.nodeValue"][@xml:lang="en-GB"][@xml:id="id1"]/chi[@or="this-is-att-value"][@xml:lang="en-GB"][not(preceding-sibling::*)]/sigma[contains(concat(@att,"$"),"e$")][@xml:id="id2"][not(preceding-sibling::*)]//tau[not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@xml:id="id3"]//pi[@xml:lang="en-US"][following-sibling::sigma[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[@string][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[contains(@title,"nk")][@xml:id="id5"][following-sibling::beta[contains(concat(@desciption,"$")," value$")][@xml:id="id6"][not(preceding-sibling::beta)][not(child::node())][following-sibling::rho[@src][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::xi[contains(@number," va")][@xml:lang="nb"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::iota[not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -4338,6 +5108,11 @@ //theta[@att][@xml:lang="no"]/phi[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)]//omicron[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//xi[contains(@name,"tribut")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::xi[not(following-sibling::*)]//epsilon[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)]]] + + + omicron + 1 + @@ -4358,6 +5133,11 @@ //xi[@abort="100%"][@xml:lang="en-GB"][@xml:id="id1"]//theta[starts-with(@src,"this-is-att-valu")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::alpha[preceding-sibling::*[position() = 1]]//phi[not(preceding-sibling::*)][following-sibling::sigma[@name][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//rho[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]/zeta[following-sibling::theta[@xml:lang="nb"][position() = 1]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -4378,6 +5158,11 @@ //xi[@xml:lang="no"]//lambda[@att][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[contains(concat(@att,"$"),"his.nodeValue$")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[contains(concat(@true,"$"),"ue$")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omega[contains(@insert,"alse")][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::xi[not(child::node())][following-sibling::pi[starts-with(@att,"solid 1px gre")][@xml:id="id4"][preceding-sibling::*[position() = 5]][position() = 1]]]]]] + + + zeta + 0 + @@ -4395,6 +5180,11 @@ //kappa[@xml:id="id1"]/pi[contains(concat(@object,"$"),"3456789$")][@xml:id="id2"][following-sibling::zeta[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//rho[starts-with(@object,"another attribute valu")][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:id="id5"][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]][following-sibling::phi[@attribute="100%"][@xml:id="id6"][preceding-sibling::*[position() = 2]]/theta[@xml:lang="en"][following-sibling::upsilon[starts-with(concat(@delete,"-"),"this.nodeValue-")][@xml:id="id7"]/chi[@false][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[starts-with(@src,"this.nodeVal")][@xml:id="id8"][preceding-sibling::*[position() = 1]]//iota[@xml:lang="en"][@xml:id="id9"][following-sibling::chi[contains(@and,".no")][@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[starts-with(concat(@content,"-"),"this.nodeValue-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[starts-with(@object,"fal")][@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]] + + + pi + 0 + @@ -4424,6 +5214,11 @@ //beta[contains(concat(@attr,"$"),"1px green$")][@xml:id="id1"]/eta[@xml:lang="en"][not(preceding-sibling::*)]/sigma[@xml:id="id2"][not(preceding-sibling::*)]//zeta[not(following-sibling::*)]/lambda[@xml:lang="no"][not(preceding-sibling::*)]/theta[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/omicron[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]//omicron[not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:lang="no"][not(following-sibling::*)]/lambda[not(following-sibling::*)]/alpha[contains(concat(@desciption,"$"),"123456789$")][@xml:lang="en-US"][@xml:id="id5"] + + + alpha + 0 + @@ -4452,6 +5247,11 @@ //mu[@name][@xml:lang="no"]/phi[@xml:lang="no-nb"][not(following-sibling::*)]/theta[contains(concat(@data,"$"),"lank$")][@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]/xi[starts-with(@insert,"con")][not(following-sibling::*)]//tau[not(preceding-sibling::*)][following-sibling::beta[@attrib][not(following-sibling::*)]//gamma[contains(@title,"se")][@xml:lang="no-nb"][following-sibling::zeta[@insert="this-is-att-value"][not(child::node())][following-sibling::alpha[@xml:lang="en-US"][not(child::node())][following-sibling::zeta[@content="attribute-value"][preceding-sibling::*[position() = 3]][following-sibling::kappa[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=6]][not(child::node())][following-sibling::beta[@desciption][@xml:lang="no-nb"][not(child::node())][following-sibling::pi[@delete="_blank"][preceding-sibling::*[position() = 6]][following-sibling::*[position()=4]][not(child::node())][following-sibling::gamma[contains(@insert,"ute")][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 7]][following-sibling::*[position()=3]][not(child::node())][following-sibling::*[@true][@xml:lang="no"][@xml:id="id4"][following-sibling::pi[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 9]][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@false][@xml:lang="no"]//upsilon[@xml:id="id6"][not(preceding-sibling::*)]//psi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::rho[@attribute][@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::delta[@attribute="_blank"][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omega[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]] + + + tau + 0 + @@ -4489,6 +5289,11 @@ //alpha[@xml:lang="nb"][@xml:id="id1"]/sigma[@xml:id="id2"][not(following-sibling::*)]/xi[@content="attribute"][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::pi[starts-with(concat(@content,"-"),"123456789-")][preceding-sibling::*[position() = 1]][following-sibling::lambda[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//xi[@attribute][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[contains(concat(@attr,"$"),"0%$")][not(preceding-sibling::eta)][following-sibling::kappa[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]/xi[@xml:lang="no-nb"][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::sigma[@true="attribute-value"]/sigma[@token][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[contains(@delete,"ibute-value")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@xml:id="id7"][following-sibling::epsilon[@or="attribute value"][@xml:lang="en-GB"][not(child::node())][following-sibling::theta[@delete="this-is-att-value"][@xml:id="id8"][not(following-sibling::*)]//delta[contains(concat(@true,"$"),"deValue$")][following-sibling::delta[@name="_blank"][@xml:lang="no"][following-sibling::beta[@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omega[@xml:lang="en-US"][@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::zeta[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]]]]]] + + + xi + 0 + @@ -4526,6 +5331,11 @@ //upsilon[@xml:lang="en"][@xml:id="id1"]/rho[starts-with(@src,"f")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::epsilon[contains(concat(@title,"$"),"t$")][@xml:id="id3"][not(following-sibling::*)]//lambda[contains(concat(@token,"$"),"-value$")][not(child::node())][following-sibling::iota[starts-with(concat(@and,"-"),"attribute value-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]//kappa[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@xml:lang="no"][preceding-sibling::*[position() = 1]]//theta[starts-with(@abort,"soli")][@xml:id="id6"]//delta[@attribute="this.nodeValue"][@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]][position() = 1]]] + + + rho + 0 + @@ -4549,6 +5359,11 @@ //zeta[starts-with(concat(@attrib,"-"),"this.nodeValue-")][@xml:lang="no-nb"][@xml:id="id1"]/nu[@xml:lang="nb"][following-sibling::alpha[starts-with(@attrib,"th")][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@insert][@xml:id="id3"][not(child::node())][following-sibling::gamma[@xml:lang="en-US"][not(child::node())][following-sibling::mu[@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][following-sibling::delta[preceding-sibling::*[position() = 5]][following-sibling::*[position()=2]][following-sibling::rho[@xml:lang="no"][following-sibling::pi[@false][preceding-sibling::*[position() = 7]]/*[starts-with(@insert,"tr")][not(preceding-sibling::*)][not(preceding-sibling::any)]//alpha[following-sibling::eta[following-sibling::phi[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[@xml:lang="nb"]/beta[@xml:lang="en-GB"]/lambda[@name="this-is-att-value"][not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id5"]/alpha[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[contains(concat(@desciption,"$"),"%$")][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::eta[contains(@or,"nk")][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:id="id9"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::delta[@xml:lang="no"][@xml:id="id10"][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id11"][preceding-sibling::*[position() = 4]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -4586,6 +5401,11 @@ //upsilon[@name="123456789"]//theta[@xml:lang="no"][not(following-sibling::*)]//nu[contains(concat(@attrib,"$"),"te$")][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::chi[starts-with(@object,"false")][not(following-sibling::*)]/pi[@xml:lang="no"][not(following-sibling::*)]/rho[starts-with(concat(@false,"-"),"attribute-")][@xml:id="id2"][not(child::node())][following-sibling::lambda[preceding-sibling::*[position() = 1]]/alpha[contains(concat(@string,"$"),"false$")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@true][@xml:id="id3"][not(preceding-sibling::*)]//iota[starts-with(@src,"1234567")][@xml:lang="no-nb"][not(preceding-sibling::*)]/upsilon[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[@or="attribute value"][not(following-sibling::*)]/gamma[contains(concat(@or,"$"),"reen$")][@xml:id="id5"][not(preceding-sibling::*)]//rho[@attr="another attribute value"]//phi[@xml:id="id6"][following-sibling::chi[starts-with(@title,"1234567")][preceding-sibling::*[position() = 1]]//xi[not(child::node())][following-sibling::pi[starts-with(concat(@number,"-"),"solid 1px green-")][@xml:id="id7"]/theta[@xml:lang="en-GB"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="no"][@xml:id="id8"][not(following-sibling::*)]/iota[@attribute="attribute value"][@xml:lang="en-US"][@xml:id="id9"][not(following-sibling::*)]]][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -4631,6 +5451,11 @@ //phi//kappa[@object][@xml:lang="en-US"][@xml:id="id1"]/theta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::iota[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[contains(@attrib,"k")][@xml:lang="en-GB"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[starts-with(concat(@name,"-"),"100%-")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/epsilon[starts-with(@true,"attribute-va")][not(following-sibling::*)]/mu[@xml:lang="en"][@xml:id="id4"][not(child::node())][following-sibling::beta[@false][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::tau[not(following-sibling::*)]/nu[@attribute][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::lambda[@number][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::mu[contains(@true,"cont")][@xml:lang="en-GB"][@xml:id="id5"][not(child::node())][following-sibling::delta[contains(@title,"value")][@xml:lang="en-US"]/omega[@content][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[starts-with(@attrib,"t")][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(preceding-sibling::theta or following-sibling::theta)]//rho//sigma[@xml:id="id7"][not(preceding-sibling::*)][position() = 1]]]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -4665,6 +5490,11 @@ //alpha[starts-with(concat(@class,"-"),"content-")][@xml:lang="nb"][@xml:id="id1"]/*[@src="123456789"][following-sibling::omega[contains(@string,"blank")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[@false][not(child::node())][following-sibling::zeta[starts-with(concat(@desciption,"-"),"solid 1px green-")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[starts-with(concat(@token,"-"),"100%-")][@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]//pi[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[contains(concat(@object,"$")," attribute value$")][following-sibling::gamma[contains(@attr,"nt")][@xml:id="id6"][not(following-sibling::*)]//beta[@xml:id="id7"][not(following-sibling::*)]/alpha[starts-with(concat(@true,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id8"]/iota[@xml:lang="nb"][not(child::node())][following-sibling::omega[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[@att="attribute value"][@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[starts-with(@insert,"thi")][@xml:lang="no"][@xml:id="id11"][not(preceding-sibling::*)]/chi[@xml:lang="no-nb"][@xml:id="id12"][not(following-sibling::*)]/psi[starts-with(@object,"an")][@xml:lang="en-US"][not(child::node())][following-sibling::upsilon[@xml:id="id13"][preceding-sibling::*[position() = 1]][following-sibling::pi[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//delta[@xml:lang="en-GB"][@xml:id="id14"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]] + + + any + 0 + @@ -4705,6 +5535,11 @@ //omega[@xml:lang="en"]//gamma[@data][not(preceding-sibling::*)]//pi[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::mu[starts-with(concat(@att,"-"),"attribute value-")][@xml:lang="no"][following-sibling::chi[@attr][@xml:lang="no-nb"]/epsilon[@and="attribute-value"][@xml:lang="en"][following-sibling::upsilon[starts-with(concat(@token,"-"),"123456789-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[contains(@desciption,"%")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::xi[not(child::node())][following-sibling::eta[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::omega[@xml:id="id3"][not(child::node())][following-sibling::phi[@xml:id="id4"][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::pi[@xml:id="id5"][preceding-sibling::*[position() = 6]][following-sibling::mu[@xml:id="id6"][preceding-sibling::*[position() = 7]][following-sibling::omega[contains(@false,"this")][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 8]][following-sibling::*[position()=1]][following-sibling::beta[not(following-sibling::*)]/alpha[@xml:lang="en"][not(preceding-sibling::*)]//rho[@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[contains(@attribute,"bute")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="nb"][@xml:id="id9"][following-sibling::delta[not(child::node())][following-sibling::zeta[@xml:lang="no"][not(following-sibling::*)]/iota[@xml:id="id10"][not(following-sibling::*)]]][position() = 1]]]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + pi + 0 + @@ -4744,6 +5579,11 @@ //*[contains(concat(@name,"$"),"ue$")][@xml:lang="en-US"]//kappa[starts-with(@desciption,"10")][@xml:id="id1"][following-sibling::omicron[contains(concat(@att,"$"),"er attribute value$")][@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]/rho[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@title="content"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@xml:lang="no"]//alpha[following-sibling::chi[@attr][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::chi[position()=1]][not(child::node())][following-sibling::rho[following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 3]][following-sibling::mu[@insert="attribute-value"][@xml:id="id6"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//lambda[@content="123456789"][@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::*[contains(concat(@or,"$"),"nk$")][@xml:lang="en-GB"][@xml:id="id7"]/eta[@xml:lang="en-US"]/zeta[contains(@content,"attribu")][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::tau[starts-with(@false,"this.nodeVa")][@xml:id="id9"][following-sibling::chi[contains(@att," valu")][@xml:id="id10"][following-sibling::*[position()=1]][following-sibling::xi[contains(concat(@false,"$"),"ibute$")][@xml:lang="en-US"][@xml:id="id11"][not(following-sibling::*)]//omega[starts-with(concat(@and,"-"),"100%-")][@xml:lang="nb"][@xml:id="id12"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]] + + + kappa + 0 + @@ -4782,6 +5622,11 @@ //nu/kappa[@xml:id="id1"]//phi[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[contains(@attribute,"id 1p")][@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[starts-with(concat(@and,"-"),"another attribute value-")][@xml:id="id4"][not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[@desciption][following-sibling::gamma[@false][@xml:id="id6"][following-sibling::xi[@true="this-is-att-value"][@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]]/mu[starts-with(concat(@name,"-"),"this-")][@xml:lang="nb"][@xml:id="id8"][not(child::node())][following-sibling::lambda[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//eta[starts-with(@desciption,"so")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::alpha[contains(concat(@content,"$"),"alue$")][@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::*[following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[contains(concat(@token,"$"),"ue$")][preceding-sibling::*[position() = 4]][following-sibling::phi[@xml:lang="en-US"][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]]] + + + phi + 0 + @@ -4814,6 +5659,11 @@ //theta[@xml:lang="no"]//chi[contains(concat(@title,"$"),"lue$")][@xml:id="id1"]/phi[not(child::node())][following-sibling::eta[@xml:id="id2"][preceding-sibling::*[position() = 1]]/kappa[starts-with(concat(@src,"-"),"100%-")][@xml:lang="en"][@xml:id="id3"][following-sibling::psi[contains(concat(@true,"$"),"content$")][@xml:lang="en-US"][@xml:id="id4"]/sigma[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[@abort="this.nodeValue"][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]/psi[@class][@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)]/nu[@delete][following-sibling::kappa[@xml:lang="en-GB"]//xi[starts-with(@insert,"attri")][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::tau[starts-with(concat(@class,"-"),"content-")][@xml:id="id7"][not(preceding-sibling::tau)]/nu[@or="false"][@xml:id="id8"]/theta[@xml:lang="no"][@xml:id="id9"][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[starts-with(concat(@and,"-"),"this-")][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + phi + 0 + @@ -4849,6 +5699,11 @@ //phi[contains(concat(@or,"$"),"deValue$")][@xml:lang="en-GB"][@xml:id="id1"]/gamma[not(following-sibling::*)]/pi[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@number="false"][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[@src][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::rho[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@object][@xml:id="id6"][not(following-sibling::*)]//tau[not(preceding-sibling::*)][following-sibling::iota[@xml:lang="no-nb"][following-sibling::mu[@attrib="attribute value"][@xml:lang="en"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -4873,6 +5728,11 @@ //rho/theta[starts-with(@name,"cont")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[@content="attribute-value"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[starts-with(concat(@number,"-"),"_blank-")][@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@xml:lang="no-nb"][not(following-sibling::*)]//omicron[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::nu[contains(concat(@att,"$"),"100%$")][@xml:lang="en"][not(following-sibling::*)]/sigma[contains(@attribute,"e")][@xml:lang="en-GB"][not(preceding-sibling::*)]//sigma[contains(@object,"s")]/omega[@xml:lang="nb"][@xml:id="id3"]//omega[@token][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::upsilon[contains(@class,"s-att-value")][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[starts-with(@abort,"attri")][@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::theta[following-sibling::nu[@insert="attribute-value"]//rho[starts-with(concat(@content,"-"),"true-")][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[following-sibling::omicron[@class][@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 2]]/chi[starts-with(concat(@false,"-"),"attribute-")][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@xml:lang="no-nb"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@abort][@xml:lang="en-GB"][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -4917,6 +5777,11 @@ //mu[starts-with(concat(@insert,"-"),"attribute value-")][@xml:lang="no"]//zeta[not(child::node())][following-sibling::theta[@xml:lang="en"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::pi[starts-with(@string,"fal")][@xml:id="id2"][preceding-sibling::*[position() = 2]]/sigma[contains(@class,"ank")][following-sibling::*[position()=5]][not(child::node())][following-sibling::xi[@att="_blank"][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::tau[@false][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(child::node())][following-sibling::chi[contains(@and,"bute-value")][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::gamma[preceding-sibling::*[position() = 4]][following-sibling::iota[@xml:id="id5"][not(following-sibling::*)]//eta[@insert="_blank"][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::nu[starts-with(concat(@title,"-"),"true-")][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::phi[@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::eta[starts-with(concat(@att,"-"),"_blank-")][@xml:lang="en-US"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::alpha//omicron[not(preceding-sibling::*)]//omega[@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@title="_blank"][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[@name][@xml:lang="no"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]]]]]]] + + + zeta + 0 + @@ -4950,6 +5815,11 @@ //upsilon[@attrib="123456789"][@xml:lang="no"]//alpha[@xml:lang="en"][following-sibling::delta[@attrib][@xml:lang="no-nb"][not(child::node())][following-sibling::lambda[starts-with(@attrib,"1")][@xml:lang="nb"][not(child::node())][following-sibling::eta[starts-with(@content,"attr")][@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 3]]/mu[@xml:id="id2"]/pi[@and][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@xml:lang="no"]/chi[@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[starts-with(@false,"false")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[starts-with(@abort,"10")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]]] + + + alpha + 0 + @@ -4977,6 +5847,11 @@ //sigma[@token][@xml:id="id1"]//rho[@xml:id="id2"][not(preceding-sibling::*)]//theta[starts-with(concat(@number,"-"),"false-")][not(child::node())][following-sibling::alpha[@number="attribute-value"][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//psi[@title][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)]//delta[starts-with(@insert,"fal")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::theta[@xml:lang="en-GB"][following-sibling::*[position()=4]][not(child::node())][following-sibling::rho[starts-with(concat(@number,"-"),"another attribute value-")][not(child::node())][following-sibling::psi[@delete="false"][@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::psi[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::pi[@attrib]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -4999,6 +5874,11 @@ //omega[@xml:lang="nb"]/chi[contains(concat(@true,"$"),"e$")][@xml:id="id1"]/xi[starts-with(@content,"1")][@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@xml:lang="en-GB"][not(child::node())][following-sibling::omicron[@xml:lang="no-nb"][@xml:id="id3"]/pi[@src][@xml:lang="nb"]/phi[not(preceding-sibling::*)][following-sibling::eta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[@content][@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]//theta[@abort][@xml:id="id5"][following-sibling::psi[@att][@xml:lang="nb"][@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@xml:id="id7"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]]]] + + + xi + 0 + @@ -5026,6 +5906,11 @@ //eta[@xml:lang="en-GB"]//alpha//phi[@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)]/upsilon[@attribute][@xml:lang="no"][not(following-sibling::*)][not(following-sibling::upsilon)]//chi[following-sibling::*[position()=2]][following-sibling::upsilon[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@title="solid 1px green"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/omicron[starts-with(@or,"fa")][not(child::node())][following-sibling::lambda[contains(concat(@token,"$"),"green$")][@xml:id="id3"][not(following-sibling::*)]/gamma[@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::omega[starts-with(@attrib,"a")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id6"][following-sibling::kappa[following-sibling::phi[contains(concat(@attribute,"$"),"k$")][@xml:lang="no-nb"][@xml:id="id7"][not(child::node())][following-sibling::iota[starts-with(concat(@delete,"-"),"100%-")][@xml:id="id8"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::*[@xml:lang="no-nb"][not(following-sibling::*)]//alpha[contains(concat(@number,"$"),"ibute-value$")]//omega[contains(@desciption,"0%")][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:id="id9"][not(following-sibling::*)]//xi[@xml:lang="en"][not(preceding-sibling::*)]/beta[@xml:lang="en-GB"][not(preceding-sibling::*)]/upsilon[@xml:id="id10"][not(following-sibling::*)]]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -5068,6 +5953,11 @@ //iota[contains(concat(@attribute,"$"),"ue$")]//chi[contains(concat(@object,"$"),"blank$")][@xml:id="id1"][not(preceding-sibling::*)]//delta[@xml:id="id2"]/iota[@title="123456789"][@xml:id="id3"]/beta[@xml:id="id4"][not(child::node())][following-sibling::rho[contains(@string,"sol")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::mu[@true][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[contains(concat(@and,"$"),"ibute-value$")]/rho[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::tau[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="no"][position() = 1]]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -5091,6 +5981,11 @@ //omega[@name="false"][@xml:lang="no"][@xml:id="id1"]/lambda[@xml:id="id2"][not(preceding-sibling::lambda or following-sibling::lambda)]/xi[following-sibling::*[position()=1]][following-sibling::mu[@attr][@xml:lang="en-GB"][@xml:id="id3"]//sigma[contains(@number,"n")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[starts-with(concat(@src,"-"),"solid 1px green-")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:lang="en-US"][not(preceding-sibling::*)]//omicron[@xml:lang="nb"][not(following-sibling::*)]//pi[contains(@false,"green")][@xml:lang="en-GB"][@xml:id="id6"]//*[starts-with(@or,"c")][not(preceding-sibling::*)][following-sibling::pi[@xml:lang="no"][preceding-sibling::*[position() = 1]]//lambda[@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@attr="this.nodeValue"][@xml:lang="en-GB"]//xi[not(preceding-sibling::*)]//alpha[starts-with(concat(@class,"-"),"123456789-")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[not(following-sibling::*)]//beta[@xml:lang="en-US"][not(preceding-sibling::beta)]/nu[@xml:lang="en-US"][not(child::node())][following-sibling::nu[@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:id="id9"]//zeta[@xml:lang="no-nb"][not(parent::*/*[position()=2])]][position() = 1]][position() = 1]]]][position() = 1]] + + + xi + 0 + @@ -5135,6 +6030,11 @@ //phi[starts-with(concat(@class,"-"),"true-")][@xml:id="id1"]//beta[@xml:lang="no-nb"][@xml:id="id2"][not(child::node())][following-sibling::theta[@delete][following-sibling::rho[@title][@xml:id="id3"][not(following-sibling::*)]//iota[starts-with(concat(@title,"-"),"_blank-")][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[contains(concat(@data,"$"),"s-is-att-value$")][@xml:lang="no"][preceding-sibling::*[position() = 1]]//epsilon[contains(concat(@content,"$"),"lue$")][@xml:lang="en-GB"][@xml:id="id4"]//delta[starts-with(@desciption,"_blan")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::lambda[@and][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::mu[starts-with(concat(@data,"-"),"attribute-")][following-sibling::rho[contains(concat(@true,"$"),"ute value$")][@xml:id="id7"][following-sibling::psi[@desciption][@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]/tau[@attrib][@xml:lang="en-US"][not(child::node())][following-sibling::omicron[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[@xml:id="id9"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 3]][following-sibling::nu[preceding-sibling::*[position() = 4]][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]]] + + + beta + 0 + @@ -5164,6 +6064,11 @@ //nu[contains(concat(@or,"$"),"89$")]/iota[@desciption][@xml:lang="no"][@xml:id="id1"][not(child::node())][following-sibling::delta[contains(@attrib,"Value")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="en-US"]/gamma[not(preceding-sibling::*)][not(following-sibling::*)]//xi[@and][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::rho[contains(@attr,"%")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[contains(@class," val")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@delete][@xml:id="id3"][preceding-sibling::*[position() = 1]]//epsilon[contains(@true,"ue")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::tau[@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::gamma[@xml:lang="no-nb"][not(following-sibling::*)]//psi[starts-with(concat(@string,"-"),"another attribute value-")][@xml:lang="no"][not(preceding-sibling::*)]/pi[@att][@xml:lang="en-US"][not(preceding-sibling::*)]/chi[starts-with(concat(@object,"-"),"false-")][not(preceding-sibling::*)][following-sibling::omicron[@false="100%"][@xml:lang="no"][@xml:id="id6"][following-sibling::xi[@xml:id="id7"][following-sibling::lambda[not(following-sibling::*)]//*[not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:lang="en-US"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]]][position() = 1]]][position() = 1]] + + + iota + 0 + @@ -5202,6 +6107,11 @@ //iota[@xml:lang="no"]/psi[@attr][@xml:id="id1"][following-sibling::*[position()=2]][following-sibling::eta[@delete][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::xi[@object][not(following-sibling::*)]/pi[@att][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[@abort][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -5217,6 +6127,11 @@ //upsilon//alpha[@content][@xml:id="id1"]//epsilon[contains(@attribute,"tent")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[@false="attribute value"][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::kappa[@attribute][@xml:lang="no"][not(following-sibling::*)]/xi[starts-with(concat(@true,"-"),"content-")][@xml:lang="no-nb"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:lang="en"][preceding-sibling::*[position() = 1]]//xi[@xml:id="id3"][not(following-sibling::*)]//lambda[starts-with(@attr,"another attribute valu")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]//gamma[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)]/rho[starts-with(concat(@src,"-"),"_blank-")][not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id6"]//omicron[@xml:lang="en-US"]/nu[@attribute][@xml:id="id7"][not(following-sibling::*)]//epsilon[contains(@src,"value")][@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::sigma[@desciption="123456789"][not(child::node())][following-sibling::chi[starts-with(@attribute,"attribute-value")][@xml:lang="en-US"]][position() = 1]][position() = 1]]][position() = 1]] + + + omega + 0 + @@ -5252,6 +6167,11 @@ //beta[starts-with(@attrib,"f")][@xml:lang="no-nb"]//alpha[@data][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[starts-with(concat(@string,"-"),"solid 1px green-")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[starts-with(concat(@or,"-"),"attribute value-")][@xml:id="id2"]/theta[@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="nb"][@xml:id="id4"]/pi[@xml:lang="en"][@xml:id="id5"][not(following-sibling::*)]/alpha[starts-with(@string,"_")][@xml:lang="nb"][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::pi[@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[contains(@object,"lank")][not(following-sibling::*)]//zeta[contains(concat(@attribute,"$"),"ue$")][@xml:id="id8"][not(preceding-sibling::*)]/rho[starts-with(concat(@false,"-"),"content-")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="nb"][@xml:id="id9"]//mu[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@class][@xml:lang="no"]//omega[@xml:lang="nb"][not(child::node())][following-sibling::pi[@xml:id="id10"][not(child::node())][following-sibling::beta[starts-with(concat(@and,"-"),"100%-")][@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::omega[@xml:lang="en"][preceding-sibling::*[position() = 3]]/chi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::psi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@string="123456789"][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]]][position() = 1]] + + + omega + 0 + @@ -5292,6 +6212,11 @@ //epsilon[starts-with(concat(@false,"-"),"100%-")]/kappa[@xml:id="id1"][following-sibling::mu[@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 3]][not(following-sibling::*)]/alpha[not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::alpha or following-sibling::alpha)]/*[@xml:lang="en"][following-sibling::omega[starts-with(concat(@att,"-"),"100%-")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@attrib="attribute-value"][@xml:id="id3"][not(child::node())][following-sibling::iota[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::psi[starts-with(@att,"soli")][@xml:id="id4"][preceding-sibling::*[position() = 2]]/xi[@xml:id="id5"]//*[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::sigma[not(child::node())][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]]//tau[contains(@title,"is.nodeValue")][@xml:lang="en-GB"][not(preceding-sibling::*)]/pi[@xml:lang="no"][following-sibling::tau[@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[@xml:lang="no"]//alpha[not(following-sibling::*)]//epsilon[contains(@number,"e")]//tau[starts-with(concat(@token,"-"),"this-")][@xml:id="id9"][not(preceding-sibling::*)]/kappa[starts-with(concat(@name,"-"),"100%-")][not(preceding-sibling::*)][not(following-sibling::*)]]]][position() = 1]]][position() = 1]][position() = 1]]]]] + + + kappa + 0 + @@ -5334,6 +6259,11 @@ //kappa[contains(@object,"ttrib")]//tau[@abort][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[contains(concat(@content,"$"),"een$")][following-sibling::mu[@object][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::iota[@xml:lang="en-US"]//psi[starts-with(@content,"123456")][@xml:id="id2"][not(preceding-sibling::*)]/omicron[@string][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]/chi[@content="_blank"][@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::gamma[@or="this.nodeValue"][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(following-sibling::gamma)][not(child::node())][following-sibling::mu[@name][@xml:lang="en-US"][@xml:id="id6"][not(child::node())][following-sibling::eta[@xml:id="id7"][not(following-sibling::*)]/phi][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + tau + 1 + @@ -5360,6 +6290,11 @@ //beta[@attr="this.nodeValue"][@xml:lang="no-nb"]/theta[starts-with(@title,"100")]/omicron[@abort="true"][@xml:lang="en-GB"][not(child::node())][following-sibling::phi[@xml:id="id1"]/chi[contains(@attr,"u")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//sigma[@string="this-is-att-value"][not(following-sibling::*)]//epsilon[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[@name="content"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[starts-with(@string,"attribute")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)]//chi[@xml:lang="en-GB"][@xml:id="id7"][position() = 1]]] + + + omicron + 0 + @@ -5386,6 +6321,11 @@ //omicron/zeta[@xml:lang="en-US"][not(preceding-sibling::*)]/*[not(preceding-sibling::*)][not(following-sibling::*)]/mu[starts-with(concat(@false,"-"),"false-")][@xml:lang="nb"][not(following-sibling::*)]/beta[contains(concat(@and,"$"),"100%$")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@desciption][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[contains(@token,"nten")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::pi[contains(@token,"olid 1px ")][@xml:id="id3"][following-sibling::alpha[@name="this-is-att-value"][not(following-sibling::*)]//psi[@xml:lang="nb"][@xml:id="id4"]//epsilon[not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="no"][following-sibling::epsilon[@xml:lang="en"][@xml:id="id5"][following-sibling::epsilon[@object][@xml:lang="no-nb"][not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -5417,6 +6357,11 @@ //psi[@number][@xml:lang="en"]/xi[contains(@name,"id ")]/omega[starts-with(concat(@insert,"-"),"123456789-")][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@src][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::gamma[@xml:lang="no"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][following-sibling::mu[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::sigma[@attrib="_blank"][@xml:id="id3"][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -5434,6 +6379,11 @@ //mu[@xml:id="id1"]//beta[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]//lambda[not(preceding-sibling::*)][not(following-sibling::*)]/omicron[contains(concat(@desciption,"$"),"e$")][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//xi[@xml:lang="en-GB"]/nu[contains(concat(@abort,"$"),"e$")][@xml:id="id4"][not(following-sibling::*)]/nu[starts-with(@string,"this.n")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][following-sibling::omicron[preceding-sibling::*[position() = 2]]/gamma[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@class][@xml:lang="en-US"][@xml:id="id6"][following-sibling::*[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]//xi[@xml:id="id9"][not(preceding-sibling::*)]//omega[@name="_blank"][@xml:lang="no-nb"][@xml:id="id10"][not(following-sibling::*)]//pi[starts-with(@and,"solid 1px g")][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]] + + + nu + 1 + @@ -5468,6 +6418,11 @@ //rho[contains(concat(@desciption,"$"),"tribute value$")][@xml:lang="nb"]/alpha[contains(concat(@string,"$"),"e$")][@xml:lang="nb"][@xml:id="id1"][following-sibling::lambda[@name][@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::eta[@insert][@xml:id="id3"]/theta[@xml:id="id4"]//chi[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::eta[@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@xml:lang="nb"][not(following-sibling::*)]//zeta[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:id="id8"][not(following-sibling::*)]//psi[@xml:lang="nb"][@xml:id="id9"][following-sibling::omega[@false="attribute"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(@data,"e")][@xml:lang="no"][preceding-sibling::*[position() = 2]][following-sibling::phi[@number="another attribute value"][@xml:lang="en-US"][@xml:id="id10"][following-sibling::beta[@token][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::chi[@false][@xml:id="id11"][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + alpha + 0 + @@ -5497,6 +6452,11 @@ //alpha[@xml:lang="en-GB"]/lambda[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::iota[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[@attr][@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]//eta[starts-with(concat(@desciption,"-"),"this-")][@xml:lang="no"][not(child::node())][following-sibling::*[@or="another attribute value"][not(child::node())][following-sibling::beta[contains(concat(@object,"$"),"other attribute value$")][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[starts-with(@string,"thi")][@xml:lang="nb"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::omicron[@attr][not(following-sibling::*)]/theta[@att][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::chi[@xml:lang="nb"][not(following-sibling::*)]//beta[not(preceding-sibling::*)]/nu[@or][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[starts-with(@delete,"conten")][not(preceding-sibling::iota)][not(child::node())][following-sibling::lambda[contains(concat(@attrib,"$"),"9$")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/phi[@xml:id="id7"][not(preceding-sibling::*)]/lambda[starts-with(@attrib,"conten")]/zeta[@xml:lang="en"]//lambda[starts-with(@content,"at")][@xml:lang="en-US"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]] + + + lambda + 0 + @@ -5535,6 +6495,11 @@ //omicron/chi[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@src][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::beta[starts-with(concat(@false,"-"),"this-")][preceding-sibling::*[position() = 2]]/phi[@string][@xml:id="id3"]//beta[contains(concat(@name,"$"),"r attribute value$")][@xml:lang="no-nb"][not(preceding-sibling::*)]//gamma[@att][following-sibling::beta[not(following-sibling::*)]//*[@number][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[contains(@class,"r")]/rho[@xml:id="id4"][not(child::node())][following-sibling::sigma[@insert][@xml:id="id5"][preceding-sibling::*[position() = 1]]/gamma[@xml:lang="nb"][@xml:id="id6"][not(child::node())][following-sibling::iota[@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[starts-with(@name,"100%")][not(following-sibling::*)]//epsilon[@xml:lang="no-nb"][not(preceding-sibling::*)]/theta[@xml:lang="nb"][not(child::node())][following-sibling::zeta[contains(@false,"bu")][@xml:id="id8"][not(following-sibling::*)]/nu[following-sibling::epsilon[starts-with(@attribute,"tr")]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]] + + + chi + 0 + @@ -5572,6 +6537,11 @@ //beta[@xml:id="id1"]/upsilon[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[@xml:id="id3"][following-sibling::chi[not(following-sibling::*)]/sigma[starts-with(@content,"12345678")][@xml:lang="en-GB"][@xml:id="id4"][following-sibling::lambda[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id6"][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]]/eta[following-sibling::omicron[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::eta[@insert="solid 1px green"][@xml:lang="no"][@xml:id="id7"][following-sibling::theta[@xml:id="id8"][preceding-sibling::*[position() = 4]]//zeta[@delete][not(preceding-sibling::*)][following-sibling::alpha[contains(@data,"ue")][not(child::node())][following-sibling::alpha[@xml:lang="no-nb"][not(following-sibling::*)]/kappa[@attr][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[starts-with(@token,"attr")][following-sibling::xi[@insert][@xml:lang="nb"][@xml:id="id9"][following-sibling::phi//alpha[starts-with(concat(@token,"-"),"content-")][@xml:lang="no"][@xml:id="id10"][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id11"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]]]]][position() = 1]][position() = 1]]]]][position() = 1]]]] + + + upsilon + 0 + @@ -5608,6 +6578,11 @@ //mu[@insert][@xml:lang="nb"]/chi[@title][@xml:id="id1"][not(preceding-sibling::*)]/sigma[@false][not(preceding-sibling::*)][not(following-sibling::*)]/chi[contains(@desciption,"1")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:lang="en"][not(following-sibling::*)]/beta[@attrib][not(following-sibling::*)]/epsilon[@xml:lang="no"][not(child::node())][following-sibling::mu[@xml:id="id3"]/rho[@xml:lang="no"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@title="attribute value"][not(following-sibling::*)]//theta[starts-with(concat(@token,"-"),"another attribute value-")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@attr="another attribute value"][@xml:lang="no"][not(preceding-sibling::*)]//omega[starts-with(@object,"another attribute value")][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)]//tau[not(preceding-sibling::*)][not(child::node())][following-sibling::iota[starts-with(@name,"attri")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 2]][following-sibling::beta[@xml:id="id7"][not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id8"][not(child::node())][following-sibling::gamma[@xml:id="id9"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//xi[following-sibling::lambda[contains(concat(@true,"$"),"n$")][@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]] + + + epsilon + 0 + @@ -5650,6 +6625,11 @@ //sigma[starts-with(concat(@src,"-"),"attribute-")]//zeta[@true][@xml:id="id1"][not(child::node())][following-sibling::psi[@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[contains(concat(@number,"$"),"s.nodeValue$")][@xml:id="id3"][preceding-sibling::*[position() = 2]]//mu[not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:lang="nb"][following-sibling::iota[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[@false="content"][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau[@xml:lang="en"][following-sibling::upsilon[@number="false"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]//pi[@xml:lang="nb"][@xml:id="id5"][following-sibling::*[position()=2]][following-sibling::epsilon[@delete="true"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::eta[@src="false"][@xml:lang="no-nb"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + zeta + 0 + @@ -5676,6 +6656,11 @@ //kappa[@xml:lang="en-US"][@xml:id="id1"]//lambda[starts-with(@class,"att")][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 2]][following-sibling::alpha[@delete][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::iota[@xml:lang="en"][not(child::node())][following-sibling::chi[starts-with(concat(@or,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 5]][following-sibling::mu[@insert][@xml:id="id5"][preceding-sibling::*[position() = 6]]/nu[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::rho[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[starts-with(concat(@src,"-"),"100%-")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omicron[@insert="false"][@xml:id="id8"][following-sibling::iota[@xml:lang="no"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::iota)]]]]][position() = 1]]]]][position() = 1]] + + + lambda + 0 + @@ -5699,6 +6684,11 @@ //epsilon[@xml:id="id1"]//alpha[contains(concat(@string,"$"),"ttribute$")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:id="id3"]/phi[@xml:lang="no"][following-sibling::*[position()=4]][not(child::node())][following-sibling::beta[@xml:id="id4"][not(child::node())][following-sibling::phi[following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::omega[@xml:lang="en-GB"][not(following-sibling::*)]/pi[starts-with(@or,"_bl")][@xml:id="id6"][not(following-sibling::*)]//pi[contains(@title,"rue")][not(preceding-sibling::*)]/eta[@xml:lang="en-GB"][@xml:id="id7"]/omega[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[not(following-sibling::*)]/lambda[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[starts-with(concat(@src,"-"),"true-")][@xml:lang="no-nb"][@xml:id="id10"][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[contains(@attrib,"t")][@xml:id="id11"][not(following-sibling::*)]//theta[@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]]]][position() = 1]] + + + alpha + 0 + @@ -5733,6 +6723,11 @@ //phi[@xml:id="id1"]//mu[@object][@xml:lang="en"][not(following-sibling::*)]/mu[@xml:lang="en"][not(following-sibling::*)]/sigma[@xml:lang="no"][not(preceding-sibling::*)]//kappa[@desciption][@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::xi[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::alpha[contains(concat(@and,"$"),"lank$")][@xml:id="id4"]/theta[contains(concat(@true,"$"),"ribute$")][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]//chi[@string="attribute-value"][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=5]][following-sibling::psi[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::tau[@xml:lang="no-nb"][following-sibling::beta[starts-with(concat(@src,"-"),"false-")][@xml:lang="no-nb"][@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::lambda[@xml:id="id9"][preceding-sibling::*[position() = 5]][not(following-sibling::*)][not(preceding-sibling::lambda)]]][position() = 1]]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -5760,6 +6755,11 @@ //rho[@title="true"][@xml:lang="nb"][@xml:id="id1"]//phi[contains(concat(@false,"$"),"-value$")][@xml:id="id2"][not(following-sibling::*)]//chi[starts-with(@title,"_bl")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::kappa[@attr][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//eta[starts-with(@desciption,"fal")][@xml:id="id5"]/upsilon[starts-with(concat(@class,"-"),"another attribute value-")][@xml:lang="en"][following-sibling::zeta[contains(@data,"ute value")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 2]]//lambda[@xml:lang="en-US"][@xml:id="id7"][not(child::node())][following-sibling::*[contains(@attrib,"0%")][not(child::node())][following-sibling::beta[@number][@xml:lang="no-nb"][@xml:id="id8"][not(child::node())][following-sibling::nu[@xml:lang="no-nb"][@xml:id="id9"][preceding-sibling::*[position() = 3]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]] + + + chi + 0 + @@ -5785,6 +6785,11 @@ //delta[contains(@title,"te")][@xml:id="id1"]//upsilon[@content][@xml:id="id2"][following-sibling::pi[@att][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[following-sibling::mu[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::mu)]/*[contains(@name,"lue")][not(preceding-sibling::*)]/omega[contains(@desciption,"%")][@xml:lang="en-US"][not(preceding-sibling::*)]/zeta[starts-with(concat(@attrib,"-"),"another attribute value-")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::pi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[starts-with(concat(@data,"-"),"attribute value-")][@xml:lang="nb"][@xml:id="id6"][following-sibling::*[@class][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@attr="another attribute value"][@xml:lang="en"][@xml:id="id7"]/xi[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)]//zeta[contains(@attribute,"se")][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@title="attribute"][@xml:lang="en"][@xml:id="id10"]/theta[starts-with(@content,"at")][@xml:id="id11"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:lang="nb"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]] + + + upsilon + 0 + @@ -5819,6 +6824,11 @@ //gamma[starts-with(concat(@attribute,"-"),"content-")][@xml:lang="en"][@xml:id="id1"]/tau[not(following-sibling::*)]/delta[contains(concat(@true,"$"),"reen$")][@xml:lang="en"][following-sibling::beta[@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::sigma[@string][@xml:lang="no"][@xml:id="id3"]/theta[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@insert][@xml:lang="no"][not(following-sibling::*)]/rho[@xml:lang="no-nb"][@xml:id="id5"]/kappa[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(concat(@desciption,"-"),"this.nodeValue-")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::beta[@att][@xml:id="id7"][preceding-sibling::*[position() = 1]]/rho[@xml:lang="no"][@xml:id="id8"][following-sibling::rho[starts-with(concat(@or,"-"),"false-")]/beta[@xml:lang="no-nb"][@xml:id="id9"][following-sibling::beta[@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]]][position() = 1]][position() = 1]] + + + delta + 0 + @@ -5849,6 +6859,11 @@ //rho[@xml:lang="no-nb"]//kappa[contains(@token,"1234567")][@xml:lang="en-GB"][not(preceding-sibling::*)]/alpha[@xml:lang="en"][not(following-sibling::*)]//epsilon[starts-with(@data,"tr")][@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[starts-with(concat(@and,"-"),"false-")][@xml:lang="en-US"][following-sibling::upsilon[not(following-sibling::*)]]] + + + epsilon + 0 + @@ -5865,6 +6880,11 @@ //omicron[starts-with(concat(@src,"-"),"solid 1px green-")]//*[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)]//iota[@xml:lang="no-nb"]/phi[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:id="id2"][not(child::node())][following-sibling::theta[@xml:id="id3"][not(following-sibling::*)]//lambda[@class][@xml:lang="en-GB"][not(preceding-sibling::*)]/chi[@object][not(preceding-sibling::*)][not(following-sibling::*)]/*[starts-with(@token,"fa")]//phi[@xml:lang="en-GB"]/rho[contains(concat(@false,"$"),"id 1px green$")][not(following-sibling::rho)]/phi[@insert="another attribute value"][@xml:lang="no"][@xml:id="id4"][following-sibling::lambda[preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:lang="nb"][following-sibling::mu[@xml:id="id5"][preceding-sibling::*[position() = 3]]//lambda[starts-with(concat(@src,"-"),"false-")][@xml:lang="no"][@xml:id="id6"][not(child::node())][following-sibling::chi[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/nu[contains(concat(@string,"$"),"ttribute$")][@xml:id="id9"][not(child::node())][following-sibling::theta[contains(@true,"attribute-v")][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::nu[preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -5903,6 +6923,11 @@ //theta[@xml:lang="en-GB"][@xml:id="id1"]/omega[starts-with(@string,"c")][following-sibling::alpha[@desciption][@xml:lang="en"][@xml:id="id2"]/lambda[starts-with(concat(@number,"-"),"123456789-")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:lang="no-nb"][@xml:id="id4"][following-sibling::alpha[@delete][preceding-sibling::*[position() = 1]][following-sibling::beta[contains(@abort,"bute valu")][@xml:lang="nb"][@xml:id="id5"][following-sibling::xi[contains(concat(@class,"$"),"_blank$")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/chi[@xml:id="id6"]]]]][position() = 1]] + + + omega + 0 + @@ -5924,6 +6949,11 @@ //zeta[starts-with(concat(@content,"-"),"true-")][@xml:lang="en-GB"][@xml:id="id1"]//theta[@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]]//rho[@xml:lang="en"][@xml:id="id3"][following-sibling::upsilon[contains(@desciption,"is-is-att-valu")][preceding-sibling::*[position() = 1]]//rho[@name][@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::pi[@string][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[@xml:lang="nb"][following-sibling::epsilon[@xml:lang="en-US"]]][position() = 1]]] + + + theta + 0 + @@ -5944,6 +6974,11 @@ //gamma[@xml:id="id1"]/theta[@xml:id="id2"][not(following-sibling::*)]//eta[contains(concat(@string,"$"),"00%$")][following-sibling::omega[starts-with(concat(@abort,"-"),"attribute-")][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@class][preceding-sibling::*[position() = 2]]//iota[@abort="this.nodeValue"][@xml:lang="en"][not(preceding-sibling::*)]/mu[starts-with(@insert,"attr")][@xml:lang="en-US"][following-sibling::omicron[@attr="_blank"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[not(child::node())][following-sibling::omega[@data="100%"][@xml:lang="no-nb"]//omega[@xml:lang="nb"][@xml:id="id4"]//xi[@xml:lang="en"][not(preceding-sibling::*)][not(preceding-sibling::xi)][not(child::node())][following-sibling::omega[starts-with(@abort,"100%")][preceding-sibling::*[position() = 1]]/tau[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::zeta[starts-with(@delete,"solid")][@xml:id="id5"][preceding-sibling::*[position() = 1]]/pi[@desciption="solid 1px green"][not(following-sibling::*)]/beta[@attribute="solid 1px green"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="nb"][following-sibling::iota[contains(@true,"true")][preceding-sibling::*[position() = 2]]//psi[contains(@delete,"ttribu")][not(preceding-sibling::*)][not(following-sibling::*)]//nu[not(preceding-sibling::*)][following-sibling::chi[@attr="attribute value"][following-sibling::iota[@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]]]]][position() = 1]]]]]][position() = 1]][position() = 1]] + + + eta + 0 + @@ -5985,6 +7020,11 @@ //*[starts-with(@number,"conten")][@xml:lang="nb"]/iota[@attr="123456789"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@data="attribute-value"][@xml:lang="no-nb"][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/nu[@xml:lang="no-nb"][not(preceding-sibling::*)]/psi[@xml:lang="en-US"][@xml:id="id1"][position() = 1]][position() = 1]] + + + iota + 0 + @@ -6001,6 +7041,11 @@ //upsilon[@xml:lang="en"]/theta[not(following-sibling::*)]//nu[@delete][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[starts-with(@string,"_bl")][preceding-sibling::*[position() = 1]]/mu[@xml:id="id1"][not(preceding-sibling::*)]/beta[@xml:id="id2"]//upsilon[@xml:id="id3"][not(following-sibling::*)]/chi[contains(concat(@abort,"$"),"tribute-value$")][@xml:lang="en-GB"][@xml:id="id4"]/delta[@number][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[not(following-sibling::*)]//epsilon[@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="no"][preceding-sibling::*[position() = 1]]/tau[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@content][@xml:lang="en"][preceding-sibling::*[position() = 1]]//zeta[@and][@xml:id="id7"][following-sibling::mu[@insert="solid 1px green"][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[starts-with(@object,"10")][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]]] + + + nu + 0 + @@ -6036,6 +7081,11 @@ //phi[@xml:lang="en"][@xml:id="id1"]//omicron[not(preceding-sibling::*)][not(following-sibling::*)]//theta[@xml:lang="no-nb"]/delta[@xml:id="id2"]/phi[starts-with(@or,"another attribute value")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::rho[@xml:id="id5"][preceding-sibling::*[position() = 3]][not(preceding-sibling::rho)][following-sibling::upsilon[@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::omicron[contains(concat(@attr,"$"),"ttribute value$")][@xml:lang="en-US"]//phi[@xml:id="id7"][following-sibling::*[position()=3]][not(child::node())][following-sibling::gamma[@name][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[contains(@data,"ank")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[not(following-sibling::*)]//tau[@xml:lang="en-GB"][not(preceding-sibling::*)]/chi[following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[contains(@or,"blank")][@xml:lang="nb"]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]] + + + phi + 1 + @@ -6067,6 +7117,11 @@ //theta[starts-with(concat(@delete,"-"),"another attribute value-")][@xml:lang="en"][@xml:id="id1"]//psi//beta[not(preceding-sibling::*)]/delta[not(preceding-sibling::*)]//lambda[starts-with(@class,"1")][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[contains(concat(@false,"$"),"e$")][@xml:id="id2"][not(preceding-sibling::*)]//omega[@name][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[contains(concat(@content,"$"),"attribute$")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//psi[@name="attribute"][@xml:id="id3"]//theta[contains(@or,"0%")]/xi[@xml:lang="no-nb"][@xml:id="id4"]//kappa[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[contains(@or,"solid 1px gre")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::chi)]/theta[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:lang="en"][preceding-sibling::*[position() = 1]]/psi[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[contains(concat(@attrib,"$"),"e$")][@xml:id="id7"][not(following-sibling::*)]/tau[@xml:lang="no-nb"]/beta[@xml:id="id8"][following-sibling::omega[contains(concat(@data,"$"),"lue$")][preceding-sibling::*[position() = 1]][following-sibling::epsilon[@xml:lang="en-US"][@xml:id="id9"]][position() = 1]][position() = 1]][position() = 1]]] + + + omega + 0 + @@ -6112,6 +7167,11 @@ //eta[contains(@number,"deValue")][@xml:id="id1"]/delta[contains(@content,"ue")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::alpha[contains(@attrib,"0%")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/tau[@attr="attribute value"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::eta/lambda[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[not(preceding-sibling::*)][position() = 1]]]] + + + delta + 0 + @@ -6131,6 +7191,11 @@ //kappa[@attr]/gamma[contains(concat(@content,"$"),"tribute value$")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[starts-with(@att,"f")]/xi[@token][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@src][preceding-sibling::*[position() = 2]][not(following-sibling::xi)]/kappa[@and][@xml:lang="en-GB"][not(child::node())][following-sibling::upsilon[@xml:lang="en"]//rho[@att="another attribute value"][@xml:lang="en"][not(preceding-sibling::*)]/beta[not(preceding-sibling::*)][not(following-sibling::*)]//nu[not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@att][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@xml:lang="en-US"][not(preceding-sibling::*)]/mu[@xml:id="id3"]/delta[@object][@xml:lang="en-GB"][not(following-sibling::*)]//gamma[starts-with(@attr,"attribu")][following-sibling::iota[@xml:id="id4"][following-sibling::phi[@or][@xml:id="id5"][not(following-sibling::*)]//sigma[not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::lambda[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//kappa[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::upsilon[contains(@data,"b")][@xml:lang="en-US"][@xml:id="id6"][not(child::node())][following-sibling::tau[@and="100%"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]]][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -6175,6 +7240,11 @@ //kappa[@xml:lang="no"]/beta[@false="solid 1px green"][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::omicron[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[contains(concat(@string,"$"),"tent$")][@xml:lang="en-GB"][not(preceding-sibling::*)]/nu[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@abort][@xml:lang="nb"][following-sibling::*[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[not(following-sibling::*)]/delta[@name="this-is-att-value"][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@insert][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[contains(@number,"n")][@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:id="id6"]/*[@xml:lang="en"]//upsilon[contains(concat(@delete,"$"),"ntent$")][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[@xml:id="id8"][not(following-sibling::*)]//omega[@object="false"][following-sibling::*[position()=1]][following-sibling::kappa[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[contains(concat(@title,"$"),"nodeValue$")][@xml:id="id9"][not(following-sibling::*)]//beta[starts-with(@title,"th")][not(preceding-sibling::*)][not(preceding-sibling::beta)][not(child::node())][following-sibling::rho[@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 1]]//upsilon[@token][@xml:id="id11"]][position() = 1]]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -6217,6 +7287,11 @@ //gamma[@attribute][@xml:lang="no-nb"]/omega[not(preceding-sibling::*)]//xi[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(preceding-sibling::xi)][following-sibling::rho[contains(concat(@attribute,"$"),"e$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau/omicron[@true][@xml:lang="no"][not(following-sibling::*)]//pi[starts-with(concat(@attr,"-"),"content-")][@xml:lang="nb"][not(following-sibling::*)]][position() = 1]] + + + xi + 0 + @@ -6235,6 +7310,11 @@ //tau[@xml:lang="no-nb"]/psi[not(preceding-sibling::*)]//epsilon[not(preceding-sibling::*)][not(following-sibling::*)]//rho[starts-with(concat(@or,"-"),"100%-")][following-sibling::alpha[contains(@object,"green")][@xml:lang="en-GB"][not(child::node())][following-sibling::beta[@xml:id="id1"][preceding-sibling::*[position() = 2]][following-sibling::omega[@xml:id="id2"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/omega[contains(@data,"e val")][@xml:lang="en"]//alpha[contains(concat(@desciption,"$"),"9$")]//rho[@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::mu[starts-with(@data,"attribute valu")][@xml:lang="en-US"][@xml:id="id5"]//delta[starts-with(@content,"thi")][not(following-sibling::*)]//omega[@desciption][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[@data][not(child::node())][following-sibling::phi/kappa[starts-with(concat(@desciption,"-"),"this-")][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(@string,"a")][@xml:id="id7"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + rho + 0 + @@ -6269,6 +7349,11 @@ //delta[starts-with(concat(@name,"-"),"content-")][@xml:lang="en-US"]/alpha[contains(@number,"a")][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::lambda[@object][preceding-sibling::*[position() = 1]]//chi[@and][@xml:id="id2"][not(preceding-sibling::*)]//alpha[@xml:id="id3"][not(preceding-sibling::*)]//xi[@true][@xml:id="id4"][not(child::node())][following-sibling::pi[@false][preceding-sibling::*[position() = 1]]/rho[@xml:id="id5"][not(child::node())][following-sibling::psi[starts-with(@title,"12345678")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]] + + + alpha + 0 + @@ -6290,6 +7375,11 @@ //omicron[@xml:lang="en-GB"][@xml:id="id1"]//pi[contains(@att,"e")][@xml:lang="no"][@xml:id="id2"][not(following-sibling::pi)][following-sibling::eta[@attrib="false"][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::eta[@xml:lang="no"][not(child::node())][following-sibling::theta[@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 3]][following-sibling::theta/gamma[@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@name][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(preceding-sibling::omicron or following-sibling::omicron)][following-sibling::kappa[@name][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/delta[not(following-sibling::*)]/pi[@attribute="true"][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)]/beta[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]/lambda[@title="content"][@xml:id="id8"][following-sibling::epsilon[@abort="attribute value"][not(following-sibling::*)]//epsilon[@data="this.nodeValue"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en"][@xml:id="id10"][not(child::node())][following-sibling::omicron[@xml:id="id11"]/kappa[contains(@title,"lue")][@xml:id="id12"][not(preceding-sibling::*)][following-sibling::phi[@xml:lang="no-nb"][not(preceding-sibling::phi)][not(child::node())][following-sibling::beta[contains(concat(@string,"$"),"ue$")][@xml:id="id13"][following-sibling::*[position()=1]][following-sibling::zeta[starts-with(concat(@src,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id14"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]][position() = 1]]]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -6326,6 +7416,11 @@ //epsilon[contains(concat(@attr,"$"),"reen$")][@xml:lang="en-GB"]//phi[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(preceding-sibling::phi)][not(child::node())][following-sibling::lambda[starts-with(@insert,"another attribute ")][@xml:lang="en"][preceding-sibling::*[position() = 1]]//iota[contains(@or,"bute-value")][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::iota[@xml:id="id2"]/kappa[@attr]/kappa[@xml:id="id3"][not(child::node())][following-sibling::eta[starts-with(concat(@true,"-"),"this.nodeValue-")][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::chi[@string][preceding-sibling::*[position() = 2]][not(preceding-sibling::chi)][following-sibling::theta[@xml:id="id5"][preceding-sibling::*[position() = 3]]//omicron[@insert][@xml:lang="en-US"][@xml:id="id6"][not(child::node())][following-sibling::psi[@xml:id="id7"][preceding-sibling::*[position() = 1]]//*[@xml:lang="no-nb"][not(following-sibling::*)]//tau[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)]/sigma[contains(concat(@false,"$"),"value$")][@xml:lang="en-GB"]//alpha[@class][not(child::node())][following-sibling::mu[contains(concat(@attrib,"$"),"blank$")][@xml:lang="no"][@xml:id="id9"][not(child::node())][following-sibling::tau[@xml:id="id10"][not(following-sibling::*)]/theta[starts-with(@attr,"attrib")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@xml:lang="en-US"][not(child::node())][following-sibling::gamma[@content][@xml:id="id11"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -6366,6 +7461,11 @@ //rho[@xml:lang="nb"][@xml:id="id1"]//omicron[starts-with(@token,"1")][following-sibling::theta[contains(concat(@content,"$")," value$")][@xml:lang="en"]/beta[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:id="id3"][not(following-sibling::*)]//mu[@xml:lang="en-GB"][not(preceding-sibling::*)]/delta[@xml:lang="en"][not(preceding-sibling::*)]/beta[starts-with(concat(@attribute,"-"),"this-")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[not(child::node())][following-sibling::gamma[@xml:lang="en-US"][not(following-sibling::*)]//iota[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::beta[@content="true"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -6391,6 +7491,11 @@ //alpha[starts-with(@data,"attribute value")][@xml:lang="en-GB"][@xml:id="id1"]//omega[@xml:id="id2"][following-sibling::theta[not(preceding-sibling::theta)]/gamma[@class][@xml:id="id3"][not(preceding-sibling::*)]/beta[contains(@attr,"value")][@xml:lang="en"][not(preceding-sibling::*)]//sigma[contains(concat(@object,"$"),"ttribute value$")][@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=4]][not(child::node())][following-sibling::omega[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::omega[contains(@object,"ru")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[@xml:lang="en-US"][@xml:id="id6"][following-sibling::upsilon[@xml:lang="en-US"][preceding-sibling::*[position() = 4]]]][position() = 1]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -6412,6 +7517,11 @@ //lambda[contains(@object,"u")]//omicron[not(preceding-sibling::*)][following-sibling::gamma[starts-with(concat(@att,"-"),"another attribute value-")][@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[starts-with(@or,"attribute-")][@xml:lang="nb"][not(child::node())][following-sibling::pi[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::iota[@xml:id="id3"][preceding-sibling::*[position() = 2]]//sigma[@xml:id="id4"][not(following-sibling::*)]/theta[starts-with(@src,"another attri")][@xml:id="id5"][following-sibling::kappa[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::eta[contains(@true,"1")][@xml:lang="en-GB"][@xml:id="id8"][not(child::node())][following-sibling::chi[@xml:id="id9"][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -6435,6 +7545,11 @@ //sigma/iota[starts-with(concat(@data,"-"),"solid 1px green-")][@xml:lang="en"]/kappa[@and="false"][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@string="solid 1px green"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::psi)]/upsilon[starts-with(concat(@false,"-"),"_blank-")][not(preceding-sibling::*)]//pi[contains(concat(@attribute,"$"),"tent$")][not(following-sibling::*)]/alpha[not(following-sibling::*)]/kappa[starts-with(concat(@false,"-"),"this-")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@attr="123456789"][@xml:id="id2"][not(following-sibling::*)]/upsilon[contains(@or,"attrib")][@xml:lang="nb"][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][following-sibling::kappa[contains(concat(@name,"$"),"px green$")][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::rho[@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]/gamma[starts-with(@desciption,"_blan")][@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[following-sibling::epsilon[contains(@attribute,"tribute-value")][@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]//beta[contains(@src,"ue")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::beta)]//alpha[starts-with(@attr,"fals")][not(preceding-sibling::*)]/mu[following-sibling::gamma[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::iota[@xml:lang="no"][@xml:id="id8"][following-sibling::alpha[contains(@attr,"nodeVa")][@xml:lang="en-US"][@xml:id="id9"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + kappa + 1 + @@ -6477,6 +7592,11 @@ //chi[@xml:lang="no"][@xml:id="id1"]//zeta[contains(@data,"another attri")][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@name][not(preceding-sibling::*)][following-sibling::tau[following-sibling::omicron[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::rho[starts-with(concat(@or,"-"),"100%-")][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 3]][following-sibling::upsilon[preceding-sibling::*[position() = 4]][not(following-sibling::*)]/omega[not(preceding-sibling::*)]//eta[@xml:lang="no"]//theta[@token][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/omicron[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@xml:lang="en-US"][@xml:id="id4"]/mu[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[contains(@object,"456789")][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@xml:lang="nb"][not(preceding-sibling::*)]/lambda[@and][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:lang="no"][not(following-sibling::eta)]/nu[contains(@abort,"attribute value")][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="no"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + sigma + 0 + @@ -6517,6 +7637,11 @@ //phi[contains(@abort,"o")]/iota[@xml:id="id1"]/delta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@xml:id="id3"][following-sibling::upsilon[@string][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 2]]//*[@xml:id="id4"][following-sibling::sigma[@xml:lang="no"][@xml:id="id5"]/eta[starts-with(concat(@content,"-"),"attribute value-")][@xml:id="id6"]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -6539,6 +7664,11 @@ //sigma//rho[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:id="id1"][preceding-sibling::*[position() = 1]]//nu[@attribute="_blank"][@xml:id="id2"]//tau[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/delta//gamma[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]] + + + rho + 0 + @@ -6558,6 +7688,11 @@ //upsilon[@xml:id="id1"]/nu[starts-with(@content,"f")]//xi[starts-with(@abort,"1")][not(child::node())][following-sibling::mu[@desciption="_blank"][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::*[@xml:lang="nb"][not(child::node())][following-sibling::eta[@xml:lang="no-nb"]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -6573,6 +7708,11 @@ //zeta[starts-with(concat(@and,"-"),"this-")]/rho[starts-with(concat(@or,"-"),"this-")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::psi[contains(@and,"ute-value")][@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//epsilon[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[contains(@src,"lse")][@xml:id="id2"][following-sibling::nu[@xml:id="id3"][not(following-sibling::*)]/sigma[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@string][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]/delta[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@token="100%"][@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[starts-with(concat(@class,"-"),"another attribute value-")][@xml:id="id6"][not(preceding-sibling::*)]//psi[@xml:id="id7"][following-sibling::chi[starts-with(concat(@name,"-"),"attribute-")][@xml:lang="no"][preceding-sibling::*[position() = 1]]/chi[@xml:lang="nb"][not(following-sibling::*)]/rho[@title][not(preceding-sibling::*)]/omicron[@string][@xml:lang="en"][not(following-sibling::*)]][position() = 1]]]][position() = 1]] + + + rho + 0 + @@ -6608,6 +7748,11 @@ //pi[@xml:lang="no"][@xml:id="id1"]/gamma[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::chi[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[@xml:id="id2"][not(preceding-sibling::*)]/phi[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::delta[@class="123456789"][@xml:lang="no-nb"][not(child::node())][following-sibling::rho[@xml:lang="en-US"][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 3]]/tau[@desciption][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="en-GB"]/beta[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(preceding-sibling::beta)][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[starts-with(concat(@title,"-"),"false-")][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::eta[starts-with(concat(@title,"-"),"false-")][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omicron[@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::tau[@xml:lang="no"][@xml:id="id8"][not(child::node())][following-sibling::gamma[contains(concat(@name,"$"),"value$")][@xml:lang="nb"][preceding-sibling::*[position() = 6]]//lambda[starts-with(@delete,"100%")][@xml:lang="nb"][@xml:id="id9"][not(child::node())][following-sibling::chi[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]]][position() = 1]] + + + gamma + 0 + @@ -6640,6 +7785,11 @@ //kappa[starts-with(concat(@desciption,"-"),"this.nodeValue-")][@xml:lang="nb"]//rho[@attribute="100%"][@xml:lang="en-GB"][following-sibling::delta[contains(@attrib,"c")][@xml:lang="en-US"][following-sibling::zeta[contains(@delete,"gre")][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[not(following-sibling::*)]/phi[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@xml:lang="nb"][not(following-sibling::*)]/phi[contains(concat(@string,"$"),"ibute value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@xml:id="id2"]/tau[starts-with(concat(@attribute,"-"),"solid 1px green-")][@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::tau[@xml:lang="en-GB"][not(following-sibling::*)]//delta[@xml:lang="en-GB"][following-sibling::chi[@xml:lang="en"][@xml:id="id3"][following-sibling::psi[contains(concat(@and,"$"),"e$")]]][position() = 1]][position() = 1]]]] + + + rho + 0 + @@ -6668,6 +7818,11 @@ //pi[@title]/xi[@data][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[contains(@content,"r")][@xml:lang="nb"][not(preceding-sibling::*)]/kappa[@xml:lang="en"][following-sibling::gamma[@or="another attribute value"][@xml:id="id2"][not(following-sibling::*)]//eta[not(following-sibling::*)]//tau[starts-with(@desciption,"attribute")][@xml:id="id3"][following-sibling::iota[starts-with(@content,"_")][@xml:lang="no-nb"][@xml:id="id4"][following-sibling::omicron[@src="another attribute value"][@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//phi[@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)]//kappa[starts-with(@desciption,"this.n")][@xml:id="id7"]//lambda[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + kappa + 1 + @@ -6695,6 +7850,11 @@ //omicron[@xml:id="id1"]//iota[starts-with(@attr,"this-is-att-")][@xml:id="id2"][not(following-sibling::*)]/beta[@string][@xml:lang="no-nb"][not(child::node())][following-sibling::omega[@or][@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//pi[not(following-sibling::*)]/nu[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)]//tau[@xml:id="id5"][not(following-sibling::*)]//theta[@src][@xml:lang="en"][following-sibling::xi[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(preceding-sibling::xi)][not(child::node())][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/rho[starts-with(concat(@false,"-"),"false-")][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)]//phi[@attribute][@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]//omega[starts-with(concat(@abort,"-"),"attribute-")][@xml:lang="en-US"][following-sibling::*[position()=2]][following-sibling::lambda[@attrib="_blank"][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:id="id9"][preceding-sibling::*[position() = 2]]]][position() = 1]]]] + + + beta + 0 + @@ -6726,6 +7886,11 @@ //tau[@xml:lang="no"]//theta[@xml:id="id1"][not(following-sibling::*)]/upsilon[@xml:id="id2"][not(preceding-sibling::*)]//*[@attribute][@xml:lang="no"]/eta[contains(concat(@string,"$"),"bute-value$")][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@title][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::alpha[@token][@xml:lang="en-US"][@xml:id="id5"][following-sibling::phi[contains(concat(@or,"$"),"e$")][@xml:lang="en"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::chi[@number="123456789"][@xml:lang="no-nb"][following-sibling::epsilon[starts-with(@name,"_blank")][@xml:id="id6"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//omega[@string][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="no-nb"]//omega[@xml:lang="no"][following-sibling::*[position()=3]][not(child::node())][following-sibling::*[@attr][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[contains(@abort,"tr")][@xml:lang="en"][@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::chi[starts-with(concat(@true,"-"),"attribute value-")][@xml:lang="en-GB"][not(following-sibling::*)]//pi[@xml:lang="en-US"][@xml:id="id10"][not(following-sibling::*)][not(following-sibling::pi)]/eta[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::kappa[@data][@xml:id="id11"][not(following-sibling::*)]/sigma[@attribute][not(preceding-sibling::*)][following-sibling::mu[@object][@xml:id="id12"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="no"][not(following-sibling::*)]//delta[@xml:lang="en-GB"][@xml:id="id13"][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]][position() = 1]]]][position() = 1]]]]][position() = 1]]]]] + + + eta + 0 + @@ -6767,6 +7932,11 @@ //psi[@xml:lang="no"][@xml:id="id1"]/rho[@attrib="this-is-att-value"][@xml:id="id2"][not(preceding-sibling::*)][not(preceding-sibling::rho)][following-sibling::lambda[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@xml:id="id3"][not(child::node())][following-sibling::zeta[starts-with(@content,"true")][@xml:id="id4"]/pi[contains(concat(@attr,"$"),"0%$")][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::iota[@and][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::chi[@xml:lang="nb"][following-sibling::*[position()=3]][not(child::node())][following-sibling::upsilon[starts-with(@desciption,"another attr")][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][following-sibling::eta[starts-with(@number,"this-is-att-valu")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::chi[preceding-sibling::*[position() = 5]]//omega[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)]/upsilon[starts-with(@desciption,"fals")][following-sibling::delta[starts-with(@data,"this.nodeVa")][@xml:lang="no-nb"][@xml:id="id8"][not(following-sibling::*)]//epsilon[@content="false"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::epsilon)]/sigma[contains(@desciption,"9")][@xml:lang="nb"][not(preceding-sibling::*)]//rho[@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[starts-with(concat(@attribute,"-"),"false-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]//delta[@xml:lang="en-GB"][not(following-sibling::delta)][following-sibling::theta[@or="attribute"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[starts-with(@abort,"this.node")][@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@xml:id="id11"][preceding-sibling::*[position() = 3]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + rho + 0 + @@ -6805,6 +7975,11 @@ //nu[contains(concat(@abort,"$"),"blank$")][@xml:lang="en-US"]/nu[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::chi[following-sibling::epsilon[@xml:id="id2"][preceding-sibling::*[position() = 2]]/lambda[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::rho[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[contains(concat(@attribute,"$"),"ank$")][@xml:lang="nb"][@xml:id="id6"][not(child::node())][following-sibling::eta[@delete][preceding-sibling::*[position() = 3]]/beta[@xml:lang="no-nb"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=5]][following-sibling::phi[@content][@xml:id="id8"][following-sibling::nu[following-sibling::zeta[@xml:lang="no-nb"][@xml:id="id9"][following-sibling::delta[@xml:id="id10"][following-sibling::zeta[@xml:lang="en"][@xml:id="id11"][preceding-sibling::*[position() = 5]]]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]] + + + nu + 1 + @@ -6831,6 +8006,11 @@ //beta[starts-with(@and,"this-is-at")][@xml:lang="nb"][@xml:id="id1"]/psi[@token][@xml:lang="en-US"][@xml:id="id2"]/tau[@xml:lang="en-GB"][not(following-sibling::*)]/pi[@xml:lang="en-US"][following-sibling::alpha[contains(@content,"tr")][@xml:id="id3"][preceding-sibling::*[position() = 1]]//pi[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::*[contains(concat(@true,"$"),"lue$")][@xml:lang="en-GB"][not(following-sibling::*)]/iota[contains(concat(@number,"$"),"e$")][@xml:lang="en-GB"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="nb"][@xml:id="id6"]/beta[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@xml:lang="nb"][@xml:id="id7"][not(child::node())][following-sibling::epsilon[@content="123456789"][@xml:id="id8"][not(following-sibling::*)]/beta[contains(concat(@and,"$"),"e$")][@xml:lang="no"]/nu[@xml:id="id9"][not(following-sibling::*)]]][position() = 1]][position() = 1]] + + + pi + 0 + @@ -6861,6 +8041,11 @@ //iota[@xml:lang="no"]/theta[following-sibling::zeta[@src="this.nodeValue"][@xml:lang="nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::psi[@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/chi[not(child::node())][following-sibling::phi[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -6876,6 +8061,11 @@ //iota[contains(concat(@object,"$"),"en$")][@xml:id="id1"]//omega[not(preceding-sibling::*)]//sigma[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::gamma[@insert="content"][preceding-sibling::*[position() = 1]]//sigma[@xml:lang="en"]/alpha[@xml:id="id3"]//zeta[@xml:lang="no"][@xml:id="id4"][following-sibling::omega[@xml:id="id5"][not(following-sibling::*)]/xi[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[@xml:id="id6"][not(following-sibling::*)]//epsilon[contains(concat(@false,"$"),"e$")][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[starts-with(concat(@and,"-"),"solid 1px green-")][@xml:lang="en"][not(following-sibling::*)]//phi[starts-with(@token,"th")][@xml:lang="en-US"][following-sibling::*[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[@number="true"][@xml:id="id8"][not(child::node())][following-sibling::zeta[starts-with(@data,"so")][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -6910,6 +8100,11 @@ //eta[starts-with(concat(@object,"-"),"attribute value-")][@xml:lang="nb"]//omicron[@xml:lang="en-US"][@xml:id="id1"]/pi[@att="true"][@xml:id="id2"]/omega[@att="123456789"][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::phi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::tau[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/iota[@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[@title="_blank"][not(following-sibling::*)]]][position() = 1]] + + + omega + 0 + @@ -6929,6 +8124,11 @@ //*/upsilon[@att="123456789"][@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)]/rho[@xml:id="id2"][following-sibling::epsilon[starts-with(concat(@abort,"-"),"100%-")][@xml:lang="en-GB"][following-sibling::iota[@xml:lang="en"][@xml:id="id3"]//theta[contains(concat(@desciption,"$")," 1px green$")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::xi[contains(concat(@desciption,"$"),"content$")][@xml:lang="no-nb"][not(child::node())][following-sibling::delta[contains(@attribute,"s-is-a")][@xml:lang="no-nb"]//xi[@data][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=6]][following-sibling::mu[@attribute="123456789"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::epsilon[@insert="this.nodeValue"][@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 3]][following-sibling::psi[@xml:id="id8"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=3]][not(child::node())][following-sibling::mu[contains(@title,"789")][@xml:id="id9"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::xi[@string="123456789"][not(child::node())][following-sibling::beta[@xml:lang="en-GB"][preceding-sibling::*[position() = 7]]/upsilon[@src="attribute value"][@xml:id="id10"][not(child::node())][following-sibling::eta[contains(concat(@attribute,"$"),"rue$")]//gamma[@object][@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[contains(concat(@delete,"$"),"9$")][@xml:id="id12"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]][position() = 1]]][position() = 1]]]]][position() = 1]]][position() = 1]][position() = 1]]] + + + rho + 0 + @@ -6963,6 +8163,11 @@ //mu[@xml:id="id1"]/epsilon[@class="false"][@xml:lang="no-nb"][@xml:id="id2"][following-sibling::nu[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[contains(concat(@attrib,"$"),"alue$")][@xml:lang="en-US"]//tau[@xml:id="id3"][not(following-sibling::*)]//beta[@insert="100%"][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]/iota[@xml:lang="no"][@xml:id="id5"][not(following-sibling::*)]/phi[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[not(following-sibling::*)]//pi[@insert][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@xml:id="id7"][not(following-sibling::*)]//zeta[starts-with(@src,"attribu")][@xml:lang="nb"][not(following-sibling::*)]]] + + + epsilon + 0 + @@ -6991,6 +8196,11 @@ //beta[@xml:lang="no-nb"]//epsilon[@xml:lang="en"][@xml:id="id1"][not(following-sibling::*)]/alpha[@title="_blank"][@xml:lang="en-US"][@xml:id="id2"][following-sibling::omicron[starts-with(@object,"another a")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/xi[starts-with(@attr,"this.nodeVa")][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[starts-with(@string,"12")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -7007,6 +8217,11 @@ //eta[@attrib][@xml:id="id1"]/zeta[@xml:lang="en-GB"][not(child::node())][following-sibling::delta[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//theta[contains(@attrib,"een")][@xml:id="id3"]/alpha[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@name][@xml:lang="no-nb"][@xml:id="id5"][not(following-sibling::*)]//xi[starts-with(concat(@att,"-"),"true-")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[contains(concat(@abort,"$"),"3456789$")][@xml:id="id7"][not(following-sibling::*)]//phi[starts-with(@att,"this-is-att-value")][following-sibling::*[position()=2]][following-sibling::*[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::xi[@title="true"][not(following-sibling::*)]/chi[not(preceding-sibling::*)]/omicron[starts-with(concat(@true,"-"),"attribute-")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[contains(concat(@src,"$"),"23456789$")][@xml:id="id9"]//lambda[not(preceding-sibling::*)]//delta[@xml:lang="nb"][@xml:id="id10"][not(child::node())][following-sibling::lambda[@xml:lang="en"]][position() = 1]][position() = 1]]]]]] + + + zeta + 0 + @@ -7044,6 +8259,11 @@ //tau[@content][@xml:id="id1"]/beta[@xml:lang="en-GB"][not(following-sibling::*)]/upsilon[starts-with(concat(@desciption,"-"),"this-")][@xml:id="id2"]//upsilon[@xml:id="id3"]/xi[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@content][@xml:id="id5"]//*[@xml:lang="nb"][not(preceding-sibling::*)]/psi[contains(@class,"al")][@xml:lang="en"][@xml:id="id6"]/gamma[@insert="100%"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[starts-with(@insert,"attribute-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::tau[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//kappa[@content][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[contains(@attrib,"789")][following-sibling::kappa[contains(concat(@object,"$"),"att-value$")][@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::alpha[@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(following-sibling::alpha)]/xi[following-sibling::*[position()=2]][not(preceding-sibling::xi)][not(child::node())][following-sibling::alpha[@name="_blank"][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//lambda[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::mu[contains(concat(@src,"$"),"s-is-att-value$")][@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)]/nu[starts-with(@token,"this.nod")][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@true][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::omicron[starts-with(concat(@or,"-"),"_blank-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@xml:lang="nb"][@xml:id="id12"][not(following-sibling::*)]][position() = 1]]]]]][position() = 1]][position() = 1]]][position() = 1]] + + + xi + 0 + @@ -7088,6 +8308,11 @@ //pi[@xml:id="id1"]/mu[@xml:lang="en"]/beta[starts-with(concat(@or,"-"),"123456789-")][@xml:lang="no"][not(following-sibling::*)]/alpha[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@title][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::epsilon[@false="attribute value"][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omega[not(preceding-sibling::*)][not(child::node())][following-sibling::iota[following-sibling::*[position()=5]][not(child::node())][following-sibling::zeta[@name="123456789"][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::xi[contains(concat(@true,"$"),"nk$")][@xml:id="id4"][preceding-sibling::*[position() = 3]][following-sibling::eta[@xml:lang="no"][preceding-sibling::*[position() = 4]][following-sibling::xi[@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::sigma[contains(@insert,"alue")][@xml:lang="en"][preceding-sibling::*[position() = 6]]/iota[@attr][@xml:lang="no"][@xml:id="id6"][not(following-sibling::*)]//upsilon[contains(concat(@abort,"$"),"ttribute-value$")][not(preceding-sibling::*)]//kappa[starts-with(@or,"_blan")][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[contains(concat(@src,"$"),"ue$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//*[starts-with(@number,"100%")][not(child::node())][following-sibling::omicron//chi[contains(@title,"ru")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omega[@xml:id="id7"]][position() = 1]]]][position() = 1]]]]]]][position() = 1]] + + + omicron + 0 + @@ -7127,6 +8352,11 @@ //rho[@data="123456789"][@xml:lang="no"]//upsilon[@xml:id="id1"]/omega[not(preceding-sibling::*)][not(following-sibling::*)]//pi[starts-with(concat(@abort,"-"),"this-")][@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]//pi[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//chi[not(following-sibling::*)] + + + chi + 0 + @@ -7145,6 +8375,11 @@ //omega[@and="another attribute value"][@xml:lang="no-nb"][@xml:id="id1"]/omega[not(preceding-sibling::*)][not(following-sibling::*)]//beta[@attr="this.nodeValue"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[following-sibling::*[position()=6]][following-sibling::iota[@xml:id="id3"][following-sibling::*[position()=5]][not(child::node())][following-sibling::tau[@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::psi[following-sibling::rho[@xml:lang="nb"][@xml:id="id5"][following-sibling::kappa[starts-with(@insert,"100")][@xml:lang="no-nb"][not(child::node())][following-sibling::lambda[@delete][@xml:lang="en"][preceding-sibling::*[position() = 7]]/omicron[starts-with(concat(@content,"-"),"this.nodeValue-")][@xml:lang="en-GB"][not(following-sibling::*)]//nu[@true][@xml:lang="no-nb"][not(following-sibling::*)]/sigma[@xml:lang="no-nb"][@xml:id="id6"][not(following-sibling::*)]//sigma[not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@title][@xml:id="id8"]//nu[@xml:id="id9"]/omicron[contains(concat(@insert,"$"),"eValue$")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:lang="nb"][not(preceding-sibling::*)]//pi[not(preceding-sibling::*)][not(following-sibling::*)]]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -7183,6 +8418,11 @@ //iota[contains(@number,"ue")]//mu[not(following-sibling::*)]//chi[following-sibling::nu[contains(@and,"00")][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[@src="123456789"][not(following-sibling::delta)][following-sibling::tau[@content][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//sigma[@title][@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/*[@xml:lang="en-GB"][not(following-sibling::*)][not(preceding-sibling::any)]//zeta[@src][not(following-sibling::*)]//chi[starts-with(concat(@src,"-"),"solid 1px green-")][@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::delta[contains(@title,"nt")][@xml:id="id5"][not(child::node())][following-sibling::omicron//upsilon[@true][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[@object]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -7214,6 +8454,11 @@ //omega/rho[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[@xml:lang="en-GB"][following-sibling::iota[not(following-sibling::*)]//omicron[@xml:id="id2"][not(following-sibling::*)]/eta[starts-with(concat(@true,"-"),"this-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[not(preceding-sibling::*)]//tau[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][position() = 1]]] + + + pi + 0 + @@ -7236,6 +8481,11 @@ //rho[@name="this-is-att-value"]/pi[@object][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::delta[starts-with(concat(@src,"-"),"solid 1px green-")][@xml:lang="en-GB"]//tau[@xml:lang="no-nb"][@xml:id="id2"]//nu[@class="123456789"][@xml:id="id3"][not(child::node())][following-sibling::psi[@xml:lang="en-US"][not(preceding-sibling::psi)][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/mu[@xml:lang="en-US"][not(preceding-sibling::*)]//phi[contains(concat(@src,"$"),"ribute value$")][@xml:id="id4"][not(preceding-sibling::*)]//*[@xml:lang="en"][not(preceding-sibling::*)]/zeta[starts-with(@name,"attr")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@xml:lang="no"][@xml:id="id5"]//delta[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@desciption="123456789"][@xml:lang="en"][preceding-sibling::*[position() = 1]]//epsilon[@attr][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::gamma[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]/zeta/phi[not(following-sibling::*)]//rho[@title="_blank"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[starts-with(concat(@name,"-"),"this-")][@xml:id="id8"][not(child::node())][following-sibling::psi[starts-with(@attrib,"solid 1px green")][@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 1]]//tau[starts-with(@and,"another attribu")][position() = 1]]]][position() = 1]]]]] + + + pi + 0 + @@ -7279,6 +8529,11 @@ //tau[@xml:id="id1"]/zeta[@xml:lang="nb"]//upsilon[not(preceding-sibling::*)][not(child::node())][following-sibling::delta[contains(@data,"e")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//theta[following-sibling::*[position()=5]][following-sibling::kappa[starts-with(@src,"conten")][@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::eta[contains(concat(@title,"$"),"23456789$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::mu[starts-with(concat(@attrib,"-"),"123456789-")][@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=2]][following-sibling::zeta[contains(concat(@attribute,"$"),"-is-att-value$")][@xml:id="id4"][preceding-sibling::*[position() = 4]][following-sibling::gamma[@title="123456789"][not(following-sibling::*)]//iota[starts-with(concat(@attr,"-"),"100%-")]//kappa[@object][@xml:lang="en"][following-sibling::*[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omega[@string][@xml:lang="no"][@xml:id="id6"][not(following-sibling::omega)][position() = 1]]]]]]]] + + + upsilon + 0 + @@ -7306,6 +8561,11 @@ //alpha[contains(concat(@object,"$"),"ibute value$")][@xml:lang="nb"][@xml:id="id1"]//delta[not(preceding-sibling::*)]//omicron[not(preceding-sibling::*)][not(following-sibling::*)]//nu[not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@name="solid 1px green"][@xml:id="id2"][following-sibling::lambda[@delete="solid 1px green"][@xml:id="id3"][not(child::node())][following-sibling::delta[preceding-sibling::*[position() = 2]][following-sibling::theta[contains(@att,"onte")][@xml:lang="no"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::chi[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 4]]/omega[@xml:id="id5"][not(child::node())][following-sibling::upsilon[@xml:id="id6"][not(following-sibling::*)]//nu[@title][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::omicron[starts-with(@object,"this-is-att-valu")][preceding-sibling::*[position() = 1]]/beta[@abort][@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@src][@xml:lang="no"][not(following-sibling::*)]//chi[@xml:lang="no-nb"][following-sibling::iota[starts-with(@number,"12345678")][@xml:lang="no"][@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:id="id10"][not(child::node())][following-sibling::omicron[@string][preceding-sibling::*[position() = 3]][not(following-sibling::omicron)][following-sibling::nu[@xml:lang="en-US"][@xml:id="id11"][not(following-sibling::*)]/gamma[@class][@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@xml:lang="no-nb"][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]] + + + alpha + 1 + @@ -7346,6 +8606,11 @@ //kappa[@data][@xml:lang="en-GB"]//lambda[starts-with(@insert,"_blan")][@xml:lang="no"][not(preceding-sibling::*)]/sigma[not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[contains(@token,"e")][@xml:lang="no"]/epsilon[starts-with(@or,"cont")][not(preceding-sibling::*)]/delta[@xml:lang="en-US"][not(preceding-sibling::*)]/xi[@object][not(preceding-sibling::*)][following-sibling::beta[contains(@true,"e")][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::delta[starts-with(concat(@object,"-"),"_blank-")][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::iota[contains(concat(@and,"$"),"e value$")][@xml:lang="no"][preceding-sibling::*[position() = 3]][following-sibling::zeta[@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::theta[preceding-sibling::*[position() = 5]]/sigma[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[contains(@object,"123456789")][@xml:id="id5"][not(following-sibling::*)][position() = 1]]]][position() = 1]]] + + + xi + 0 + @@ -7377,6 +8642,11 @@ //delta[@xml:id="id1"]/nu[@xml:id="id2"][not(following-sibling::*)]//omicron[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="en"][@xml:id="id4"][following-sibling::gamma[not(following-sibling::*)]//rho[starts-with(concat(@string,"-"),"this-")][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:lang="no"][@xml:id="id6"][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::omega[contains(concat(@object,"$"),"nk$")][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(following-sibling::omega)]/rho[not(child::node())][following-sibling::phi[@att="false"][@xml:lang="en"][@xml:id="id7"][following-sibling::pi[@xml:id="id8"]/zeta[contains(concat(@object,"$"),"e$")][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)]//kappa[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@true][@xml:lang="en-US"][not(child::node())][following-sibling::psi[@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(preceding-sibling::psi)][following-sibling::epsilon[not(child::node())][following-sibling::omega[contains(concat(@string,"$"),"100%$")][not(following-sibling::*)]]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -7410,6 +8680,11 @@ //tau[starts-with(@delete,"_blank")][@xml:lang="no-nb"][@xml:id="id1"]//*[contains(concat(@title,"$"),"tt-value$")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)]//nu/tau[@attribute][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::iota[contains(@title,"e")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/epsilon[not(preceding-sibling::*)][not(following-sibling::*)]/zeta[contains(@attribute,"t")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[contains(concat(@att,"$"),"rue$")][@xml:id="id5"][not(child::node())][following-sibling::omega[starts-with(@attrib,"10")][@xml:lang="en-GB"][not(child::node())][following-sibling::*[not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 4]]/phi[contains(@false,"lid 1px")][following-sibling::mu[@class][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::alpha[starts-with(concat(@and,"-"),"attribute-")][@xml:id="id6"][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]] + + + tau + 1 + @@ -7437,6 +8712,11 @@ //alpha//mu[@content][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::phi[@token][not(child::node())][following-sibling::pi[@attr][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::alpha[contains(@content,"e")][@xml:lang="en-US"][@xml:id="id2"]/zeta[@xml:id="id3"][not(following-sibling::*)]//kappa[contains(concat(@title,"$"),"ttribute value$")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::delta[starts-with(concat(@desciption,"-"),"attribute-")][preceding-sibling::*[position() = 1]][following-sibling::chi[contains(concat(@token,"$"),"alue$")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@attr][@xml:lang="en-US"][preceding-sibling::*[position() = 3]]/omicron[contains(concat(@and,"$"),"blank$")][@xml:lang="no-nb"][@xml:id="id5"][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]]] + + + mu + 0 + @@ -7459,6 +8739,11 @@ //upsilon[@xml:id="id1"]//omicron[@true][@xml:lang="en-GB"][not(following-sibling::*)]//alpha[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]//theta[@string="solid 1px green"][@xml:lang="nb"][@xml:id="id3"][not(child::node())][following-sibling::beta[@desciption][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[@attr][following-sibling::pi[@xml:lang="en"][preceding-sibling::*[position() = 3]]/psi[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::gamma[@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::psi[@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::lambda[@xml:id="id8"][preceding-sibling::*[position() = 3]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -7481,6 +8766,11 @@ //iota//omega[contains(@src,"ibute value")][@xml:lang="no-nb"][@xml:id="id1"][not(child::node())][following-sibling::gamma[@xml:id="id2"][preceding-sibling::*[position() = 1]]/epsilon//omega[@xml:lang="no"]//nu/lambda[@object="content"][@xml:id="id3"][not(following-sibling::*)]//omega[@xml:lang="en"][not(child::node())][following-sibling::eta[starts-with(concat(@number,"-"),"solid 1px green-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::rho[@delete][@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]][position() = 1]]] + + + omega + 0 + @@ -7505,6 +8795,11 @@ //upsilon[contains(@insert,"alue")][@xml:lang="no"][@xml:id="id1"]/alpha[@token][@xml:lang="nb"][@xml:id="id2"]/*[@xml:lang="en-GB"][not(following-sibling::*)]/mu[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]//pi[contains(concat(@object,"$"),"ribute-value$")][@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]/mu[@or][@xml:lang="en-GB"][@xml:id="id5"][following-sibling::sigma[@token][preceding-sibling::*[position() = 1]]/beta[@xml:lang="no"]/delta[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::delta[starts-with(concat(@delete,"-"),"another attribute value-")][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::pi[following-sibling::*[position()=1]][following-sibling::epsilon[contains(concat(@string,"$"),"tribute$")][@xml:id="id7"][preceding-sibling::*[position() = 3]]//theta[contains(concat(@false,"$"),"een$")]//*[@name="_blank"][position() = 1]][position() = 1]]][position() = 1]] + + + mu + 1 + @@ -7535,6 +8830,11 @@ //chi[contains(concat(@insert,"$"),"ttribute$")][@xml:lang="nb"][@xml:id="id1"]//delta[@xml:id="id2"][not(preceding-sibling::*)]/beta[@insert][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/chi[@xml:lang="nb"][@xml:id="id4"][following-sibling::delta[following-sibling::*[position()=3]][following-sibling::*[@false][@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::theta[@xml:lang="no"][not(child::node())][following-sibling::beta[@xml:id="id6"][preceding-sibling::*[position() = 4]]//rho[@xml:id="id7"][not(preceding-sibling::*)][not(parent::*/*[position()=2])][position() = 1]][position() = 1]]][position() = 1]] + + + chi + 1 + @@ -7555,6 +8855,11 @@ //psi[@data][@xml:lang="en-US"]//iota[@xml:lang="nb"][not(following-sibling::*)]//*[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[@title][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="en"][preceding-sibling::*[position() = 1]]//iota[@title][not(preceding-sibling::*)]//sigma[not(preceding-sibling::*)]//iota[@desciption="_blank"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::lambda[starts-with(@abort,"attrib")][@xml:id="id5"][not(following-sibling::*)]/omega[@content][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::omicron[@abort="content"][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]][position() = 1]] + + + any + 0 + @@ -7583,6 +8888,11 @@ //eta[@false="123456789"][@xml:lang="no-nb"][@xml:id="id1"]/zeta[@xml:id="id2"][not(preceding-sibling::*)]/gamma[@xml:id="id3"]//beta[starts-with(@title,"attr")][following-sibling::xi[contains(@att,"on")][@xml:id="id4"][not(child::node())][following-sibling::sigma[@and][@xml:id="id5"][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/xi[not(following-sibling::*)]/omicron[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]] + + + beta + 0 + @@ -7604,6 +8914,11 @@ //sigma[@xml:id="id1"]//psi[not(preceding-sibling::*)]/pi[not(preceding-sibling::*)]//nu[contains(@src,"ode")][@xml:id="id2"][not(following-sibling::*)]//delta[@xml:lang="en-US"][not(preceding-sibling::delta)][following-sibling::iota[starts-with(concat(@desciption,"-"),"100%-")][@xml:lang="en-US"][@xml:id="id3"][following-sibling::xi[@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:lang="nb"][preceding-sibling::*[position() = 3]]/gamma[@string="attribute value"][@xml:lang="en"][not(preceding-sibling::*)]//theta[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]/eta[@abort][@xml:id="id5"][following-sibling::*[position()=4]][not(child::node())][following-sibling::omicron[@false="this.nodeValue"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:lang="nb"][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@xml:lang="nb"][following-sibling::pi[@delete][@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//xi[starts-with(concat(@number,"-"),"_blank-")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -7635,6 +8950,11 @@ //lambda//kappa[@xml:lang="no-nb"][@xml:id="id1"][not(child::node())][following-sibling::omega[@xml:lang="no"][following-sibling::*[position()=7]][following-sibling::zeta[@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::omicron[contains(concat(@title,"$"),"0%$")][@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::delta[@object][@xml:id="id4"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::iota[@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::beta[@xml:id="id6"][following-sibling::upsilon[@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 7]][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 8]]/kappa[@and][@xml:id="id8"][following-sibling::beta[@class]//mu[following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@attribute][@xml:lang="no-nb"][@xml:id="id9"][following-sibling::delta[@class][@xml:lang="no"][preceding-sibling::*[position() = 2]]//gamma[starts-with(@object,"soli")][@xml:lang="no-nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[contains(concat(@and,"$"),"nt$")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//tau[@class]/nu/epsilon[@or="content"][@xml:lang="no-nb"][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]] + + + kappa + 0 + @@ -7671,6 +8991,11 @@ //psi[contains(@attribute,"alue")][@xml:id="id1"]//eta[@class="content"][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::zeta[@object][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[contains(@title,"0%")][@xml:lang="no"][@xml:id="id2"]//nu[starts-with(concat(@string,"-"),"100%-")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[contains(concat(@att,"$"),"e$")][@xml:lang="no"][@xml:id="id4"]/omega[starts-with(@content,"attribute-va")][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)]/beta[@xml:lang="nb"][not(preceding-sibling::*)]/tau[@delete="_blank"][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[not(child::node())][following-sibling::alpha[@attr][following-sibling::*[position()=3]][following-sibling::pi[starts-with(concat(@attrib,"-"),"false-")][@xml:lang="no-nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:id="id7"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + eta + 0 + @@ -7699,6 +9024,11 @@ //upsilon[starts-with(@name,"true")][@xml:lang="en-GB"][@xml:id="id1"]/mu[starts-with(@src,"_blank")][not(preceding-sibling::mu)][following-sibling::mu[@xml:lang="nb"][not(following-sibling::*)]/tau[@delete="content"][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::phi[preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][following-sibling::chi[@xml:lang="no-nb"][following-sibling::*[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::theta[@true][@xml:id="id3"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::sigma[contains(@desciption,"deVal")][@xml:lang="no-nb"][following-sibling::iota[@xml:id="id4"]/epsilon[@attr][@xml:lang="en"][not(preceding-sibling::*)]//nu[not(following-sibling::*)]//delta[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::psi[@xml:id="id6"][preceding-sibling::*[position() = 1]]/gamma[@xml:lang="en-GB"]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]] + + + mu + 0 + @@ -7727,6 +9057,11 @@ //omega[@false][@xml:id="id1"]/omicron[@xml:lang="nb"][@xml:id="id2"]//alpha[@attr][@xml:lang="no"]//lambda[@att][@xml:lang="nb"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[starts-with(concat(@true,"-"),"attribute-")][@xml:id="id4"][preceding-sibling::*[position() = 1]]/eta[contains(@or,"e")][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@xml:lang="no"][not(following-sibling::*)]//tau[not(preceding-sibling::*)]/lambda[@src][@xml:lang="nb"][following-sibling::eta[contains(concat(@false,"$"),"e$")][@xml:id="id5"][not(following-sibling::*)]]] + + + lambda + 0 + @@ -7751,6 +9086,11 @@ //eta[@xml:id="id1"]/eta[@string][not(preceding-sibling::*)]//tau[@xml:id="id2"][not(child::node())][following-sibling::omicron[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=6]][not(child::node())][following-sibling::alpha[starts-with(concat(@class,"-"),"this-")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::phi[starts-with(concat(@desciption,"-"),"this.nodeValue-")][preceding-sibling::*[position() = 3]][following-sibling::*[position()=4]][following-sibling::phi[@and][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::iota[contains(concat(@number,"$"),"nk$")][@xml:lang="no"][preceding-sibling::*[position() = 5]][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 6]][not(child::node())][following-sibling::*[@and][@xml:lang="en-US"][preceding-sibling::*[position() = 7]][not(following-sibling::*)]/iota[not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id5"][following-sibling::theta[@name][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[@attrib][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::eta[@name][@xml:lang="en-US"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::tau[starts-with(@data,"another attribute")][@xml:lang="no"][@xml:id="id6"][not(following-sibling::*)]/mu[not(preceding-sibling::*)][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[@xml:lang="en-US"][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + tau + 0 + @@ -7782,6 +9122,11 @@ //iota[@xml:lang="nb"][@xml:id="id1"]//theta[starts-with(concat(@false,"-"),"solid 1px green-")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@xml:lang="en"][not(child::node())][following-sibling::gamma[@src][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[@xml:lang="en-GB"][not(child::node())][following-sibling::rho[following-sibling::gamma[@xml:lang="en"][preceding-sibling::*[position() = 2]]/kappa[starts-with(@data,"this-is-a")][@xml:lang="en-US"][@xml:id="id4"]//kappa[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@name][not(preceding-sibling::*)][following-sibling::nu[@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::delta[@token][@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 2]]]][position() = 1]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -7807,6 +9152,11 @@ //theta/omega[starts-with(@abort,"fal")][not(following-sibling::*)]//rho[@xml:lang="en-GB"][following-sibling::*[position()=4]][following-sibling::sigma[@name="100%"][@xml:lang="en"][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::phi[@xml:lang="en"][@xml:id="id1"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::upsilon[@xml:id="id2"][preceding-sibling::*[position() = 4]][not(following-sibling::*)][not(preceding-sibling::upsilon)]//kappa[@xml:id="id3"][following-sibling::beta[contains(concat(@string,"$"),"ontent$")][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@data="true"][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//lambda[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="nb"][not(following-sibling::*)]//delta[starts-with(concat(@data,"-"),"true-")][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::gamma[@xml:id="id7"][following-sibling::pi[starts-with(@content,"12")][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/rho[@xml:lang="en-GB"][@xml:id="id9"]/kappa[@xml:lang="no-nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]]]]]]][position() = 1]]]][position() = 1]] + + + rho + 0 + @@ -7841,6 +9191,11 @@ //delta[@xml:id="id1"]/pi[contains(concat(@att,"$"),"e$")][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[not(preceding-sibling::*)][not(parent::*/*[position()=2])]/zeta[starts-with(concat(@attr,"-"),"123456789-")][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[@xml:id="id4"][not(following-sibling::*)]//nu[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[starts-with(concat(@false,"-"),"solid 1px green-")][@xml:lang="no"][@xml:id="id5"]//gamma[@or][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[starts-with(concat(@true,"-"),"this.nodeValue-")][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -7864,6 +9219,11 @@ //sigma[@xml:id="id1"]//eta[contains(concat(@content,"$"),"olid 1px green$")][@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::epsilon[@data][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[starts-with(concat(@content,"-"),"true-")][@xml:id="id3"]//nu[@xml:lang="no-nb"][not(child::node())][following-sibling::omega[@attr="123456789"][@xml:lang="en-GB"][not(child::node())][following-sibling::pi[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="no"][not(following-sibling::*)]//zeta[@xml:id="id5"][not(following-sibling::*)]/lambda[@name][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::*[@content][preceding-sibling::*[position() = 2]][not(following-sibling::any)]//epsilon[@attr][@xml:id="id6"][not(child::node())][following-sibling::nu[contains(concat(@attr,"$"),"_blank$")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::nu)]/*[starts-with(concat(@false,"-"),"attribute value-")][@xml:lang="en-GB"][not(preceding-sibling::*)]//eta[starts-with(@src,"thi")][@xml:lang="nb"][not(preceding-sibling::*)]/sigma[@xml:lang="en"][not(child::node())][following-sibling::pi[contains(concat(@attribute,"$"),"bute$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:id="id8"][preceding-sibling::*[position() = 2]]//epsilon[not(preceding-sibling::*)]//rho[contains(concat(@title,"$"),"true$")][@xml:id="id9"][not(following-sibling::*)]/epsilon[@xml:lang="en-GB"][@xml:id="id10"][following-sibling::pi[@xml:id="id11"]/epsilon[@xml:id="id12"]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + eta + 0 + @@ -7907,6 +9267,11 @@ //delta[contains(concat(@att,"$")," 1px green$")][@xml:lang="no"][@xml:id="id1"]/omicron[@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@delete][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[@xml:lang="nb"][not(parent::*/*[position()=2])]/kappa[contains(@desciption,"deV")][not(preceding-sibling::*)][following-sibling::rho[contains(concat(@object,"$"),"nk$")][preceding-sibling::*[position() = 1]][following-sibling::theta[@true="_blank"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/theta[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][position() = 1]]]] + + + omicron + 0 + @@ -7926,6 +9291,11 @@ //beta[contains(@delete,"lue")]/nu[not(preceding-sibling::*)]/delta[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[contains(concat(@att,"$"),".nodeValue$")][following-sibling::psi[@xml:id="id2"]//tau[@xml:lang="nb"]/rho[starts-with(concat(@token,"-"),"true-")][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 1]]//upsilon[@name="attribute value"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[starts-with(concat(@attribute,"-"),"_blank-")][not(following-sibling::*)]//xi[contains(@and,"ttribute ")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][following-sibling::iota[starts-with(@and,"100")][@xml:lang="en"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]//tau[@number][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@xml:lang="en-GB"][not(child::node())][following-sibling::iota[@and][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[@xml:id="id5"]/phi[starts-with(concat(@title,"-"),"_blank-")][@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id7"][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]] + + + psi + 0 + @@ -7963,6 +9333,11 @@ //gamma[@or][@xml:lang="en"]//nu[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[starts-with(concat(@object,"-"),"solid 1px green-")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[contains(concat(@string,"$")," green$")][following-sibling::kappa[@xml:lang="nb"][@xml:id="id3"][following-sibling::eta[starts-with(@token,"another")][@xml:id="id4"][following-sibling::*[position()=3]][following-sibling::nu[contains(@false,"te-value")][preceding-sibling::*[position() = 3]][following-sibling::iota[preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::epsilon[contains(@attr,"olid 1px gre")][@xml:id="id5"][preceding-sibling::*[position() = 5]]/zeta[@true][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[contains(@abort,"t")][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[@xml:id="id7"][following-sibling::omicron[@src][preceding-sibling::*[position() = 1]]//alpha[starts-with(concat(@title,"-"),"content-")][@xml:id="id8"][not(following-sibling::*)]//iota[@abort][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:lang="no-nb"][@xml:id="id9"][not(following-sibling::*)]/alpha[starts-with(@string,"attribut")][@xml:lang="no-nb"][@xml:id="id10"]/kappa[not(child::node())][following-sibling::alpha[starts-with(@class,"123456789")][@xml:id="id11"]]]][position() = 1]][position() = 1]]][position() = 1]]] + + + sigma + 1 + @@ -7999,6 +9374,11 @@ //alpha[@xml:id="id1"]/zeta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::kappa[starts-with(@and,"another att")][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/phi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:id="id5"][following-sibling::psi[starts-with(concat(@token,"-"),"attribute-")][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::iota[following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[contains(concat(@content,"$"),"3456789$")][@xml:id="id7"][preceding-sibling::*[position() = 4]][following-sibling::rho[@xml:id="id8"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -8018,6 +9398,11 @@ //eta[@attr="100%"][@xml:lang="en"]/chi[@string="attribute-value"][@xml:id="id1"][not(following-sibling::*)]/epsilon[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::gamma[contains(@attrib,"ttribut")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 2]]//nu[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@data][@xml:lang="no-nb"][not(following-sibling::*)]/xi[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]//xi[@xml:id="id3"][not(following-sibling::*)]/nu[contains(concat(@name,"$"),"true$")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + epsilon + 0 + @@ -8045,6 +9430,11 @@ //phi[@xml:lang="no-nb"]//theta[following-sibling::mu[starts-with(concat(@attr,"-"),"attribute-")][@xml:id="id1"][following-sibling::kappa[@xml:id="id2"][not(following-sibling::*)]//theta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//*[contains(concat(@data,"$"),"100%$")][@xml:id="id3"][not(child::node())][following-sibling::delta[@true="123456789"][preceding-sibling::*[position() = 1]]//epsilon[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::zeta/psi[@xml:lang="en-GB"]/kappa[not(preceding-sibling::*)][not(preceding-sibling::kappa)][not(child::node())][following-sibling::nu[starts-with(@abort,"_blan")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[contains(@false,"t")][not(preceding-sibling::*)][not(following-sibling::*)]/chi[following-sibling::omicron[@number="false"][preceding-sibling::*[position() = 1]]/tau[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omega[@class][@xml:lang="en"]//chi[@or][following-sibling::*[position()=1]][following-sibling::eta[@xml:lang="no-nb"][@xml:id="id5"][not(following-sibling::*)]//kappa[starts-with(concat(@or,"-"),"100%-")][@xml:id="id6"]//beta[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][position() = 1]]][position() = 1]]]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -8085,6 +9475,11 @@ //lambda[@xml:lang="no-nb"][@xml:id="id1"]//epsilon[@xml:lang="en-GB"][not(following-sibling::*)]//upsilon[contains(@or,"f")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::tau[@object="123456789"][@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[starts-with(concat(@delete,"-"),"123456789-")][@xml:lang="en"]//pi[starts-with(concat(@string,"-"),"false-")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@number][@xml:lang="en-GB"][@xml:id="id4"][not(following-sibling::*)]/nu[contains(concat(@class,"$"),"green$")][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[starts-with(@abort,"tr")][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[starts-with(@src,"at")][@xml:id="id7"][preceding-sibling::*[position() = 2]]/delta[contains(@or,"ute valu")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::upsilon[@object][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/kappa//theta[not(following-sibling::*)]//theta[@xml:lang="no"][not(preceding-sibling::*)]/epsilon[@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[contains(@attrib,"e")][@xml:id="id10"][following-sibling::lambda[preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 2]][following-sibling::iota[not(child::node())][following-sibling::nu[@delete][preceding-sibling::*[position() = 4]][position() = 1]][position() = 1]]]][position() = 1]]]][position() = 1]]][position() = 1]] + + + upsilon + 0 + @@ -8127,6 +9522,11 @@ //psi[@xml:lang="en-GB"][@xml:id="id1"]//gamma[@xml:id="id2"][not(preceding-sibling::*)]//kappa[@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]/nu[@name="123456789"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@att][following-sibling::gamma[@att][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[starts-with(@or,"attribute")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]//gamma[@xml:id="id5"]//theta[@xml:id="id6"][not(preceding-sibling::*)]/rho[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::nu[starts-with(@content,"another attribute value")][preceding-sibling::*[position() = 1]]/upsilon[@true="100%"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta//alpha[@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id9"][not(following-sibling::*)]//theta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[starts-with(@class,"fal")][@xml:id="id10"][not(preceding-sibling::*)]//alpha[contains(concat(@src,"$"),"alse$")][@xml:id="id11"][following-sibling::tau[@xml:lang="no"][@xml:id="id12"]/omega[not(following-sibling::*)]//alpha[contains(concat(@attribute,"$"),"content$")][@xml:lang="en"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]]]] + + + theta + 0 + @@ -8169,6 +9569,11 @@ //gamma[@xml:lang="nb"][@xml:id="id1"]//epsilon[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)]//nu[@and="false"][not(preceding-sibling::*)][following-sibling::chi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[@attr][following-sibling::*[position()=2]][following-sibling::chi[@src="_blank"][not(child::node())][following-sibling::chi[@xml:lang="en-US"][preceding-sibling::*[position() = 2]]/chi[@insert="content"][@xml:lang="no"][@xml:id="id3"]]][position() = 1]] + + + nu + 0 + @@ -8188,6 +9593,11 @@ //nu[@xml:lang="nb"][@xml:id="id1"]//beta[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[not(preceding-sibling::*)][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:lang="en"][not(child::node())][following-sibling::beta[@token][@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//delta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[contains(concat(@abort,"$"),"e$")][@xml:lang="nb"]/epsilon[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::psi[starts-with(@desciption,"tr")][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::tau[starts-with(@object,"attribute")][@xml:id="id5"][preceding-sibling::*[position() = 3]]//omicron[@or][@xml:lang="no-nb"][not(preceding-sibling::*)][not(preceding-sibling::omicron)]]]]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -8215,6 +9625,11 @@ //alpha[@xml:lang="no"][@xml:id="id1"]/pi[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::tau[@insert][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[@abort="_blank"][@xml:lang="no"][not(child::node())][following-sibling::chi[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 3]][following-sibling::epsilon[contains(@true,"another attribute")][not(following-sibling::*)]//sigma[@xml:id="id4"][not(child::node())][following-sibling::lambda[preceding-sibling::*[position() = 1]]//rho[not(preceding-sibling::*)][following-sibling::phi[@xml:id="id5"][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id6"]]]]][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -8236,6 +9651,11 @@ //phi/epsilon[@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]//iota[@xml:id="id2"][not(following-sibling::*)]/beta[@attrib][@xml:id="id3"][not(preceding-sibling::*)]//lambda[@data="attribute"][@xml:lang="nb"][not(preceding-sibling::*)]/epsilon[starts-with(concat(@string,"-"),"false-")][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)]/xi[@or][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[starts-with(concat(@content,"-"),"123456789-")][@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//kappa[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[contains(@att,"10")][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="no"][@xml:id="id7"]/upsilon[@content][@xml:lang="no-nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[@and="100%"][following-sibling::*[position()=1]][following-sibling::nu[preceding-sibling::*[position() = 2]]/omicron[@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@name="this-is-att-value"][@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)]/nu[contains(concat(@and,"$"),"te value$")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:id="id10"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]] + + + lambda + 1 + @@ -8276,6 +9696,11 @@ //beta[contains(concat(@attribute,"$"),"9$")][@xml:lang="nb"]//xi[@xml:id="id1"][following-sibling::*[position()=5]][not(child::node())][following-sibling::pi[@xml:lang="en"][not(child::node())][following-sibling::upsilon[@xml:lang="en"][following-sibling::iota[contains(@title,"lue")][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::theta[starts-with(concat(@attribute,"-"),"attribute-")][@xml:id="id2"][preceding-sibling::*[position() = 4]][following-sibling::omega[contains(@delete,"9")][@xml:lang="en"][not(following-sibling::*)]/tau[@xml:lang="no"][not(preceding-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -8293,6 +9718,11 @@ //lambda[starts-with(concat(@name,"-"),"true-")]//beta[@xml:lang="en"][@xml:id="id1"][following-sibling::nu[contains(concat(@data,"$"),"attribute value$")][@xml:lang="no-nb"]//upsilon[contains(@number,"alue")][following-sibling::delta[@xml:lang="nb"][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id2"][following-sibling::chi[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][following-sibling::epsilon[@attribute][@xml:id="id3"][preceding-sibling::*[position() = 4]][following-sibling::kappa[@abort="123456789"][@xml:lang="no-nb"][not(following-sibling::*)]//omega[@xml:lang="nb"][following-sibling::epsilon[not(following-sibling::*)]//omicron[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::pi//lambda[not(following-sibling::*)]]]][position() = 1]][position() = 1]]]][position() = 1]] + + + beta + 0 + @@ -8319,6 +9749,11 @@ //phi[@xml:lang="en"][@xml:id="id1"]/kappa[@token][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]//iota[following-sibling::*[position()=1]][following-sibling::pi[@class][@xml:lang="nb"]/iota[starts-with(concat(@attribute,"-"),"content-")][@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/zeta[@xml:lang="en"][not(child::node())][following-sibling::epsilon[@content][not(following-sibling::*)]//lambda[@xml:id="id4"]/lambda[@name][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="nb"]/xi[@xml:id="id5"][not(following-sibling::*)]/iota[starts-with(@src,"100")][@xml:id="id6"][not(following-sibling::*)]/rho[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@insert][@xml:lang="no-nb"][@xml:id="id8"][not(child::node())][following-sibling::omicron[starts-with(concat(@name,"-"),"solid 1px green-")][@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)][position() = 1]]]]][position() = 1]] + + + kappa + 0 + @@ -8352,6 +9787,11 @@ //sigma[@xml:id="id1"]//iota[contains(concat(@number,"$"),"odeValue$")][@xml:id="id2"]//iota[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@content][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[following-sibling::rho[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::iota[following-sibling::theta[@true][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 4]][following-sibling::xi[starts-with(concat(@content,"-"),"solid 1px green-")][@xml:lang="en-US"][not(child::node())][following-sibling::rho[contains(@content,"%")][@xml:id="id5"][not(child::node())][following-sibling::upsilon[@abort][@xml:id="id6"][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]] + + + iota + 2 + @@ -8373,6 +9813,11 @@ //iota[starts-with(concat(@or,"-"),"attribute value-")][@xml:id="id1"]/beta[not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:id="id2"]//nu[contains(@class,"e ")][@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//upsilon[not(following-sibling::*)]/tau[@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)]//xi[@att="true"][@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@xml:lang="no"][@xml:id="id6"][position() = 1]] + + + beta + 0 + @@ -8394,6 +9839,11 @@ //mu//alpha[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::theta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@title][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=4]][not(preceding-sibling::rho)][following-sibling::gamma[contains(concat(@att,"$"),"ute$")][@xml:lang="no-nb"][not(child::node())][following-sibling::tau[contains(@object,"b")][@xml:lang="en-US"][preceding-sibling::*[position() = 4]][following-sibling::zeta[@class][@xml:id="id4"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 6]][not(following-sibling::*)]//lambda[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]]] + + + alpha + 0 + @@ -8412,6 +9862,11 @@ //chi/tau[starts-with(@or,"this.nodeValu")][@xml:id="id1"][not(following-sibling::*)]//delta[contains(concat(@number,"$"),"ribute$")][@xml:lang="no-nb"]//alpha[@xml:id="id2"][not(child::node())][following-sibling::nu[starts-with(@false,"attribu")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[@false="attribute-value"][not(preceding-sibling::*)]//mu[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[starts-with(@false,"123")][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]/zeta[contains(concat(@and,"$"),"ontent$")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:lang="nb"][@xml:id="id6"]/delta[@title][@xml:lang="en"][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@true][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]]][position() = 1]] + + + alpha + 0 + @@ -8441,6 +9896,11 @@ //mu[contains(concat(@attrib,"$"),"nk$")][@xml:id="id1"]/omicron[following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[starts-with(@token,"another attribute va")]//upsilon[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]/omega[@abort][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@content][not(following-sibling::*)]/zeta[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]//gamma[contains(@true,"is-is-att-val")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[not(following-sibling::*)]//omicron[contains(@attr,"ue")][@xml:lang="no-nb"][not(preceding-sibling::*)]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -8466,6 +9926,11 @@ //zeta[starts-with(concat(@desciption,"-"),"this.nodeValue-")]//chi[contains(concat(@attrib,"$"),"789$")][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:lang="no"][not(following-sibling::*)]/eta[not(child::node())][following-sibling::chi[@and][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[@title][@xml:lang="en-GB"][not(child::node())][following-sibling::beta[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]] + + + chi + 0 + @@ -8483,6 +9948,11 @@ //lambda[@att][@xml:lang="en-GB"]/delta[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)]/upsilon[@token][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::delta[starts-with(concat(@att,"-"),"_blank-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/beta[starts-with(concat(@attrib,"-"),"attribute value-")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[@xml:id="id4"][following-sibling::rho[not(following-sibling::*)]/eta[contains(@object,"d 1")][following-sibling::sigma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[contains(concat(@att,"$"),"ank$")][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[@xml:lang="en-US"]//nu[@title][@xml:lang="en"][not(preceding-sibling::*)]/gamma[@delete][@xml:lang="en"][not(following-sibling::*)][position() = 1]]][position() = 1]]]]] + + + upsilon + 0 + @@ -8513,6 +9983,11 @@ //epsilon[@xml:lang="no-nb"][@xml:id="id1"]//chi[@abort][@xml:lang="nb"][@xml:id="id2"][following-sibling::psi[@false][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::theta[@attrib="attribute-value"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[not(child::node())][following-sibling::upsilon[not(following-sibling::*)]/phi[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::epsilon[contains(concat(@abort,"$"),"e$")][not(following-sibling::*)]//delta[@xml:id="id4"][not(following-sibling::*)]//xi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::theta[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omega[contains(@src,"-valu")][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::*[@xml:lang="no-nb"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="en-US"][@xml:id="id8"]/zeta[@attribute][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@attr="attribute-value"][@xml:id="id10"][not(following-sibling::*)]//alpha[@xml:lang="no"]/zeta[@xml:lang="no"][not(following-sibling::*)]/zeta[@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)]//tau[contains(concat(@true,"$"),"3456789$")][@xml:id="id12"][not(following-sibling::*)]/pi[@xml:lang="nb"][following-sibling::iota[@xml:id="id13"]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]] + + + chi + 0 + @@ -8555,6 +10030,11 @@ //nu[contains(concat(@or,"$"),"reen$")][@xml:id="id1"]//epsilon[@xml:lang="en"][not(child::node())][following-sibling::epsilon[@xml:lang="en-US"][not(following-sibling::*)]/gamma[@xml:id="id2"][not(following-sibling::*)]//kappa[@abort][@xml:id="id3"][not(child::node())][following-sibling::mu[@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[@xml:lang="en"][@xml:id="id5"]/omicron[following-sibling::tau[starts-with(@attr,"attribu")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::rho[contains(concat(@class,"$"),".nodeValue$")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/tau[not(preceding-sibling::*)][not(following-sibling::*)]/eta[contains(@title,"d")][@xml:id="id6"][not(following-sibling::*)]/xi[@class][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[contains(@title,"456")][@xml:lang="no-nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@attribute][@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 2]]//epsilon[@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[contains(@desciption,"ue")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::lambda[@xml:id="id11"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::eta[@xml:lang="no"][following-sibling::*[contains(@data,"e")][@xml:lang="no"]/*[@xml:lang="en-GB"][@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[contains(@attr,"ttribute")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::theta or following-sibling::theta)]/chi[@xml:lang="en-US"][@xml:id="id13"][position() = 1]][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]][position() = 1]] + + + epsilon + 0 + @@ -8597,6 +10077,11 @@ //omicron[@data="attribute-value"]/kappa[@xml:lang="en"][@xml:id="id1"]/beta[@and][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::lambda)][following-sibling::upsilon[@xml:lang="nb"][not(following-sibling::*)]/delta[starts-with(concat(@and,"-"),"true-")][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[contains(concat(@data,"$"),"px green$")]//iota[not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::delta[preceding-sibling::*[position() = 1]][following-sibling::chi[starts-with(concat(@number,"-"),"true-")][@xml:lang="no"][not(child::node())][following-sibling::upsilon[contains(concat(@class,"$"),"100%$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//lambda[@xml:id="id6"][not(preceding-sibling::*)]/sigma[@attribute][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]]]] + + + beta + 0 + @@ -8629,6 +10114,11 @@ //theta[@number="content"][@xml:lang="en-GB"][@xml:id="id1"]//psi[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@attrib="true"][not(following-sibling::*)]//kappa[starts-with(@attrib,"content")][@xml:lang="en-US"][not(following-sibling::*)]//phi[starts-with(concat(@content,"-"),"attribute-")][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[contains(@string,"ue")][@xml:id="id3"][preceding-sibling::*[position() = 1]]/upsilon[@xml:lang="en-US"]//chi[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]] + + + phi + 0 + @@ -8650,6 +10140,11 @@ //delta[@insert][@xml:lang="no-nb"][@xml:id="id1"]//rho[@false="this-is-att-value"][not(following-sibling::*)]//kappa[contains(@and,"3456")][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@true][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@xml:id="id3"]//chi[starts-with(concat(@object,"-"),"another attribute value-")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::gamma[@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@title][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 2]]/chi[contains(concat(@or,"$"),"een$")][@xml:id="id7"][not(preceding-sibling::*)][not(preceding-sibling::chi)][following-sibling::tau[@content][@xml:lang="no"]//omega[starts-with(@number,"solid 1")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[contains(concat(@src,"$"),"alse$")]/alpha[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[not(child::node())][following-sibling::phi[contains(concat(@abort,"$"),"0%$")][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(preceding-sibling::phi)][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id9"][preceding-sibling::*[position() = 2]][following-sibling::chi[@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][not(preceding-sibling::chi)]/eta[@xml:lang="no"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@token][@xml:lang="en"][not(following-sibling::*)]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -8688,6 +10183,11 @@ //chi[@xml:lang="en"]//omicron[@object][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@att="attribute"][@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[starts-with(concat(@title,"-"),"this.nodeValue-")][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[not(child::node())][following-sibling::psi[contains(@delete,"ib")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]//theta[@xml:id="id2"][following-sibling::rho[not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][position() = 1]]]]]] + + + omicron + 0 + @@ -8707,6 +10207,11 @@ //chi[@xml:lang="en-US"]/epsilon[contains(concat(@attrib,"$"),"ent$")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::rho[not(following-sibling::*)]/chi[@true][@xml:lang="no"][@xml:id="id1"]//zeta[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::theta[@xml:id="id3"][not(child::node())][following-sibling::delta[@xml:lang="no"][not(following-sibling::*)]//alpha[@or="true"][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//nu[contains(concat(@attrib,"$"),"ue$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[contains(concat(@delete,"$"),"se$")][@xml:lang="en"][@xml:id="id5"][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id6"][following-sibling::chi[contains(@attribute,"d 1px green")]/nu[@xml:lang="en-US"][@xml:id="id7"][not(following-sibling::*)]//phi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::nu[@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]]]]] + + + epsilon + 0 + @@ -8739,6 +10244,11 @@ //beta[starts-with(concat(@object,"-"),"_blank-")]//iota[not(following-sibling::*)]/theta[starts-with(concat(@number,"-"),"123456789-")][@xml:lang="nb"][@xml:id="id1"]//delta[@true][not(following-sibling::*)]//chi[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]/psi[contains(concat(@number,"$"),"ent$")]/beta[contains(concat(@name,"$"),"ribute value$")][@xml:id="id3"][not(preceding-sibling::*)]//omega[@object="attribute"][not(following-sibling::*)]/beta[not(preceding-sibling::*)][not(following-sibling::*)]//nu[@attribute="this-is-att-value"][@xml:lang="no"][not(child::node())][following-sibling::rho[@content][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[not(child::node())][following-sibling::epsilon[starts-with(concat(@false,"-"),"true-")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]//mu[starts-with(@src,"fals")][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[starts-with(@object,"attribute v")][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::sigma[starts-with(concat(@desciption,"-"),"_blank-")][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:id="id6"][not(following-sibling::*)][position() = 1]]]]][position() = 1]] + + + nu + 0 + @@ -8774,6 +10284,11 @@ //pi[@xml:lang="en-US"]//lambda[@data="123456789"][following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:id="id2"][preceding-sibling::*[position() = 2]]//phi[starts-with(concat(@delete,"-"),"true-")][@xml:lang="en"][not(following-sibling::*)]/sigma[contains(@desciption,"lank")][not(following-sibling::*)]//psi[starts-with(@delete,"a")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::delta[starts-with(@attr,"tru")][following-sibling::*[position()=1]][following-sibling::tau[starts-with(concat(@number,"-"),"content-")][preceding-sibling::*[position() = 2]]//gamma[not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=4]][not(child::node())][following-sibling::psi[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::eta[@xml:id="id6"][preceding-sibling::*[position() = 4]][following-sibling::epsilon[@src][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[starts-with(concat(@or,"-"),"false-")][@xml:id="id8"][preceding-sibling::*[position() = 6]][not(following-sibling::*)]//pi[not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@number][@xml:id="id9"]//tau[starts-with(@insert,"tru")][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::upsilon[@xml:lang="nb"][@xml:id="id10"][not(child::node())][following-sibling::upsilon[contains(@desciption,"lue")][@xml:id="id11"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]]] + + + lambda + 0 + @@ -8809,6 +10324,11 @@ //sigma[@true][@xml:lang="en-US"][@xml:id="id1"]/xi[@title][@xml:lang="en-US"][@xml:id="id2"][following-sibling::kappa[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]//omicron[@xml:lang="en-GB"][following-sibling::kappa[not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::omicron[starts-with(concat(@desciption,"-"),"content-")][@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]//gamma[@xml:lang="nb"][not(preceding-sibling::*)]/lambda[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::*[starts-with(concat(@string,"-"),"100%-")][not(following-sibling::*)]/tau[@and][not(preceding-sibling::*)]//psi[starts-with(concat(@string,"-"),"_blank-")][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[not(child::node())][following-sibling::beta[contains(concat(@false,"$"),"ttribute value$")][@xml:id="id7"][preceding-sibling::*[position() = 2]]//rho[@xml:lang="en-GB"][following-sibling::omega[@class][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + xi + 0 + @@ -8839,6 +10359,11 @@ //upsilon[starts-with(@or,"solid 1p")][@xml:id="id1"]/epsilon[starts-with(@or,"100%")][@xml:id="id2"][not(preceding-sibling::*)]/psi[contains(concat(@or,"$"),"alue$")][@xml:id="id3"][not(following-sibling::*)]//theta[starts-with(@insert,"attribute v")][not(preceding-sibling::*)]//theta[contains(concat(@title,"$"),"ibute value$")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]] + + + theta + 1 + @@ -8856,6 +10381,11 @@ //nu[contains(concat(@object,"$"),"ue$")][@xml:lang="en-GB"][@xml:id="id1"]//gamma[@xml:lang="no"][not(child::node())][following-sibling::*[@xml:lang="no"]//tau[starts-with(concat(@title,"-"),"true-")][@xml:id="id2"][not(preceding-sibling::*)]/gamma[contains(@name,"10")][not(preceding-sibling::*)][following-sibling::beta[contains(concat(@att,"$"),"s.nodeValue$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:lang="no"][following-sibling::*[position()=4]][not(child::node())][following-sibling::psi[@abort][@xml:id="id3"][not(child::node())][following-sibling::psi[contains(concat(@object,"$"),"true$")][following-sibling::delta[@xml:id="id4"][preceding-sibling::*[position() = 5]][following-sibling::alpha[contains(@title,"e")][@xml:id="id5"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + gamma + 0 + @@ -8877,6 +10407,11 @@ //alpha[@data="attribute"][@xml:lang="en-US"][@xml:id="id1"]/iota[starts-with(@att,"this-is-att-v")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="en"][@xml:id="id3"]/eta[@xml:id="id4"][not(following-sibling::*)]/theta[starts-with(concat(@insert,"-"),"attribute-")][@xml:id="id5"][following-sibling::*[position()=4]][following-sibling::delta[@xml:lang="nb"][not(child::node())][following-sibling::beta[following-sibling::*[position()=2]][following-sibling::upsilon[contains(concat(@insert,"$"),"value$")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::delta[starts-with(concat(@abort,"-"),"attribute-")][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//mu[@xml:lang="en"][@xml:id="id7"][not(child::node())][following-sibling::alpha[@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@xml:lang="nb"][not(following-sibling::*)]/tau[@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[contains(concat(@title,"$"),"ue$")]/phi[@string][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]]]][position() = 1]] + + + iota + 0 + @@ -8907,6 +10442,11 @@ //chi//sigma[starts-with(concat(@src,"-"),"true-")][not(following-sibling::*)]/delta[@xml:id="id1"][following-sibling::kappa[preceding-sibling::*[position() = 1]][following-sibling::iota[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/kappa[@or="attribute value"][@xml:lang="no"][not(preceding-sibling::*)]/rho[@xml:lang="no"][@xml:id="id2"]/mu[not(preceding-sibling::*)][following-sibling::nu][position() = 1]]] + + + delta + 0 + @@ -8928,6 +10468,11 @@ //gamma[contains(concat(@class,"$"),"te$")][@xml:lang="en-US"][@xml:id="id1"]//theta[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)]/lambda[@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[contains(concat(@content,"$"),"ibute-value$")][@xml:lang="en-GB"][@xml:id="id3"]/mu[@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::eta[@xml:lang="en-GB"][@xml:id="id4"][not(following-sibling::*)]//zeta[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[not(child::node())][following-sibling::chi[starts-with(@abort,"an")][@xml:lang="no"][@xml:id="id6"][not(child::node())][following-sibling::epsilon[@number="123456789"][@xml:lang="no-nb"][@xml:id="id7"][not(child::node())][following-sibling::iota[contains(concat(@and,"$"),"odeValue$")][@xml:lang="en-US"][following-sibling::mu[starts-with(@string,"this.")][@xml:id="id8"][preceding-sibling::*[position() = 5]][following-sibling::upsilon[contains(concat(@string,"$"),"lank$")][@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 6]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]] + + + lambda + 0 + @@ -8952,6 +10497,11 @@ //eta[@true="100%"]//mu[@xml:lang="no"][not(following-sibling::*)]/omega[@string][@xml:lang="nb"][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::xi[@xml:lang="nb"][@xml:id="id1"][not(following-sibling::*)]/xi[not(following-sibling::*)]//rho[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[following-sibling::kappa[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@delete="attribute"][preceding-sibling::*[position() = 2]][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::nu[starts-with(concat(@abort,"-"),"123456789-")][@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 4]]//eta[contains(concat(@class,"$"),"is-is-att-value$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@attrib][@xml:id="id5"][preceding-sibling::*[position() = 1]]/iota[not(following-sibling::*)]/beta[@string][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]/omega[not(preceding-sibling::*)]][position() = 1]]][position() = 1]]]]]] + + + omega + 0 + @@ -8986,6 +10536,11 @@ //zeta[@attribute][@xml:lang="en-GB"]//gamma[@string][@xml:lang="en"][not(preceding-sibling::*)]//mu[starts-with(@name,"tru")][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::nu[starts-with(concat(@content,"-"),"true-")][@xml:id="id2"][following-sibling::iota[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::iota[@true][not(child::node())][following-sibling::omicron[@abort][@xml:id="id4"][preceding-sibling::*[position() = 4]]//theta[starts-with(@insert,"at")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@xml:id="id6"]//mu[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::eta[contains(concat(@desciption,"$"),"reen$")][@xml:lang="no-nb"][not(child::node())][following-sibling::eta[starts-with(concat(@attrib,"-"),"attribute-")][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::mu[@xml:id="id8"][following-sibling::lambda[not(following-sibling::*)]/sigma[@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="no"][@xml:id="id9"]/omega[@token][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="nb"]//lambda[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::pi[contains(@token,"x ")][preceding-sibling::*[position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + mu + 0 + @@ -9021,6 +10576,11 @@ //beta[@xml:lang="nb"][@xml:id="id1"]//iota[contains(concat(@token,"$"),"lank$")][@xml:lang="en"][following-sibling::sigma[starts-with(concat(@token,"-"),"another attribute value-")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][not(child::node())][following-sibling::sigma[@abort][@xml:lang="no"][not(child::node())][following-sibling::rho[not(child::node())][following-sibling::kappa[@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::gamma[@string="100%"][preceding-sibling::*[position() = 5]][following-sibling::epsilon[preceding-sibling::*[position() = 6]]//tau[@xml:id="id3"][not(following-sibling::*)]/beta[starts-with(@and,"fa")][not(following-sibling::*)]/nu[@class][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[contains(concat(@insert,"$"),"this.nodeValue$")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::mu[preceding-sibling::*[position() = 1]][following-sibling::chi[contains(concat(@attrib,"$"),"ute$")][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=4]][following-sibling::*[@xml:id="id7"][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[@xml:lang="no"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=2]][following-sibling::kappa[@xml:lang="en-US"][preceding-sibling::*[position() = 5]][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id8"][not(following-sibling::*)]/kappa[starts-with(concat(@string,"-"),"100%-")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[contains(concat(@content,"$"),"deValue$")][@xml:lang="no"][@xml:id="id9"][not(following-sibling::*)]/theta[contains(@object,"0")][not(following-sibling::*)]//lambda[starts-with(concat(@class,"-"),"this.nodeValue-")][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[starts-with(@insert,"_blan")][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -9060,6 +10620,11 @@ //theta[contains(concat(@content,"$"),"is.nodeValue$")][@xml:lang="en-US"][@xml:id="id1"]//gamma[starts-with(@or,"t")][@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::beta[@xml:id="id2"][not(following-sibling::*)]//iota[starts-with(@and,"s")][not(preceding-sibling::*)]/psi[starts-with(@attr,"solid 1px")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::kappa[@desciption="attribute"][@xml:lang="nb"][@xml:id="id4"]]] + + + gamma + 0 + @@ -9076,6 +10641,11 @@ //theta[@xml:lang="nb"]/omicron[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]//xi[contains(concat(@data,"$"),"e$")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[contains(@attribute,"tt-value")][@xml:lang="nb"]/beta[@xml:id="id3"][not(preceding-sibling::*)]/mu[@src][@xml:id="id4"][not(following-sibling::*)]/kappa[@number][@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::eta[@xml:id="id6"][not(following-sibling::*)]/theta[@xml:id="id7"][not(child::node())][following-sibling::theta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::lambda[starts-with(concat(@or,"-"),"another attribute value-")][@xml:lang="en"][following-sibling::xi[@false][@xml:id="id8"][preceding-sibling::*[position() = 3]]//upsilon[@number][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="en"][not(child::node())][following-sibling::eta[@xml:lang="no-nb"]//eta[not(child::node())][following-sibling::eta[@number][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[@src][@xml:id="id10"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]]] + + + omicron + 0 + @@ -9110,6 +10680,11 @@ //mu[contains(concat(@name,"$"),"se$")][@xml:lang="no-nb"][@xml:id="id1"]//alpha[@or]/phi[@att="true"][@xml:lang="no-nb"][not(child::node())][following-sibling::beta/gamma[@att][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@insert][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@true][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:id="id3"][following-sibling::omega[contains(concat(@attrib,"$")," value$")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::mu[@abort][@xml:id="id5"][following-sibling::delta[@xml:lang="nb"][preceding-sibling::*[position() = 3]]/iota[@abort][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)]//sigma[@data][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[starts-with(@attrib,"12")][@xml:id="id9"]/pi[@xml:lang="en"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::delta[@xml:lang="en"][@xml:id="id11"][not(child::node())][following-sibling::gamma[@xml:id="id12"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -9147,6 +10722,11 @@ //rho/nu[not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][not(following-sibling::*)]/mu[@xml:lang="no-nb"][not(preceding-sibling::*)]//theta[contains(concat(@number,"$"),".nodeValue$")][@xml:lang="nb"][@xml:id="id1"][not(child::node())][following-sibling::beta[@and="attribute value"][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 2]]//sigma[@attr][@xml:lang="nb"][not(following-sibling::*)]//pi[@content][@xml:id="id3"][not(preceding-sibling::*)][position() = 1]]][position() = 1]] + + + nu + 0 + @@ -9168,6 +10748,11 @@ //sigma[@xml:id="id1"]/mu[@xml:id="id2"]/sigma[not(following-sibling::*)]//epsilon[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@and="attribute"][@xml:id="id4"][following-sibling::sigma[contains(@false,"ue")][@xml:id="id5"][preceding-sibling::*[position() = 1]]//iota[@insert][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[starts-with(concat(@attr,"-"),"100%-")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/zeta[@delete][@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::sigma[@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[@xml:id="id10"][not(following-sibling::*)]/pi[contains(concat(@string,"$"),"d 1px green$")][@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)]//psi[@xml:id="id12"]//zeta[not(preceding-sibling::*)][not(preceding-sibling::zeta or following-sibling::zeta)]/eta[@attribute][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:id="id13"]//kappa[@and][@xml:lang="en"][not(following-sibling::*)]/alpha[@abort][@xml:id="id14"]//phi[contains(@title,"ute value")][not(following-sibling::*)]/xi[@xml:lang="no-nb"][@xml:id="id15"][not(following-sibling::*)]/chi[contains(concat(@data,"$"),"ue$")][@xml:lang="no-nb"]//upsilon[@xml:id="id16"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@xml:id="id17"]][position() = 1]][position() = 1]]]] + + + phi + 0 + @@ -9217,6 +10802,11 @@ //kappa[@xml:id="id1"]/eta[@xml:id="id2"][not(preceding-sibling::*)]//phi[@att="true"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[not(child::node())][following-sibling::omega[@xml:lang="en"][following-sibling::gamma[@xml:id="id4"][following-sibling::alpha[contains(concat(@class,"$"),"lank$")][@xml:lang="en-GB"]/iota[contains(concat(@insert,"$"),"123456789$")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(preceding-sibling::iota)][not(child::node())][following-sibling::rho[contains(@src,"k")][preceding-sibling::*[position() = 1]]/alpha[@string][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::eta[@xml:id="id5"][preceding-sibling::*[position() = 1]]//mu[@insert="this.nodeValue"][not(following-sibling::*)]/pi[contains(concat(@attribute,"$"),"is-att-value$")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="no-nb"][@xml:id="id7"][not(preceding-sibling::*)]//epsilon[@xml:lang="en"][@xml:id="id8"]//omicron[not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::omega[@xml:id="id9"][following-sibling::omega[@and="true"][@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::delta[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="en-US"][following-sibling::nu[following-sibling::phi[@string][@xml:lang="no-nb"][not(following-sibling::*)]/upsilon[contains(concat(@att,"$")," attribute value$")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)]]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]] + + + phi + 0 + @@ -9260,6 +10850,11 @@ //omega/rho[starts-with(concat(@content,"-"),"solid 1px green-")][not(preceding-sibling::*)][not(following-sibling::*)]/iota[contains(@or,"a")][@xml:id="id1"][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@false][@xml:lang="en"][following-sibling::zeta[contains(concat(@title,"$"),"this-is-att-value$")][@xml:lang="nb"][not(following-sibling::*)]//theta[@attr][not(preceding-sibling::*)]/beta[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@string][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[contains(@att,"k")][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::alpha[@false="true"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id7"]//delta[contains(@insert,"bute value")][@xml:lang="en-US"][not(following-sibling::*)]/eta[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::xi[@att][preceding-sibling::*[position() = 1]]/xi[@xml:lang="no"][not(child::node())][following-sibling::alpha[@or="this.nodeValue"]//delta[@title="true"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="no"]/omega[@xml:id="id9"]/sigma[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + iota + 0 + @@ -9303,6 +10898,11 @@ //beta[@xml:id="id1"]//chi[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::theta[@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//theta[starts-with(@string,"100")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[not(child::node())][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]//tau[@attr][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@xml:id="id6"][not(preceding-sibling::*)]/zeta[@title="123456789"][@xml:id="id7"][not(preceding-sibling::*)]//xi[@xml:lang="nb"][not(preceding-sibling::*)]//lambda[starts-with(concat(@object,"-"),"false-")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]]/omega[@true][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::delta[@xml:id="id10"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[contains(concat(@true,"$"),"ue$")][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]] + + + epsilon + 0 + @@ -9335,6 +10935,11 @@ //nu[starts-with(@name,"123456")][@xml:lang="nb"]//gamma[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id2"]/lambda[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)]//delta[starts-with(concat(@attr,"-"),"another attribute value-")][@xml:lang="en-US"][not(following-sibling::*)]//zeta[@xml:lang="en"][not(following-sibling::*)]//theta[starts-with(concat(@number,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::epsilon[contains(@src,"t")][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@att][@xml:id="id6"][not(child::node())][following-sibling::psi[@xml:lang="en"]//theta[@attribute][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::lambda[@data="attribute value"][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[@object]//mu[@xml:lang="en-GB"][@xml:id="id8"]//tau[@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)]//delta[@xml:lang="en"][not(preceding-sibling::*)]//*[@xml:lang="en-US"][@xml:id="id10"][not(following-sibling::*)]/pi[@xml:lang="no"][@xml:id="id11"][not(child::node())][following-sibling::zeta[@xml:lang="nb"][@xml:id="id12"][preceding-sibling::*[position() = 1]]//gamma[not(preceding-sibling::*)][not(following-sibling::gamma)]/theta[contains(@attrib,"e")][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[starts-with(concat(@or,"-"),"another attribute value-")][@xml:id="id13"][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]] + + + gamma + 0 + @@ -9378,6 +10983,11 @@ //mu[starts-with(concat(@or,"-"),"_blank-")][@xml:id="id1"]//zeta[@xml:lang="en"][not(following-sibling::*)]//upsilon[@xml:id="id2"][not(preceding-sibling::*)]//eta[@true][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[contains(@content,"on")][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@class][@xml:id="id4"][not(preceding-sibling::iota)][not(child::node())][following-sibling::omega[@false][@xml:lang="en-US"][preceding-sibling::*[position() = 2]]//*[@class][@xml:id="id5"][not(following-sibling::*)]/delta[starts-with(concat(@insert,"-"),"this.nodeValue-")][following-sibling::omega[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:lang="en-US"][@xml:id="id7"][not(following-sibling::*)]//lambda[starts-with(concat(@content,"-"),"this-")][@xml:lang="en-US"][following-sibling::*[position()=4]][not(child::node())][following-sibling::alpha[starts-with(@class,"attribute-v")][preceding-sibling::*[position() = 1]][following-sibling::theta[contains(@false,"bu")][@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 2]][following-sibling::delta[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::beta[@name="_blank"][@xml:id="id9"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//gamma[@xml:lang="en-GB"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::delta[contains(concat(@desciption,"$"),"-is-att-value$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[contains(concat(@attr,"$"),"56789$")][@xml:lang="no"][preceding-sibling::*[position() = 2]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + rho + 0 + @@ -9412,6 +11022,11 @@ //*[@xml:lang="no-nb"]/*[contains(@class,"k")][@xml:lang="en-GB"]/beta[@desciption="false"][@xml:lang="en-GB"][not(preceding-sibling::*)][not(preceding-sibling::beta)][not(child::node())][following-sibling::sigma[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::pi[contains(concat(@title,"$"),"t$")][@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)]/omega[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@xml:lang="en"][@xml:id="id2"]//mu[contains(@and,"bute va")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[contains(concat(@delete,"$"),"100%$")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::pi[@xml:id="id5"][not(child::node())][following-sibling::phi[contains(@src,"x green")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=6]][following-sibling::tau[contains(@object,"conte")][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=5]][following-sibling::phi[following-sibling::xi[@false="content"][@xml:lang="en-GB"][@xml:id="id7"][preceding-sibling::*[position() = 5]][following-sibling::phi[@xml:lang="no"][@xml:id="id8"][preceding-sibling::*[position() = 6]][following-sibling::*[position()=2]][following-sibling::tau[@xml:id="id9"][preceding-sibling::*[position() = 7]][following-sibling::eta[@xml:id="id10"]//chi[@xml:id="id11"][not(preceding-sibling::*)][following-sibling::alpha[@false][@xml:lang="no"][@xml:id="id12"][not(following-sibling::*)]/iota[not(child::node())][following-sibling::zeta[@xml:lang="no"][@xml:id="id13"][not(following-sibling::*)]//beta[contains(@att,"lue")][@xml:lang="en-US"]/chi[@xml:lang="en-US"][@xml:id="id14"][not(preceding-sibling::*)][position() = 1]]]]][position() = 1]]]]][position() = 1]]]]] + + + beta + 0 + @@ -9452,6 +11067,11 @@ //mu[@xml:lang="en"][@xml:id="id1"]/eta[@insert][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)]/delta[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::beta[starts-with(@attribute,"another attr")][@xml:lang="en"][@xml:id="id4"]/alpha[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::zeta[contains(@delete,"78")][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@object][@xml:id="id6"]][position() = 1]]] + + + delta + 0 + @@ -9469,6 +11089,11 @@ //sigma[@number="content"][@xml:id="id1"]//xi[starts-with(concat(@attr,"-"),"this-")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@or][not(preceding-sibling::upsilon)][following-sibling::rho[@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]//psi[@xml:lang="en"][@xml:id="id3"]//beta[@xml:lang="en"][@xml:id="id4"][following-sibling::xi[@xml:lang="nb"][preceding-sibling::*[position() = 1]]/alpha[not(preceding-sibling::*)][following-sibling::xi[starts-with(concat(@token,"-"),"attribute-")][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[contains(@title,"ibute")][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]/gamma[not(preceding-sibling::*)][following-sibling::pi[starts-with(@attr,"s")][@xml:lang="no-nb"][@xml:id="id7"][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/gamma[starts-with(concat(@string,"-"),"_blank-")][not(preceding-sibling::*)]/beta[@desciption][@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omega[contains(@title,"ent")][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="en-US"][not(following-sibling::*)]/eta[contains(@src,"tent")][@xml:lang="no"][@xml:id="id9"][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -9502,6 +11127,11 @@ //omega[starts-with(@string,"tr")][@xml:lang="en-US"]/chi[@attribute="this.nodeValue"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::chi[not(child::node())][following-sibling::chi[starts-with(concat(@insert,"-"),"false-")][@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]/zeta//upsilon[@data][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[starts-with(@delete,"t")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::mu[not(following-sibling::*)]//iota[contains(concat(@desciption,"$"),"lse$")][@xml:lang="en-GB"][not(following-sibling::*)]//pi[@xml:lang="en"]//pi[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="en"][not(child::node())][following-sibling::chi[@xml:lang="en"][not(child::node())][following-sibling::eta//alpha[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[contains(concat(@insert,"$"),"ute$")][@xml:id="id6"][not(child::node())][following-sibling::lambda[contains(@attribute,"ue")][@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]]/mu[starts-with(concat(@attribute,"-"),"attribute-")][not(following-sibling::*)]//zeta[@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[starts-with(concat(@att,"-"),"solid 1px green-")][preceding-sibling::*[position() = 1]]]]][position() = 1]]]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -9542,6 +11172,11 @@ //beta[@abort="content"]/kappa[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:id="id1"][not(child::node())][following-sibling::rho[contains(@token,"lank")][@xml:lang="no"][preceding-sibling::*[position() = 1]]//nu[@data][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omicron[starts-with(concat(@number,"-"),"attribute-")][not(child::node())][following-sibling::rho[contains(@insert,"1px green")][not(following-sibling::*)]//psi[not(child::node())][following-sibling::beta[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]][position() = 1]] + + + kappa + 0 + @@ -9560,6 +11195,11 @@ //theta[@insert][@xml:lang="en-GB"][@xml:id="id1"]/chi[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::zeta[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]//delta[@or="attribute-value"][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::mu[following-sibling::beta[@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]][position() = 1]] + + + chi + 0 + @@ -9575,6 +11215,11 @@ //epsilon//lambda[@token][@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::kappa[contains(concat(@att,"$"),"ute$")][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/*[@xml:id="id3"][not(following-sibling::*)]//nu[@xml:lang="nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::omega[@string="false"][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 2]]//beta[@number="true"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(@delete,"attr")][@xml:id="id6"][following-sibling::pi[@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]//chi[@xml:id="id8"][not(following-sibling::*)]//zeta[@and="this-is-att-value"][@xml:lang="no-nb"][@xml:id="id9"][not(following-sibling::*)]/kappa[@xml:id="id10"][following-sibling::beta[following-sibling::*[position()=3]][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id11"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::tau[@xml:id="id12"][following-sibling::omega[starts-with(concat(@attr,"-"),"true-")][@xml:lang="en"][@xml:id="id13"]/nu[@attribute="100%"][@xml:lang="no"][@xml:id="id14"][not(following-sibling::*)]/omicron[@xml:lang="en-GB"][@xml:id="id15"]//beta[starts-with(concat(@true,"-"),"attribute value-")][@xml:id="id16"][following-sibling::*[position()=1]][following-sibling::gamma[starts-with(@title,"s")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]]]] + + + lambda + 0 + @@ -9615,6 +11260,11 @@ //nu[starts-with(@class,"at")][@xml:lang="nb"][@xml:id="id1"]//mu[@insert][@xml:id="id2"][not(preceding-sibling::*)]/pi[contains(concat(@content,"$"),"k$")]/sigma[not(following-sibling::*)]//rho[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@and][@xml:id="id5"][following-sibling::*[position()=2]][not(preceding-sibling::omicron)][not(child::node())][following-sibling::beta[@class="true"][@xml:lang="nb"][following-sibling::rho[@xml:id="id6"][not(following-sibling::*)]//epsilon[not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/gamma[contains(concat(@src,"$"),"0%$")][@xml:lang="en"][@xml:id="id7"][following-sibling::lambda[starts-with(@desciption,"_bla")][@xml:id="id8"][preceding-sibling::*[position() = 1]]/sigma[@xml:id="id9"][not(following-sibling::*)]//eta[contains(@delete,"nt")][@xml:lang="nb"][@xml:id="id10"][not(following-sibling::*)][not(preceding-sibling::eta)]//alpha[following-sibling::*[position()=3]][following-sibling::upsilon[not(child::node())][following-sibling::omega[@number="solid 1px green"][not(child::node())][following-sibling::omega[@xml:lang="en-US"][@xml:id="id11"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/gamma[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][@xml:id="id12"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]]]] + + + rho + 0 + @@ -9653,6 +11303,11 @@ //kappa[@class="another attribute value"][@xml:lang="en-GB"][@xml:id="id1"]//nu[contains(concat(@att,"$"),"green$")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]//alpha[contains(@false,"100")][@xml:id="id3"][following-sibling::mu[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::tau[starts-with(concat(@class,"-"),"this.nodeValue-")][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 2]][following-sibling::nu[starts-with(@desciption,"f")][@xml:lang="no"][not(following-sibling::*)]/alpha[contains(concat(@content,"$"),"ue$")][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::eta[@token][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::delta[starts-with(concat(@class,"-"),"100%-")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/iota[starts-with(@true,"thi")][@xml:lang="no"][@xml:id="id8"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[contains(concat(@attrib,"$"),"content$")][@xml:lang="no"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -9676,6 +11331,11 @@ //eta[@xml:lang="no"][@xml:id="id1"]/gamma[contains(concat(@number,"$"),"ue$")][@xml:id="id2"]//beta[@src="true"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omega[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::kappa//alpha[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::kappa[starts-with(concat(@string,"-"),"attribute-")][not(following-sibling::*)]//zeta[@xml:lang="en-US"]//omicron[contains(@abort,"al")][@xml:lang="no"][not(following-sibling::omicron)][not(child::node())][following-sibling::epsilon[@xml:id="id3"][following-sibling::sigma[starts-with(@class,"100")][@xml:lang="en-US"][not(following-sibling::*)]//upsilon[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[contains(@att,"lid 1px gr")][@xml:lang="no-nb"][@xml:id="id5"]//delta[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::theta[@src][@xml:lang="no"][@xml:id="id6"][not(child::node())][following-sibling::upsilon[@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::eta[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/tau[@xml:lang="en"][@xml:id="id9"][following-sibling::*[position()=2]][following-sibling::phi[@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@insert][not(following-sibling::*)]]]]]]]][position() = 1]][position() = 1]]] + + + beta + 0 + @@ -9712,6 +11372,11 @@ //*[@xml:lang="nb"][@xml:id="id1"]//phi[starts-with(@or,"12345")][@xml:lang="en-US"][following-sibling::*[position()=4]][following-sibling::kappa[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@xml:lang="no-nb"][following-sibling::beta[@xml:id="id3"]/zeta[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@attr="attribute-value"][preceding-sibling::*[position() = 1]]//upsilon[contains(@delete,"e")][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[@xml:lang="en-US"][@xml:id="id5"][following-sibling::gamma[@name]//alpha[@xml:id="id6"]/phi[@insert][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="en-US"][@xml:id="id7"]/omicron[@attrib][following-sibling::zeta[@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:lang="no"][@xml:id="id9"][not(following-sibling::*)]/beta[not(child::node())][following-sibling::tau[contains(@class,"89")][@xml:lang="no"][@xml:id="id10"]//iota[@data][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::theta[@token="another attribute value"][@xml:lang="en-US"][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]] + + + phi + 0 + @@ -9749,6 +11414,11 @@ //*[@xml:lang="nb"]//*[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::lambda[@attrib][preceding-sibling::*[position() = 1]][following-sibling::tau[contains(concat(@desciption,"$"),"789$")][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//rho[not(preceding-sibling::*)]/gamma[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:id="id4"][not(child::node())][following-sibling::nu[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::*[@xml:lang="en-US"][not(child::node())][following-sibling::pi[@xml:id="id5"][following-sibling::omicron[contains(concat(@attrib,"$"),"alse$")][@xml:lang="en"][not(child::node())][following-sibling::xi[@name="content"][@xml:lang="en-US"][preceding-sibling::*[position() = 6]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]]] + + + any + 1 + @@ -9771,6 +11441,11 @@ //kappa[@name][@xml:lang="no"][@xml:id="id1"]/zeta[starts-with(@or,"attribu")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[contains(concat(@and,"$"),"his-is-att-value$")][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)]//omicron[@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)]//rho[starts-with(concat(@false,"-"),"attribute value-")][@xml:id="id5"][not(preceding-sibling::*)]/omega[starts-with(concat(@attrib,"-"),"attribute-")][following-sibling::*[position()=2]][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::rho[starts-with(concat(@abort,"-"),"content-")][preceding-sibling::*[position() = 2]]//kappa[@false="false"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:id="id7"][preceding-sibling::*[position() = 1]]/delta[@xml:id="id8"]//sigma[contains(@false,"x gree")][@xml:lang="en-US"][@xml:id="id9"][following-sibling::pi[@xml:lang="no-nb"][not(following-sibling::*)]/upsilon[contains(concat(@token,"$"),"solid 1px green$")][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="en"]/upsilon[@xml:lang="no"][not(following-sibling::*)]][position() = 1]]]][position() = 1]] + + + omega + 0 + @@ -9804,6 +11479,11 @@ //gamma[contains(@attrib,"lse")][@xml:lang="en-US"][@xml:id="id1"]//xi[contains(@string,"t")][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[contains(@attr,"ri")][@xml:id="id2"]/theta[contains(@data,"tent")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@true][@xml:lang="no-nb"][not(following-sibling::*)]/kappa[@false][@xml:lang="no"][following-sibling::*[position()=2]][following-sibling::tau[@or][@xml:id="id4"][not(child::node())][following-sibling::omicron[@attrib="content"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/sigma[contains(concat(@object,"$"),"attribute$")][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::chi[not(following-sibling::*)]//*[@xml:lang="en"][@xml:id="id5"]/mu[contains(concat(@name,"$"),"tribute value$")][not(child::node())][following-sibling::xi[@xml:id="id6"][preceding-sibling::*[position() = 1]]/beta[starts-with(@delete,"att")][@xml:id="id7"][not(child::node())][following-sibling::delta[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@title][@xml:id="id10"][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -9837,6 +11517,11 @@ //tau[@name][@xml:lang="no"][@xml:id="id1"]/nu[@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 1]]//pi[@data="attribute"][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::epsilon[starts-with(@src,"this.")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(@token,"a")][@xml:id="id4"][following-sibling::theta[contains(concat(@class,"$"),"100%$")][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=3]][following-sibling::alpha[starts-with(@attrib,"at")][following-sibling::*[position()=2]][following-sibling::eta[@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 5]][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[preceding-sibling::*[position() = 6]][not(following-sibling::*)]//*[contains(concat(@att,"$"),"true$")][following-sibling::omicron[not(following-sibling::*)][not(preceding-sibling::omicron)]/gamma[@token="solid 1px green"][@xml:lang="no-nb"][not(following-sibling::*)]//xi[starts-with(@att,"attribute-va")][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[starts-with(concat(@token,"-"),"123456789-")][@xml:id="id8"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]]][position() = 1]]] + + + nu + 0 + @@ -9864,6 +11549,11 @@ //lambda//mu[@attr="true"][@xml:lang="en-US"][@xml:id="id1"][following-sibling::sigma[preceding-sibling::*[position() = 1]][following-sibling::iota[not(child::node())][following-sibling::eta[contains(concat(@true,"$"),"attribute value$")][not(following-sibling::*)]//chi[not(child::node())][following-sibling::psi[@xml:id="id2"][not(child::node())][following-sibling::tau[@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//gamma[@true][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=9]][following-sibling::lambda[not(child::node())][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=7]][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::*[@xml:lang="en"][not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::zeta[@xml:id="id5"][not(child::node())][following-sibling::kappa[@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::zeta[@xml:id="id7"][not(child::node())][following-sibling::delta[@attr][@xml:lang="en"][preceding-sibling::*[position() = 9]]//omicron[contains(@class,"ttrib")][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]]]][position() = 1]][position() = 1]]]] + + + mu + 0 + @@ -9894,6 +11584,11 @@ //omicron/upsilon[contains(@token,"56789")][@xml:lang="en"][@xml:id="id1"][following-sibling::*[position()=6]][following-sibling::theta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[@data][@xml:id="id2"][not(child::node())][following-sibling::psi[contains(concat(@name,"$"),"k$")][@xml:id="id3"][preceding-sibling::*[position() = 3]][following-sibling::chi[@object][@xml:id="id4"][not(child::node())][following-sibling::rho[@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::eta[@xml:lang="en"][@xml:id="id6"]//alpha[@desciption="content"][@xml:id="id7"][not(preceding-sibling::*)]//pi[@attribute][not(preceding-sibling::*)][not(preceding-sibling::pi)]/zeta[contains(@data,"t")][@xml:lang="en"][@xml:id="id8"][not(child::node())][following-sibling::kappa[@false][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[starts-with(concat(@abort,"-"),"content-")][@xml:lang="en-US"][not(following-sibling::*)]/beta[@or][@xml:lang="en-GB"][following-sibling::mu[@token][@xml:id="id10"]//alpha[contains(concat(@and,"$"),"00%$")]//xi[@number][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:id="id11"][not(following-sibling::*)]//tau[@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[contains(@insert,"so")][@xml:id="id13"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@xml:id="id14"]][position() = 1]]][position() = 1]]]]][position() = 1]]] + + + upsilon + 0 + @@ -9933,6 +11628,11 @@ //omicron/phi[@xml:id="id1"][not(following-sibling::*)]/omicron[starts-with(@false,"attri")][@xml:id="id2"][not(child::node())][following-sibling::delta[@xml:id="id3"][preceding-sibling::*[position() = 1]]/gamma[following-sibling::psi[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][following-sibling::chi[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::*[starts-with(concat(@data,"-"),"false-")][@xml:id="id5"][following-sibling::*[position()=2]][following-sibling::omega[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 5]][following-sibling::epsilon[@xml:lang="no"][@xml:id="id7"][not(following-sibling::*)]//beta[@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id9"]//theta[@number][not(following-sibling::*)]//psi[@xml:lang="nb"][@xml:id="id10"][following-sibling::sigma[@string="solid 1px green"]//epsilon[@xml:lang="en-GB"][@xml:id="id11"][not(following-sibling::*)]/kappa[contains(concat(@class,"$"),"nk$")][@xml:lang="no-nb"][not(preceding-sibling::*)]//sigma[@xml:lang="no-nb"][@xml:id="id12"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + omicron + 1 + @@ -9969,6 +11669,11 @@ //phi[@xml:lang="en-GB"][@xml:id="id1"]/psi[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@title="another attribute value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/lambda[starts-with(concat(@token,"-"),"solid 1px green-")][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::mu[contains(@delete,"%")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::eta[preceding-sibling::*[position() = 2]][not(following-sibling::eta)][following-sibling::delta[@token][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]]]]] + + + psi + 0 + @@ -9986,6 +11691,11 @@ //rho[@xml:lang="en-GB"]//xi[not(preceding-sibling::*)]//omicron[@xml:lang="en"][@xml:id="id1"][not(following-sibling::*)]/xi[contains(concat(@or,"$"),"lue$")][@xml:lang="en-US"][not(following-sibling::*)]//delta[not(following-sibling::*)][not(preceding-sibling::delta)]/*[@desciption="solid 1px green"][@xml:lang="en-US"]/sigma[@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::mu[@xml:lang="no-nb"]/delta[@desciption][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//lambda[starts-with(@title,"10")][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[contains(@class,"fa")][@xml:id="id3"][preceding-sibling::*[position() = 1]]/delta[not(child::node())][following-sibling::zeta[starts-with(concat(@token,"-"),"attribute-")]/kappa[@token="this.nodeValue"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[@xml:id="id5"][not(preceding-sibling::*)]//kappa[contains(concat(@string,"$"),"ibute-value$")][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::tau[contains(@desciption,"789")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + sigma + 0 + @@ -10026,6 +11736,11 @@ //epsilon[starts-with(@and,"false")][@xml:lang="no"][@xml:id="id1"]/xi[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[not(following-sibling::*)]/lambda[not(following-sibling::*)]/xi[@class="attribute-value"][@xml:id="id3"]/omicron[not(preceding-sibling::*)][following-sibling::omega[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/*[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::delta[contains(concat(@true,"$"),"value$")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::xi[@desciption][@xml:id="id7"][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -10048,6 +11763,11 @@ //sigma//zeta[@xml:lang="no"][not(following-sibling::*)]/beta[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::beta)][not(child::node())][following-sibling::pi[starts-with(concat(@name,"-"),"false-")][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/iota[starts-with(@att,"co")][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[starts-with(concat(@attribute,"-"),"another attribute value-")][@xml:id="id3"]/alpha[starts-with(concat(@title,"-"),"another attribute value-")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@true="content"][@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]//pi[not(preceding-sibling::*)][not(following-sibling::*)]/alpha[not(preceding-sibling::*)][following-sibling::nu[starts-with(concat(@attr,"-"),"another attribute value-")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 2]][following-sibling::epsilon[@xml:id="id6"][following-sibling::lambda[@att][@xml:lang="en-GB"][preceding-sibling::*[position() = 4]]/*[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]] + + + beta + 0 + @@ -10078,6 +11798,11 @@ //xi[@xml:lang="no-nb"][@xml:id="id1"]/kappa[contains(@object,"co")][not(following-sibling::*)]/xi[@false][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[not(preceding-sibling::*)][following-sibling::rho[@attrib][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//iota[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="no-nb"]/phi[starts-with(@true,"this.nodeVal")][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::chi[@xml:id="id4"][not(following-sibling::*)]/lambda[contains(@title,"3456789")][not(preceding-sibling::*)]//epsilon[contains(concat(@false,"$"),"se$")][@xml:id="id5"]/alpha[@src="false"][@xml:lang="en-GB"][following-sibling::beta[not(preceding-sibling::beta)][not(child::node())][following-sibling::zeta[@attr="this.nodeValue"][@xml:id="id6"][not(following-sibling::*)]//phi//kappa[not(following-sibling::*)]//iota[contains(@src,"ue")][not(preceding-sibling::*)][not(following-sibling::*)]/psi[not(preceding-sibling::*)][not(following-sibling::*)]/phi[@object="another attribute value"][not(preceding-sibling::*)][not(following-sibling::phi)]//beta[not(following-sibling::*)]][position() = 1]]][position() = 1]]] + + + psi + 0 + @@ -10119,6 +11844,11 @@ //nu[@xml:lang="no"][@xml:id="id1"]//delta[contains(concat(@att,"$"),"ribute-value$")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)]//phi[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::*[preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::eta[@xml:id="id5"]//eta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@desciption][@xml:lang="no"][not(following-sibling::*)]/chi[starts-with(@data,"attribut")][not(preceding-sibling::*)]/chi[following-sibling::omega[@xml:lang="nb"][@xml:id="id6"][not(child::node())][following-sibling::beta[@insert="another attribute value"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::rho[starts-with(@src,"true")][preceding-sibling::*[position() = 3]][following-sibling::pi[starts-with(@token,"1")][@xml:lang="en-GB"][@xml:id="id7"][following-sibling::iota[@xml:id="id8"][preceding-sibling::*[position() = 5]]//kappa[contains(@abort,"lue")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@token="false"][@xml:lang="no-nb"][@xml:id="id9"][not(following-sibling::*)][not(preceding-sibling::eta)]/mu[@insert="another attribute value"][@xml:id="id10"][not(child::node())][following-sibling::chi[@attrib][not(following-sibling::*)]/xi[@name][@xml:id="id11"][not(preceding-sibling::*)]/theta[contains(@title,"no")][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]]]]]]][position() = 1]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -10156,6 +11886,11 @@ //psi[@xml:lang="en-GB"]/rho[@xml:lang="en"][not(following-sibling::*)]//eta[@token="123456789"][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa[starts-with(@or,"tru")][@xml:id="id1"][not(following-sibling::*)]/delta[starts-with(@desciption,"this.")][@xml:id="id2"]//phi[starts-with(@token,"100%")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::alpha[preceding-sibling::*[position() = 1]][following-sibling::mu[@xml:id="id4"][preceding-sibling::*[position() = 2]]//psi[@xml:id="id5"]//zeta[@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)]/phi[@src][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(preceding-sibling::tau)]/eta[contains(concat(@title,"$"),"true$")][@xml:id="id7"]//delta[contains(concat(@number,"$"),"attribute value$")][@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)]//chi[@desciption][@xml:id="id9"]//phi[@token][@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@attribute][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id11"]//zeta[@xml:lang="en-US"][@xml:id="id12"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@number][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:lang="no-nb"][@xml:id="id13"][not(child::node())][following-sibling::delta[@data="_blank"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]]]]][position() = 1]]]][position() = 1]] + + + eta + 0 + @@ -10198,6 +11933,11 @@ //omega[@true][@xml:lang="en-US"][@xml:id="id1"]/delta[following-sibling::chi[@abort][@xml:lang="en"][following-sibling::kappa[preceding-sibling::*[position() = 2]]//lambda//tau[@xml:lang="nb"][@xml:id="id2"]//beta[contains(concat(@token,"$"),"false$")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="no"][not(following-sibling::*)]//iota[starts-with(@desciption,"_")][@xml:id="id5"][not(following-sibling::*)]//xi[@xml:id="id6"][following-sibling::rho[@attr][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[starts-with(concat(@name,"-"),"100%-")][@xml:lang="en-US"][not(preceding-sibling::*)]//alpha[@xml:lang="no-nb"][@xml:id="id8"]][position() = 1]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -10229,6 +11969,11 @@ //zeta/kappa[contains(@desciption,"nk")][not(preceding-sibling::*)][following-sibling::omega[@abort="another attribute value"][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::lambda[@class="true"][@xml:lang="no-nb"][@xml:id="id1"][not(child::node())][following-sibling::iota[contains(@insert,"ute val")][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -10243,6 +11988,11 @@ //*[@xml:lang="en-GB"]//eta[contains(@attr,"23")][not(following-sibling::*)]/lambda[contains(concat(@true,"$"),"789$")][@xml:lang="en-GB"][@xml:id="id1"]/xi[@xml:lang="en"][@xml:id="id2"]/beta[contains(@data,"%")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::chi[contains(@or,"ibu")][@xml:id="id3"][following-sibling::upsilon[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@number][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//chi[not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[starts-with(@att,"attri")][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[starts-with(concat(@object,"-"),"another attribute value-")][@xml:lang="no"]//omicron[not(preceding-sibling::*)][not(following-sibling::*)]]]]][position() = 1]] + + + beta + 0 + @@ -10268,6 +12018,11 @@ //beta[starts-with(@object,"attribut")][@xml:lang="no-nb"]/mu[@xml:lang="en"][not(following-sibling::*)][not(following-sibling::mu)]/theta[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::theta[@true="attribute"][@xml:lang="nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//phi[contains(concat(@string,"$"),"nt$")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::epsilon[@title][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -10285,6 +12040,11 @@ //omega[@xml:id="id1"]//tau[contains(@insert,"00%")][@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[starts-with(@object,"attribute ")][@xml:lang="no-nb"][@xml:id="id3"]/beta[starts-with(@desciption,"solid 1px ")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@true][@xml:id="id5"][not(following-sibling::*)]//alpha[contains(concat(@desciption,"$"),"e$")][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)]/omicron[contains(concat(@insert,"$"),"0%$")][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)]/kappa[contains(concat(@delete,"$"),"rue$")][@xml:lang="en-US"][@xml:id="id8"][not(preceding-sibling::*)]//omega[@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)]//nu[@xml:lang="no"][@xml:id="id10"]/kappa[@insert][@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::kappa[starts-with(concat(@name,"-"),"content-")][@xml:lang="en"][not(following-sibling::*)]/phi[not(preceding-sibling::*)][position() = 1]]]] + + + tau + 0 + @@ -10316,6 +12076,11 @@ //nu[@xml:lang="no"][@xml:id="id1"]/iota[starts-with(@content,"this-is-att-valu")][not(preceding-sibling::iota)]/zeta[@title][not(following-sibling::*)]//sigma[@delete="this-is-att-value"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[following-sibling::*[preceding-sibling::*[position() = 2]]/iota[@xml:id="id3"][not(child::node())][following-sibling::omega[@delete][following-sibling::iota[@desciption][@xml:lang="en"][preceding-sibling::*[position() = 2]]//upsilon[following-sibling::*[position()=2]][not(following-sibling::upsilon)][not(child::node())][following-sibling::chi[@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::alpha[@att][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -10340,6 +12105,11 @@ //delta[contains(@title,"his")][@xml:lang="en-US"]/tau[@xml:lang="en"][not(following-sibling::*)]//rho[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::iota[@xml:lang="en"][@xml:id="id2"][following-sibling::theta[@att="123456789"][@xml:id="id3"][following-sibling::gamma[@or="solid 1px green"]/delta[starts-with(concat(@desciption,"-"),"100%-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:id="id4"][following-sibling::*[contains(@attribute,"t")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//delta[@string="attribute-value"][@xml:lang="no-nb"][following-sibling::pi[following-sibling::tau[@att][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/mu[starts-with(@abort,"co")][@xml:lang="no"][not(preceding-sibling::*)][position() = 1]]][position() = 1]]]][position() = 1]]] + + + rho + 0 + @@ -10365,6 +12135,11 @@ //upsilon[@xml:lang="en-GB"][@xml:id="id1"]//rho[contains(@src,"ute va")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::chi[starts-with(concat(@string,"-"),"attribute-")][@xml:lang="en-GB"][following-sibling::*[position()=3]][not(child::node())][following-sibling::chi[@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:lang="en-US"][not(child::node())][following-sibling::sigma[@data][preceding-sibling::*[position() = 4]][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]] + + + rho + 0 + @@ -10379,6 +12154,11 @@ //mu[@attribute="true"][@xml:lang="no-nb"]/zeta[@and="attribute-value"][not(preceding-sibling::*)]//lambda[starts-with(@class,"attribute")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::sigma[@xml:id="id1"][not(child::node())][following-sibling::*[starts-with(@attribute,"content")][@xml:id="id2"][following-sibling::beta[@token][@xml:lang="en-US"][preceding-sibling::*[position() = 3]][following-sibling::kappa[@token][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::mu[contains(concat(@title,"$"),"te$")]//phi[@title="false"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::*[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[not(following-sibling::*)]//phi[starts-with(@number,"123")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::*[@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::sigma[starts-with(@content,"this.n")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::kappa[not(child::node())][following-sibling::omega[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 4]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]]] + + + lambda + 0 + @@ -10409,6 +12189,11 @@ //chi[@attribute]//kappa[starts-with(concat(@number,"-"),"attribute value-")][@xml:id="id1"][not(following-sibling::*)]//lambda[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[starts-with(@attribute,"100")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]]/*[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]//beta[@xml:id="id5"][not(following-sibling::*)]/psi[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[@number][not(child::node())][following-sibling::beta[starts-with(@object,"sol")]//upsilon[starts-with(@or,"false")][not(preceding-sibling::*)][not(following-sibling::*)]//psi[contains(concat(@abort,"$"),"reen$")][@xml:lang="no-nb"][@xml:id="id6"][not(child::node())][following-sibling::omicron[@or][not(following-sibling::*)]//xi[@insert][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::phi[@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@xml:id="id9"][not(child::node())][following-sibling::eta[@or][@xml:id="id10"][not(child::node())][following-sibling::omicron//iota[@xml:lang="nb"][following-sibling::iota[@xml:lang="en"][@xml:id="id11"]//psi[contains(@attribute,"0")][not(preceding-sibling::*)]//iota[@xml:lang="no-nb"][@xml:id="id12"][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]]]] + + + lambda + 0 + @@ -10451,6 +12236,11 @@ //chi[starts-with(@attr,"another attribu")][@xml:id="id1"]/omicron[@attr="123456789"][not(preceding-sibling::*)]/delta[not(preceding-sibling::*)][not(child::node())][following-sibling::chi[starts-with(@insert,"a")][@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::lambda[contains(@object,"se")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omicron[@xml:lang="no-nb"][not(following-sibling::*)]//*[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[contains(@name,"_blan")][@xml:lang="en"][@xml:id="id5"][following-sibling::*[position()=2]][following-sibling::upsilon[@xml:id="id6"][following-sibling::epsilon[@xml:lang="no"][@xml:id="id7"]/*[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::mu[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::epsilon[@delete][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][following-sibling::eta[@xml:id="id9"][preceding-sibling::*[position() = 3]][following-sibling::omega[@desciption="_blank"][@xml:id="id10"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//rho[@att="another attribute value"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@xml:id="id12"][not(preceding-sibling::*)]//theta[@xml:id="id13"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]] + + + delta + 0 + @@ -10484,6 +12274,11 @@ //gamma[@xml:id="id1"]//theta[@xml:lang="en"]/nu[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[@src="this.nodeValue"][not(child::node())][following-sibling::gamma[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/omicron[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]] + + + nu + 0 + @@ -10500,6 +12295,11 @@ //iota[contains(concat(@content,"$"),"px green$")][@xml:id="id1"]//lambda[contains(concat(@false,"$"),"0%$")][@xml:lang="en-GB"]//nu[starts-with(concat(@name,"-"),"attribute value-")][@xml:id="id2"][not(preceding-sibling::*)]//nu/beta[contains(concat(@number,"$"),"rue$")][not(preceding-sibling::*)]/chi[@xml:id="id3"] + + + chi + 0 + @@ -10518,6 +12318,11 @@ //alpha[contains(@content,"ibute v")][@xml:id="id1"]/kappa[@number][@xml:lang="en-US"][not(preceding-sibling::*)]//*[@xml:lang="nb"][not(following-sibling::*)]/gamma[@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[not(following-sibling::*)]/phi[@string="attribute-value"][@xml:lang="no"][not(child::node())][following-sibling::epsilon[contains(concat(@string,"$"),"56789$")][not(following-sibling::*)]/sigma[@att][@xml:id="id4"]//nu[@xml:lang="en-GB"][following-sibling::pi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[contains(@insert,"ue")][@xml:lang="no-nb"][@xml:id="id5"][following-sibling::delta[@content][@xml:lang="nb"][@xml:id="id6"][following-sibling::sigma[contains(@string,"ls")][@xml:id="id7"][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + gamma + 0 + @@ -10546,6 +12351,11 @@ //omicron[@xml:lang="en"]/omega[starts-with(concat(@name,"-"),"solid 1px green-")][not(preceding-sibling::*)]/mu[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@attr][not(following-sibling::*)]/eta[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[contains(@false,"e")][@xml:lang="no-nb"][not(preceding-sibling::*)]//omicron[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[contains(concat(@att,"$"),"lue$")][not(child::node())][following-sibling::eta[starts-with(concat(@false,"-"),"100%-")][@xml:id="id2"][not(child::node())][following-sibling::mu[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//omicron[@xml:lang="nb"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::zeta[@xml:id="id5"][not(following-sibling::*)]//upsilon[@token][@xml:lang="en-US"]//rho[@xml:lang="nb"]//pi[@xml:lang="en"][@xml:id="id6"]/*[@attr]//omega[@token="attribute value"]/gamma[@src="attribute-value"][@xml:id="id7"]/mu[@xml:id="id8"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]] + + + xi + 1 + @@ -10588,6 +12398,11 @@ //eta[starts-with(@att,"tru")][@xml:lang="no-nb"][@xml:id="id1"]//*[@name="false"][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::psi[@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::zeta[not(child::node())][following-sibling::iota[@insert][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::xi[@xml:id="id5"][not(following-sibling::*)]/theta[starts-with(concat(@attrib,"-"),"attribute-")][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:id="id6"][not(preceding-sibling::*)]/kappa[starts-with(concat(@true,"-"),"solid 1px green-")][@xml:id="id7"][not(child::node())][following-sibling::iota[starts-with(concat(@name,"-"),"attribute value-")][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][following-sibling::omicron[following-sibling::iota[starts-with(@title,"this-is-att-val")][@xml:lang="en-GB"][@xml:id="id9"]/xi[contains(@title,"attribut")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[contains(concat(@att,"$"),"true$")]/*[@src][@xml:lang="en"][following-sibling::*[position()=4]][not(child::node())][following-sibling::kappa[@xml:lang="en-US"][@xml:id="id10"][not(child::node())][following-sibling::nu[@string][following-sibling::delta[starts-with(concat(@insert,"-"),"_blank-")][@xml:lang="en-US"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:id="id11"][preceding-sibling::*[position() = 4]]//zeta[@att="100%"][@xml:lang="en-GB"][not(following-sibling::*)]//pi[@xml:id="id12"][following-sibling::lambda[@xml:id="id13"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]] + + + any + 0 + @@ -10627,6 +12442,11 @@ //omicron[@xml:lang="en-GB"]//pi[@xml:id="id1"]/sigma[@xml:lang="no-nb"][@xml:id="id2"][not(child::node())][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id4"]//chi[@xml:lang="en-US"][not(preceding-sibling::chi)]//alpha[starts-with(@insert,"c")][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + sigma + 0 + @@ -10646,6 +12466,11 @@ //zeta[contains(@delete,"alse")][@xml:lang="en"][@xml:id="id1"]//beta[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota/zeta[@or="true"][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:id="id3"]/tau[contains(@attribute,"ibu")][@xml:lang="en-US"]//pi[@attr][not(following-sibling::*)][position() = 1]][position() = 1]] + + + beta + 0 + @@ -10664,6 +12489,11 @@ //omega[@xml:lang="nb"][@xml:id="id1"]//alpha[starts-with(@object,"con")][not(preceding-sibling::*)]//rho[starts-with(concat(@true,"-"),"another attribute value-")][@xml:lang="en"][@xml:id="id2"]/eta[@xml:lang="en-GB"][@xml:id="id3"][following-sibling::upsilon[@abort][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/nu[@xml:lang="en"][following-sibling::gamma[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[starts-with(@content,"_")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::sigma[@xml:id="id5"][not(child::node())][following-sibling::epsilon[@object="123456789"]//upsilon[@true][not(following-sibling::*)]//*[contains(@att,"123456789")][@xml:lang="nb"][@xml:id="id6"][following-sibling::sigma[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[starts-with(concat(@name,"-"),"this.nodeValue-")][@xml:lang="en-US"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]] + + + eta + 0 + @@ -10693,6 +12523,11 @@ //xi[@xml:lang="en-GB"][@xml:id="id1"]/kappa[@and][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@xml:id="id2"]/tau[not(preceding-sibling::*)][following-sibling::zeta[@string="true"][@xml:lang="nb"][following-sibling::theta[@delete="solid 1px green"][@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]//omicron[@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="en"][preceding-sibling::*[position() = 1]]//zeta[@and][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[starts-with(@number,"attribute value")][@xml:id="id5"][position() = 1]][position() = 1]]]]] + + + kappa + 0 + @@ -10714,6 +12549,11 @@ //omicron[starts-with(@attr,"attribute val")][@xml:id="id1"]/pi[@xml:lang="en-US"][not(preceding-sibling::*)]//upsilon[starts-with(concat(@true,"-"),"attribute-")][following-sibling::nu[@or][@xml:id="id2"][not(following-sibling::*)]//delta[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::xi/omicron[starts-with(concat(@string,"-"),"another attribute value-")]/rho[@false][@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]/*[@xml:lang="no-nb"]/mu[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:id="id6"][preceding-sibling::*[position() = 1]]//lambda[contains(@data,"ttribute-va")][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + upsilon + 0 + @@ -10743,6 +12583,11 @@ //zeta[@class][@xml:lang="en"][@xml:id="id1"]/*[contains(concat(@insert,"$"),"attribute-value$")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)]//chi[contains(@title,"tt-value")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[not(child::node())][following-sibling::rho[starts-with(@true,"at")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[contains(concat(@and,"$"),"blank$")][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)]/eta[@xml:lang="no"][following-sibling::xi[@xml:lang="en-GB"]]][position() = 1]][position() = 1]]] + + + chi + 0 + @@ -10762,6 +12607,11 @@ //beta//*[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:lang="en-GB"][not(following-sibling::*)]/psi[@xml:lang="en"][@xml:id="id2"]//kappa[starts-with(concat(@abort,"-"),"another attribute value-")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@or][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::nu or following-sibling::nu)]//gamma[@xml:id="id3"][not(following-sibling::*)]/beta[starts-with(@true,"this.node")][@xml:lang="no"][@xml:id="id4"]//omega[@number][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@xml:lang="en-GB"][@xml:id="id6"]/xi[@xml:id="id7"]]]] + + + any + 0 + @@ -10791,6 +12641,11 @@ //*[@name="123456789"][@xml:id="id1"]//iota[@attribute][following-sibling::omicron[@string][not(following-sibling::*)]//mu[not(preceding-sibling::*)][following-sibling::gamma[@and][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::gamma)]//upsilon[not(preceding-sibling::*)][following-sibling::phi[contains(@string,"attribute-value")][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[starts-with(@delete,"solid")][preceding-sibling::*[position() = 2]]//xi[not(following-sibling::*)]/zeta[@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -10813,6 +12668,11 @@ //psi[starts-with(@or,"this.nodeVa")][@xml:lang="no"]/phi[@xml:lang="nb"][not(child::node())][following-sibling::nu[@data="this.nodeValue"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:id="id1"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/iota[starts-with(@src,"conten")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::iota)][following-sibling::chi[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]]][position() = 1]] + + + phi + 0 + @@ -10829,6 +12689,11 @@ //mu[starts-with(concat(@and,"-"),"attribute-")]//mu[@xml:id="id1"]//sigma[not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 1]]/chi[starts-with(concat(@attr,"-"),"attribute value-")][@xml:lang="no-nb"][@xml:id="id2"][not(child::node())][following-sibling::eta[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[contains(concat(@or,"$"),"ontent$")][@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//upsilon/upsilon[starts-with(concat(@attrib,"-"),"false-")][@xml:lang="no-nb"][@xml:id="id6"][following-sibling::*[position()=4]][following-sibling::epsilon[contains(concat(@name,"$"),"tribute value$")][@xml:lang="en"][@xml:id="id7"][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[contains(concat(@desciption,"$"),"ute$")][preceding-sibling::*[position() = 2]][following-sibling::beta[@xml:id="id8"][preceding-sibling::*[position() = 3]][following-sibling::phi[@xml:lang="en-US"][@xml:id="id9"][not(following-sibling::*)]//kappa[contains(concat(@attrib,"$"),"ribute value$")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@src][@xml:lang="en"][following-sibling::xi[@insert][@xml:id="id10"][following-sibling::zeta[@xml:id="id11"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::kappa[starts-with(concat(@name,"-"),"content-")][@xml:lang="en-GB"][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][preceding-sibling::*[position() = 4]]//sigma[@data][@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::*[@xml:id="id12"][preceding-sibling::*[position() = 1]]//kappa[@src][@xml:lang="en-GB"][@xml:id="id13"][not(following-sibling::*)]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -10870,6 +12735,11 @@ //alpha[starts-with(@attr,"this.no")][@xml:id="id1"]//xi[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[starts-with(@insert,"attribu")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[@string="solid 1px green"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::mu[contains(concat(@string,"$"),"e$")][@xml:lang="en-GB"][@xml:id="id4"][following-sibling::lambda[@token="100%"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::beta[@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][following-sibling::upsilon[preceding-sibling::*[position() = 4]][following-sibling::alpha[starts-with(concat(@object,"-"),"100%-")][@xml:id="id5"][preceding-sibling::*[position() = 5]][following-sibling::sigma[@class][@xml:lang="no-nb"][preceding-sibling::*[position() = 6]][not(following-sibling::*)][position() = 1]]][position() = 1]]]][position() = 1]]] + + + xi + 0 + @@ -10889,6 +12759,11 @@ //pi[@xml:lang="no-nb"]//epsilon[not(preceding-sibling::*)][not(following-sibling::*)]//delta[@xml:lang="no-nb"][@xml:id="id1"][following-sibling::*[position()=3]][not(child::node())][following-sibling::tau[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="nb"][following-sibling::*[position()=2]][following-sibling::kappa[@attr="123456789"][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[contains(@title,"e")][@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/psi[starts-with(@content,"attrib")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::pi[contains(concat(@and,"$"),"0%$")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:lang="nb"][preceding-sibling::*[position() = 2]]/zeta[@xml:id="id5"][not(child::node())][following-sibling::lambda[starts-with(@true,"this.nodeVa")][@xml:id="id6"][preceding-sibling::*[position() = 1]]/theta[starts-with(@title,"f")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)]/delta[contains(concat(@name,"$"),"alue$")][@xml:lang="no-nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[contains(@attribute,"ttribu")][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::theta[@or][@xml:id="id9"]//rho[@abort="another attribute value"][not(following-sibling::*)]/phi[not(child::node())][following-sibling::iota[@xml:lang="en"][@xml:id="id10"][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 2]][following-sibling::delta[preceding-sibling::*[position() = 3]][not(following-sibling::*)]/omega[@xml:lang="nb"][not(preceding-sibling::*)]/lambda[starts-with(concat(@content,"-"),"_blank-")][@xml:id="id11"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]] + + + delta + 0 + @@ -10928,6 +12803,11 @@ //rho/iota[contains(concat(@object,"$"),"89$")][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::gamma[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[@xml:lang="nb"][not(following-sibling::*)]//nu[@xml:lang="en-GB"][@xml:id="id3"]//kappa[@number][@xml:lang="en-US"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::*[@att][not(child::node())][following-sibling::iota[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//gamma[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::omicron[@attr][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(following-sibling::omicron)][following-sibling::beta[starts-with(@attrib,"a")]//mu[contains(@content,"se")][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[starts-with(concat(@number,"-"),"another attribute value-")][@xml:id="id5"][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::kappa[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//alpha[starts-with(@insert,"attr")][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::omicron[@xml:id="id8"][preceding-sibling::*[position() = 1]]//iota[@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -10961,6 +12841,11 @@ //chi[contains(concat(@insert,"$"),"ontent$")]//delta[contains(@and,"l")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[contains(concat(@class,"$"),"lse$")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@xml:lang="nb"][following-sibling::delta[starts-with(concat(@token,"-"),"attribute value-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[starts-with(concat(@or,"-"),"this-")][following-sibling::*[position()=7]][following-sibling::kappa[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::gamma[@false][@xml:id="id3"][following-sibling::kappa[following-sibling::alpha[contains(@and,"lue")][@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::delta[not(child::node())][following-sibling::pi[@insert][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 7]][not(following-sibling::*)]]][position() = 1]][position() = 1]]]]][position() = 1]] + + + theta + 0 + @@ -10985,6 +12870,11 @@ //xi[starts-with(@attr,"thi")]/rho[contains(concat(@title,"$"),"ttribute$")][@xml:lang="no-nb"][following-sibling::epsilon[@xml:lang="en-GB"][@xml:id="id1"][following-sibling::omicron[@xml:lang="en"][not(following-sibling::*)]//beta[starts-with(concat(@att,"-"),"attribute-")][@xml:lang="no"][not(preceding-sibling::*)]/iota[@xml:lang="nb"]/lambda[@xml:id="id2"][not(preceding-sibling::*)]/omega[not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(concat(@false,"-"),"attribute-")][@xml:id="id3"]]][position() = 1]] + + + rho + 0 + @@ -11006,6 +12896,11 @@ //theta[@false]/mu[@attrib][@xml:id="id1"][not(following-sibling::*)]//lambda[@and][@xml:lang="en-GB"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id3"]/epsilon[following-sibling::delta[@xml:id="id4"][preceding-sibling::*[position() = 1]]/mu[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]]//theta[@xml:lang="en-GB"][@xml:id="id7"][following-sibling::pi[contains(@name,"en")][@xml:lang="en-GB"][@xml:id="id8"]//zeta[@title][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[not(following-sibling::*)]]][position() = 1]][position() = 1]] + + + lambda + 0 + @@ -11032,6 +12927,11 @@ //psi[starts-with(concat(@name,"-"),"solid 1px green-")][@xml:lang="nb"]//pi[not(preceding-sibling::*)]/xi[starts-with(concat(@src,"-"),"100%-")][@xml:lang="en"][not(child::node())][following-sibling::omicron[contains(@delete,"l")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::upsilon[@src="this-is-att-value"][@xml:lang="en-US"][preceding-sibling::*[position() = 3]][following-sibling::beta[@xml:id="id2"][preceding-sibling::*[position() = 4]]//nu[@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]/delta[@xml:lang="en-GB"][not(following-sibling::*)]//omega[@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]/gamma[@xml:id="id5"][not(child::node())][following-sibling::lambda[starts-with(concat(@insert,"-"),"true-")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::tau[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[@abort="_blank"]//mu[@xml:lang="no-nb"][not(child::node())][following-sibling::pi[not(following-sibling::*)]//chi[@xml:lang="en-US"]/gamma[@false][@xml:lang="en-US"][not(preceding-sibling::*)][not(preceding-sibling::gamma)][following-sibling::rho[contains(concat(@content,"$"),"e$")][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::rho)]//epsilon[@xml:id="id7"][not(following-sibling::*)]/beta[@class][@xml:lang="no"][@xml:id="id8"]//alpha[starts-with(concat(@src,"-"),"solid 1px green-")][@xml:lang="en-US"][not(following-sibling::*)]]]][position() = 1]][position() = 1]]]][position() = 1]]] + + + xi + 0 + @@ -11073,6 +12973,11 @@ //phi[@xml:id="id1"]/delta[not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::*[@number][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id4"]/gamma[@xml:lang="no"][not(preceding-sibling::*)]/rho[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa//eta[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::chi[starts-with(concat(@name,"-"),"this.nodeValue-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[contains(concat(@insert,"$"),"false$")][following-sibling::*[position()=1]][following-sibling::alpha[starts-with(@title,"t")][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -11101,6 +13006,11 @@ //psi[@xml:lang="en"][@xml:id="id1"]//*[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::kappa[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::chi[@desciption][@xml:lang="no-nb"]/*[following-sibling::*[position()=2]][following-sibling::mu[not(child::node())][following-sibling::omicron[@and][@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + any + 0 + @@ -11118,6 +13028,11 @@ //omicron[contains(@title,"lank")][@xml:id="id1"]/theta[starts-with(@data,"10")][@xml:lang="en"][not(child::node())][following-sibling::beta[starts-with(concat(@number,"-"),"another attribute value-")][@xml:id="id2"][following-sibling::*[position()=4]][following-sibling::gamma[starts-with(@token,"solid 1p")][preceding-sibling::*[position() = 2]][following-sibling::alpha[@attribute][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::mu[@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::*[not(following-sibling::*)]//sigma[@xml:lang="no-nb"]/iota[following-sibling::pi[starts-with(concat(@object,"-"),"attribute-")][@xml:lang="en"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -11138,6 +13053,11 @@ //upsilon[starts-with(concat(@content,"-"),"solid 1px green-")][@xml:id="id1"]/kappa[contains(@number,"olid ")][@xml:lang="nb"][not(preceding-sibling::*)]/mu[contains(@true,"ute v")][@xml:id="id2"][following-sibling::phi[@class][preceding-sibling::*[position() = 1]]/sigma[starts-with(@attr,"attribut")][@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]/omicron[@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:id="id4"][not(following-sibling::*)]//pi[contains(concat(@object,"$"),"another attribute value$")][not(preceding-sibling::*)][following-sibling::phi[@attr][@xml:id="id5"][following-sibling::omicron[starts-with(@att,"1234")][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]][position() = 1]]][position() = 1]] + + + mu + 0 + @@ -11160,6 +13080,11 @@ //mu[@xml:lang="no"]//kappa[starts-with(@or,"_b")][@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]//xi[@xml:id="id2"][not(preceding-sibling::*)]//alpha[starts-with(concat(@object,"-"),"123456789-")][@xml:id="id3"][following-sibling::omicron[contains(concat(@attrib,"$"),"nt$")][@xml:lang="no"][not(child::node())][following-sibling::lambda[@insert][@xml:lang="en-US"][@xml:id="id4"][following-sibling::phi[contains(@name,"ut")][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]//beta[@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[contains(@insert,"his.node")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//iota[not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::nu[not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -11184,6 +13109,11 @@ //lambda//iota[@xml:lang="no-nb"][@xml:id="id1"][following-sibling::epsilon[starts-with(concat(@attribute,"-"),"attribute-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@insert][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::*[@attr]/tau[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -11199,6 +13129,11 @@ //epsilon[@attrib="attribute value"][@xml:lang="en-US"]//zeta[starts-with(@true,"cont")][@xml:id="id1"][not(following-sibling::*)]//xi[@xml:lang="no"][following-sibling::sigma[preceding-sibling::*[position() = 1]]//xi[starts-with(@desciption,"fa")][not(child::node())][following-sibling::beta[starts-with(@token,"_blank")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::psi[starts-with(@data,"fal")][@xml:id="id3"][following-sibling::zeta[@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::sigma[@string][preceding-sibling::*[position() = 5]][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[starts-with(concat(@true,"-"),"true-")][@xml:id="id5"][preceding-sibling::*[position() = 6]][following-sibling::pi[@xml:lang="en"][@xml:id="id6"]/sigma[contains(concat(@class,"$"),"-att-value$")][@xml:lang="en-GB"]/alpha[not(following-sibling::*)]/mu[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]/lambda[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@att][not(preceding-sibling::*)]//mu[@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 1]]//delta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -11237,6 +13172,11 @@ //theta[contains(@title,"r")][@xml:id="id1"]//beta[@xml:lang="en-GB"][not(preceding-sibling::*)]/kappa[@xml:lang="en"][@xml:id="id2"][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:lang="nb"][following-sibling::rho[contains(concat(@object,"$"),"nodeValue$")][@xml:lang="en"][not(child::node())][following-sibling::lambda[@data="100%"][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 4]][following-sibling::kappa[contains(concat(@attr,"$"),"-is-att-value$")][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="en-US"][@xml:id="id4"]//phi[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(preceding-sibling::phi)][following-sibling::kappa[contains(@token,"t-va")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[@xml:lang="en-US"][@xml:id="id6"][not(child::node())][following-sibling::rho[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//psi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[contains(@false,"ue")][@xml:lang="no-nb"][@xml:id="id8"][not(following-sibling::*)]//omicron[@insert][@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]][position() = 1]]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -11266,6 +13206,11 @@ //xi[@insert="100%"]/phi[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[not(preceding-sibling::*)][following-sibling::delta[contains(@title,"ribute")][@xml:lang="en-US"]/eta[starts-with(concat(@desciption,"-"),"true-")][following-sibling::beta[preceding-sibling::*[position() = 1]]/zeta[@class="attribute value"][@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)]//psi[@title="solid 1px green"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[starts-with(@att,"_blank")][@xml:id="id2"]//zeta[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@class][@xml:lang="en-GB"][@xml:id="id3"]//rho[not(preceding-sibling::*)][not(following-sibling::rho)][following-sibling::chi[@xml:lang="en-GB"][@xml:id="id4"][not(following-sibling::*)]//gamma[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::chi[starts-with(@desciption,"con")][@xml:lang="no-nb"][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::eta[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::tau[@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/*[@xml:lang="en"][@xml:id="id9"][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + phi + 1 + @@ -11302,6 +13247,11 @@ //omega[@xml:lang="en"]/upsilon[contains(concat(@attribute,"$"),"ttribute$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[contains(concat(@and,"$"),"00%$")][@xml:lang="nb"][following-sibling::lambda[@xml:lang="no"][@xml:id="id1"][preceding-sibling::*[position() = 2]][following-sibling::phi[contains(@and,"se")][@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::alpha[following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[contains(@number,"lse")][@xml:lang="no-nb"][@xml:id="id2"]/tau[contains(concat(@name,"$"),"e$")][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::epsilon[not(following-sibling::*)]/nu[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::eta[starts-with(concat(@abort,"-"),"false-")][@xml:lang="no"][@xml:id="id5"][not(following-sibling::*)]//omicron[contains(@abort,"value")][@xml:lang="en-GB"][@xml:id="id6"][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]] + + + upsilon + 0 + @@ -11327,6 +13277,11 @@ //chi[@string][@xml:lang="no-nb"][@xml:id="id1"]//kappa[contains(concat(@att,"$"),"odeValue$")][following-sibling::*[position()=2]][following-sibling::tau[contains(concat(@and,"$"),"ribute$")][@xml:lang="en"][not(child::node())][following-sibling::psi[starts-with(concat(@attrib,"-"),"solid 1px green-")][@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 2]]//delta[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:lang="no-nb"][not(following-sibling::*)]/tau[@true][@xml:id="id4"]][position() = 1]]][position() = 1]] + + + kappa + 0 + @@ -11345,6 +13300,11 @@ //beta[contains(concat(@abort,"$"),"%$")][@xml:lang="en"][@xml:id="id1"]//epsilon[@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]/pi[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(@data,"tru")][not(child::node())][following-sibling::phi[contains(@string,"e")][@xml:id="id4"][following-sibling::theta[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::xi[@xml:lang="no-nb"][@xml:id="id6"]/mu[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:lang="no-nb"]//phi[starts-with(concat(@string,"-"),"attribute-")][not(child::node())][following-sibling::nu[@xml:lang="no-nb"][following-sibling::upsilon[@xml:id="id8"]//nu[@or][@xml:lang="no"][not(preceding-sibling::*)]//theta[contains(concat(@false,"$"),"bute value$")][@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::omega[preceding-sibling::*[position() = 1]][following-sibling::tau[not(following-sibling::*)]/omicron[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::iota[@attribute="true"][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="en-US"][@xml:id="id11"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/nu[contains(concat(@desciption,"$"),"d 1px green$")][@xml:id="id12"][not(preceding-sibling::*)]/alpha[contains(concat(@attribute,"$"),"ontent$")][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]] + + + pi + 0 + @@ -11383,6 +13343,11 @@ //nu[@attr][@xml:id="id1"]/psi[contains(@insert,"tribute-value")][following-sibling::pi[preceding-sibling::*[position() = 1]]/omicron[@class="true"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@attr="this-is-att-value"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/zeta[@and][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::mu[starts-with(concat(@insert,"-"),"content-")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@true="123456789"][@xml:lang="en"][@xml:id="id4"]][position() = 1]][position() = 1]]] + + + psi + 0 + @@ -11401,6 +13366,11 @@ //upsilon[starts-with(@insert,"10")][@xml:lang="no"][@xml:id="id1"]/mu[not(preceding-sibling::*)][not(following-sibling::*)]/pi[@class="_blank"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@xml:lang="no-nb"][@xml:id="id2"]//zeta[starts-with(@desciption,"at")][not(following-sibling::*)]/theta/lambda[@content="_blank"][@xml:lang="nb"][@xml:id="id3"][not(child::node())][following-sibling::chi[@xml:lang="no-nb"][not(following-sibling::*)]/delta[@number][@xml:lang="en-US"][not(following-sibling::*)]//iota[contains(@and,"s-att-va")][@xml:id="id4"][not(preceding-sibling::*)]//upsilon[@xml:lang="no-nb"][@xml:id="id5"][following-sibling::chi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@xml:lang="nb"]//kappa[contains(concat(@title,"$"),"123456789$")][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(@class,"co")][@xml:lang="no"][following-sibling::alpha[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//zeta[@name][@xml:id="id8"][not(following-sibling::*)]/lambda[@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + lambda + 0 + @@ -11440,6 +13410,11 @@ //psi[@xml:lang="en-US"][@xml:id="id1"]//nu[starts-with(concat(@desciption,"-"),"this.nodeValue-")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[contains(@false,"lue")][@xml:lang="nb"][@xml:id="id3"]/gamma[@src][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::eta[starts-with(@and,"another attribute val")]//psi[not(preceding-sibling::*)]/zeta[starts-with(@false,"attribute val")][not(child::node())][following-sibling::tau[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::pi)]//gamma[starts-with(@title,"another attribute valu")][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::rho)]/lambda[@xml:lang="no"][@xml:id="id7"][following-sibling::omicron[not(following-sibling::*)]]][position() = 1]][position() = 1]] + + + gamma + 1 + @@ -11468,6 +13443,11 @@ //nu[starts-with(concat(@src,"-"),"attribute-")][@xml:id="id1"]//chi[contains(@attribute,"_")][@xml:lang="no"][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][@xml:id="id2"]//beta[@xml:id="id3"][not(child::node())][following-sibling::upsilon[@token][@xml:lang="no"][not(following-sibling::*)]//theta[@xml:lang="no"]/lambda[contains(concat(@false,"$"),"bute$")][@xml:lang="no"][not(following-sibling::*)]/delta[not(following-sibling::*)]/gamma[@attribute][@xml:lang="no-nb"][not(preceding-sibling::*)]/sigma[@att="this.nodeValue"][@xml:lang="nb"][@xml:id="id4"][following-sibling::nu[@xml:id="id5"][preceding-sibling::*[position() = 1]]/omega[@xml:lang="en-US"][following-sibling::*[position()=2]][not(child::node())][following-sibling::pi[@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/eta[starts-with(concat(@object,"-"),"123456789-")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]]/zeta[contains(concat(@attrib,"$"),"e$")][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[@xml:id="id8"][not(child::node())][following-sibling::epsilon/tau[not(preceding-sibling::*)]//kappa[@xml:lang="nb"][following-sibling::rho[@class][@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//iota[starts-with(concat(@string,"-"),"this-")][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@xml:lang="no-nb"][not(following-sibling::*)]]][position() = 1]][position() = 1]]]][position() = 1]]] + + + chi + 0 + @@ -11514,6 +13494,11 @@ //tau[starts-with(concat(@delete,"-"),"_blank-")]/zeta[starts-with(@attr,"fal")][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//eta[starts-with(@src,"another attribute")][following-sibling::pi[@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 1]]//gamma[@insert][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@content][not(following-sibling::*)]/chi[@object="this-is-att-value"][@xml:lang="no-nb"][not(following-sibling::*)]/gamma[@or][@xml:lang="en-US"][not(following-sibling::*)]//beta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omicron[not(preceding-sibling::*)]/iota[starts-with(concat(@class,"-"),"attribute-")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::chi[starts-with(concat(@src,"-"),"attribute-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -11543,6 +13528,11 @@ //psi[contains(@att,"bute val")][@xml:lang="no-nb"]/psi[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[starts-with(concat(@or,"-"),"content-")][preceding-sibling::*[position() = 1]]/xi[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::rho[@false="_blank"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::phi[@xml:lang="en-GB"][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 4]][following-sibling::eta[@attrib][@xml:lang="en-US"][@xml:id="id4"][following-sibling::nu[@xml:lang="en-GB"][preceding-sibling::*[position() = 6]]/upsilon[@xml:lang="en"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::kappa[@title][preceding-sibling::*[position() = 1]]]]]]][position() = 1]]][position() = 1]] + + + nu + 0 + @@ -11567,6 +13557,11 @@ //phi[contains(concat(@abort,"$"),"te value$")][@xml:lang="en"][@xml:id="id1"]/lambda[following-sibling::*[position()=1]][following-sibling::delta[not(following-sibling::*)]/iota[contains(@attr,"tent")][@xml:lang="en"][not(preceding-sibling::*)]//lambda[@desciption="_blank"][@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::xi[@attribute][@xml:id="id3"][preceding-sibling::*[position() = 1]]//nu[@xml:id="id4"][not(child::node())][following-sibling::*[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][position() = 1]]]] + + + lambda + 0 + @@ -11586,6 +13581,11 @@ //iota[@xml:id="id1"]/gamma[@content][@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]//iota[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[starts-with(concat(@attribute,"-"),"solid 1px green-")][@xml:id="id3"][not(following-sibling::*)]/gamma[not(preceding-sibling::*)][following-sibling::psi[@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::chi[@title][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::sigma[starts-with(@attribute,"at")][@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/phi[@xml:lang="no"][following-sibling::*[position()=2]][not(child::node())][following-sibling::gamma[@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@number][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau[@name][@xml:lang="en-GB"][@xml:id="id6"]/nu[contains(@class,"tru")][@xml:lang="en-US"][following-sibling::zeta[contains(@abort,"tent")][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::iota[@xml:lang="en"][@xml:id="id8"][not(following-sibling::*)]/tau[@att][@xml:lang="en-GB"][not(following-sibling::*)]//alpha[starts-with(concat(@data,"-"),"another attribute value-")][@xml:lang="en-GB"][@xml:id="id9"]/kappa[@string][not(preceding-sibling::*)]]]][position() = 1]][position() = 1]]]] + + + gamma + 1 + @@ -11621,6 +13621,11 @@ //mu[contains(concat(@token,"$"),"%$")]//alpha[starts-with(concat(@src,"-"),"this-")][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[contains(concat(@desciption,"$"),"00%$")][@xml:id="id1"][not(following-sibling::*)]/zeta[@xml:lang="nb"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[not(following-sibling::*)]/pi[starts-with(@abort,"another attribute v")][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::beta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@number]//iota[@xml:lang="no-nb"][@xml:id="id4"][following-sibling::pi[not(child::node())][following-sibling::sigma[@xml:id="id5"][preceding-sibling::*[position() = 2]]/mu[contains(concat(@class,"$"),"t-value$")][@xml:lang="en-GB"][not(following-sibling::*)]//alpha[starts-with(@title,"this-i")][@xml:id="id6"][not(child::node())][following-sibling::iota[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@xml:lang="no-nb"][not(child::node())][following-sibling::eta[@xml:id="id7"][preceding-sibling::*[position() = 1]]//omicron[@and="this.nodeValue"][@xml:id="id8"][not(preceding-sibling::*)]/lambda[@abort][@xml:lang="en"]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]] + + + alpha + 0 + @@ -11655,6 +13660,11 @@ //omega[starts-with(concat(@token,"-"),"true-")]/gamma[@attribute]//pi[starts-with(concat(@desciption,"-"),"_blank-")][@xml:id="id1"][not(child::node())][following-sibling::*[contains(@token,"attrib")][@xml:id="id2"][preceding-sibling::*[position() = 1]]//chi[not(preceding-sibling::*)][following-sibling::nu[@attribute][@xml:lang="en-US"]/epsilon[@false="attribute"][@xml:lang="nb"][not(child::node())][following-sibling::delta[@xml:id="id3"][not(following-sibling::*)]//upsilon[not(child::node())][following-sibling::rho[@xml:lang="en-GB"][following-sibling::xi[contains(concat(@string,"$"),"alue$")][following-sibling::mu[@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//kappa[contains(concat(@and,"$"),"nodeValue$")][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + pi + 0 + @@ -11681,6 +13691,11 @@ //nu[starts-with(@attr,"_")][@xml:lang="nb"]//alpha[not(following-sibling::*)]/phi[not(following-sibling::*)]/theta[contains(concat(@abort,"$"),"k$")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@number,"$"),"-att-value$")][@xml:id="id1"][not(child::node())][following-sibling::upsilon[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/*[contains(@abort," 1px green")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::rho[@xml:lang="no"][preceding-sibling::*[position() = 1]]//xi[@xml:lang="en"][not(preceding-sibling::*)]//xi[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[contains(concat(@attrib,"$"),"-value$")][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@object,"$"),"alse$")][@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]]/iota[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@att][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 2]]/lambda[@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@xml:id="id8"][preceding-sibling::*[position() = 1]]//chi[@number][@xml:lang="en-GB"][following-sibling::mu[@abort][@xml:id="id9"][not(following-sibling::*)]]]][position() = 1]]][position() = 1]]]] + + + zeta + 0 + @@ -11719,6 +13734,11 @@ //sigma//gamma[not(following-sibling::*)]/kappa[@attr="_blank"][@xml:lang="en-GB"][not(following-sibling::*)]/nu[@xml:lang="en"][@xml:id="id1"][following-sibling::kappa[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[not(child::node())][following-sibling::psi[@or][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(preceding-sibling::psi)]//gamma[@true][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::pi[@data][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omicron[@token][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//psi[contains(@false,"se")][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::zeta[@class="attribute"][@xml:lang="no-nb"][@xml:id="id7"][following-sibling::lambda[@title="another attribute value"]/chi[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[starts-with(concat(@attribute,"-"),"attribute value-")][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::epsilon[@xml:id="id9"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::zeta[@xml:id="id10"][preceding-sibling::*[position() = 3]]/beta[@xml:lang="en-US"][@xml:id="id11"][not(following-sibling::*)]//rho[@xml:id="id12"][not(following-sibling::*)]/iota[@xml:id="id13"][not(preceding-sibling::*)][not(following-sibling::*)]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + nu + 0 + @@ -11757,6 +13777,11 @@ //rho[@xml:id="id1"]//theta[starts-with(concat(@true,"-"),"123456789-")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::pi[contains(concat(@attr,"$"),"value$")][@xml:lang="en-US"][not(child::node())][following-sibling::phi[following-sibling::*[position()=1]][following-sibling::beta[contains(concat(@true,"$"),"e$")][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//zeta[following-sibling::eta[starts-with(concat(@number,"-"),"attribute-")][preceding-sibling::*[position() = 1]][not(preceding-sibling::eta or following-sibling::eta)]//omicron[not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:id="id4"]/kappa[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[not(preceding-sibling::*)][not(following-sibling::*)]//pi[following-sibling::epsilon[contains(concat(@att,"$"),"e$")][not(following-sibling::*)]/lambda[contains(@true,"00%")][@xml:lang="en-US"][not(following-sibling::*)]/omega[@xml:lang="no"][not(preceding-sibling::*)]]]]]]] + + + theta + 0 + @@ -11787,6 +13812,11 @@ //psi[starts-with(concat(@attribute,"-"),"true-")][@xml:lang="en-US"][@xml:id="id1"]//chi[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@or][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::iota[starts-with(concat(@insert,"-"),"123456789-")][@xml:lang="en-GB"][@xml:id="id3"]/epsilon[starts-with(@false,"this-")][not(preceding-sibling::*)]/rho[not(following-sibling::*)]/gamma[@xml:lang="no-nb"]/alpha[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[starts-with(concat(@data,"-"),"attribute-")][@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::tau[contains(@desciption," value")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[starts-with(concat(@and,"-"),"attribute-")][@xml:lang="no"][not(child::node())][following-sibling::chi[starts-with(@string,"another at")][@xml:id="id5"][following-sibling::xi[preceding-sibling::*[position() = 2]]/alpha[contains(@class,"s-att-value")][not(following-sibling::*)]//eta[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@content][preceding-sibling::*[position() = 1]]//psi[not(preceding-sibling::*)][not(child::node())][following-sibling::pi[starts-with(concat(@true,"-"),"another attribute value-")][@xml:lang="en-US"][@xml:id="id7"][not(following-sibling::*)]/theta[@xml:lang="nb"][position() = 1]]]]]]][position() = 1]] + + + chi + 0 + @@ -11824,6 +13854,11 @@ //xi/eta[contains(@content,"bla")][@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[contains(concat(@number,"$"),"bute value$")][preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]/epsilon[contains(@delete,"alue")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[contains(concat(@att,"$"),"00%$")][@xml:id="id2"][not(child::node())][following-sibling::iota[following-sibling::*[position()=5]][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][not(child::node())][following-sibling::epsilon[@false="this-is-att-value"][@xml:lang="en"][not(child::node())][following-sibling::omega[following-sibling::chi[starts-with(concat(@desciption,"-"),"content-")][@xml:lang="en"][preceding-sibling::*[position() = 5]][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 6]][not(following-sibling::*)]/rho[not(preceding-sibling::*)][following-sibling::lambda[preceding-sibling::*[position() = 1]][following-sibling::theta[@attribute="_blank"]//epsilon[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)]//*[starts-with(@object,"conte")][@xml:lang="no"][@xml:id="id5"][following-sibling::*[@attribute][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@content][@xml:lang="en"][following-sibling::upsilon//gamma[starts-with(concat(@class,"-"),"attribute value-")][not(following-sibling::*)]//rho[@src][@xml:id="id6"][not(following-sibling::*)]//beta[@xml:id="id7"][not(preceding-sibling::*)][position() = 1]]]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + eta + 0 + @@ -11864,6 +13899,11 @@ //omicron[@xml:lang="nb"]//upsilon[contains(concat(@number,"$"),"e value$")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[starts-with(concat(@abort,"-"),"attribute value-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[starts-with(@insert,"_")][@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:id="id2"][not(child::node())][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::delta[starts-with(concat(@attribute,"-"),"solid 1px green-")][@xml:lang="en"][preceding-sibling::*[position() = 2]]/omega[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::beta[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::psi[@name][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omicron[@title="attribute value"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//kappa[starts-with(concat(@title,"-"),"attribute-")][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:id="id5"][not(following-sibling::*)]//alpha[following-sibling::rho[preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:lang="nb"]/nu[@number][not(child::node())][following-sibling::pi[starts-with(@object,"false")][@xml:id="id6"]//psi[@false][@xml:id="id7"][not(preceding-sibling::*)]/epsilon[contains(concat(@false,"$"),"nk$")][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[following-sibling::*[position()=2]][not(child::node())][following-sibling::lambda[contains(@object,"bute value")][@xml:id="id8"][not(child::node())][following-sibling::pi[contains(concat(@desciption,"$"),"s.nodeValue$")][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + upsilon + 0 + @@ -11904,6 +13944,11 @@ //*[@xml:lang="en-US"]/psi[contains(@data,"e")][not(preceding-sibling::*)]//tau[@xml:lang="no-nb"][@xml:id="id1"][not(child::node())][following-sibling::zeta[not(child::node())][following-sibling::iota[@xml:lang="en-GB"][not(child::node())][following-sibling::mu[@attr="attribute-value"][@xml:lang="no"][not(following-sibling::*)]/delta[@xml:id="id2"]//kappa[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::*[starts-with(concat(@abort,"-"),"this-")][@xml:id="id4"][following-sibling::rho[@xml:id="id5"][following-sibling::alpha[@object="this-is-att-value"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 4]]/delta[contains(concat(@content,"$"),"blank$")][not(following-sibling::*)]]]]][position() = 1]][position() = 1]]] + + + tau + 0 + @@ -11929,6 +13974,11 @@ //alpha[@xml:id="id1"]/theta[@true][@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::delta[following-sibling::omicron[contains(concat(@desciption,"$"),"ribute$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::kappa[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]//beta[@attrib][@xml:lang="en"][@xml:id="id4"][not(child::node())][following-sibling::upsilon[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -11945,6 +13995,11 @@ //chi[starts-with(concat(@object,"-"),"this.nodeValue-")][@xml:lang="no"]/iota[@attr][following-sibling::eta[preceding-sibling::*[position() = 1]]/psi[following-sibling::*[position()=1]][following-sibling::lambda[@abort][@xml:lang="no"][@xml:id="id1"]/*[@xml:lang="no"][@xml:id="id2"]//phi[starts-with(concat(@abort,"-"),"true-")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:id="id4"][not(child::node())][following-sibling::iota[@xml:id="id5"]//phi[contains(@src,"10")][@xml:id="id6"][not(preceding-sibling::*)][not(preceding-sibling::phi or following-sibling::phi)][following-sibling::tau[not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]//delta[@data][@xml:lang="nb"][not(child::node())][following-sibling::omega[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[contains(@false,"r")]/xi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[position() = 1]][position() = 1]]][position() = 1]]]]][position() = 1]] + + + iota + 0 + @@ -11979,6 +14034,11 @@ //xi[@xml:lang="en-GB"]//omicron[@xml:id="id1"][not(preceding-sibling::*)]//*[@true="this-is-att-value"][@xml:id="id2"][following-sibling::chi[@xml:id="id3"][not(following-sibling::*)]//alpha//epsilon[@object][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@src][not(preceding-sibling::*)]/kappa[starts-with(concat(@false,"-"),"another attribute value-")]/xi[starts-with(concat(@number,"-"),"123456789-")][@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::mu[contains(@delete,"r")][not(following-sibling::*)]//xi[starts-with(@name,"_blan")][following-sibling::*[@xml:id="id6"][not(following-sibling::*)]/*[@object][@xml:lang="no-nb"][not(following-sibling::*)]/eta[@xml:lang="no-nb"][not(following-sibling::*)]/epsilon[@or="attribute value"][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::psi[@delete][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::kappa[@xml:id="id8"]//omega[@data][@xml:lang="en-US"][not(preceding-sibling::*)]/mu[starts-with(concat(@attribute,"-"),"true-")][@xml:id="id9"][not(following-sibling::*)]//eta[contains(concat(@number,"$"),"ue$")][@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[starts-with(concat(@attrib,"-"),"attribute-")][@xml:lang="en"][not(preceding-sibling::*)]/eta[@true][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::alpha[@data="100%"][@xml:id="id11"]//omicron[@src="this-is-att-value"][@xml:id="id12"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]] + + + any + 0 + @@ -12027,6 +14087,11 @@ //eta[@xml:lang="en-US"]//zeta[@attribute][@xml:id="id1"][not(preceding-sibling::*)]//lambda[@attr="100%"][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]//rho[contains(concat(@src,"$"),"Value$")][@xml:lang="en-US"][not(preceding-sibling::*)]/rho[contains(@name,"e")][not(preceding-sibling::*)]/psi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[@or][@xml:id="id3"][not(following-sibling::*)]//psi//chi[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::tau[@string="false"][preceding-sibling::*[position() = 2]][following-sibling::delta[@xml:id="id4"]/kappa[@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::omicron[starts-with(@string,"tr")][@xml:lang="no"][@xml:id="id6"][not(following-sibling::*)]//kappa[starts-with(@abort,"attr")]//omega[@desciption][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="nb"][preceding-sibling::*[position() = 1]]//delta[starts-with(@attribute,"_b")][@xml:id="id7"][following-sibling::mu[@number][@xml:lang="no"][@xml:id="id8"]/chi[@xml:lang="no-nb"][@xml:id="id9"]/eta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:id="id10"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -12069,6 +14134,11 @@ //omega[@name][@xml:lang="en-GB"]/lambda[@content][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@xml:lang="no"][@xml:id="id2"]/beta[starts-with(@abort,"1")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:id="id3"][not(child::node())][following-sibling::*[@xml:lang="en-GB"][not(child::node())][following-sibling::rho[starts-with(@true,"th")][@xml:lang="no"][preceding-sibling::*[position() = 2]]//phi[starts-with(concat(@object,"-"),"attribute value-")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::sigma[starts-with(@insert,"tru")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[@xml:lang="en"][not(child::node())][following-sibling::delta[@xml:lang="en"][@xml:id="id5"][not(following-sibling::*)]//theta[contains(@or,"tribute")][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::iota[preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[starts-with(@and,"_b")][@xml:lang="nb"][following-sibling::psi[contains(@attribute,"att-value")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/phi[@xml:lang="en-US"][position() = 1]][position() = 1]]]]]]][position() = 1]]] + + + lambda + 0 + @@ -12098,6 +14168,11 @@ //eta[@xml:id="id1"]/eta[following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[contains(concat(@class,"$"),"er attribute value$")][@xml:lang="en-US"][not(following-sibling::*)]/alpha[@class][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:id="id2"][not(child::node())][following-sibling::kappa[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//rho[starts-with(concat(@insert,"-"),"attribute-")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::nu[@number][@xml:lang="no-nb"]/upsilon[@xml:id="id4"][not(following-sibling::*)]/eta[@insert][@xml:id="id5"][not(following-sibling::*)]//alpha[contains(@title,"ttribu")][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@object="true"][@xml:id="id7"][following-sibling::nu[@attr][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//kappa[@token][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::kappa[@true="100%"][@xml:id="id9"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]] + + + eta + 1 + @@ -12127,6 +14202,11 @@ //sigma[@xml:lang="en"][@xml:id="id1"]//omega[starts-with(concat(@name,"-"),"content-")][not(preceding-sibling::*)]//epsilon[@xml:id="id2"][not(preceding-sibling::*)]/upsilon[@false="content"][@xml:lang="en"][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/sigma[contains(@abort,"t")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::alpha[not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::mu[not(following-sibling::*)]/delta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]]][position() = 1]]] + + + upsilon + 0 + @@ -12153,6 +14233,11 @@ //theta[@xml:lang="no-nb"][@xml:id="id1"]//omega[starts-with(@number,"soli")][not(preceding-sibling::*)]//mu[@xml:lang="en-GB"][not(child::node())][following-sibling::eta[starts-with(concat(@false,"-"),"_blank-")][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/nu[contains(@false,"%")][not(preceding-sibling::*)]/psi[@and][@xml:lang="en-GB"][following-sibling::eta[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::alpha[following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//nu[@xml:lang="en-GB"][not(preceding-sibling::*)]//pi[contains(concat(@title,"$"),"e$")][following-sibling::theta[starts-with(concat(@attr,"-"),"false-")][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]] + + + mu + 0 + @@ -12179,6 +14264,11 @@ //alpha[@true][@xml:lang="en-US"]//nu[@xml:lang="nb"]//xi[@xml:lang="no-nb"][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::delta[@object][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//psi[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon//omega[contains(concat(@title,"$"),"id 1px green$")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@xml:id="id4"][not(preceding-sibling::*)]/omicron[@attribute][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:id="id5"]/upsilon[@attribute][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@attribute="attribute-value"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[contains(concat(@delete,"$"),"ibute-value$")][@xml:lang="en-US"][following-sibling::phi[@src="this-is-att-value"][@xml:id="id8"][following-sibling::rho[@xml:lang="en"][@xml:id="id9"][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -12208,6 +14298,11 @@ //pi/tau[@xml:lang="en-US"][not(child::node())][following-sibling::*[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[contains(concat(@number,"$"),"789$")][not(following-sibling::*)]//tau[@xml:lang="nb"]/theta[@xml:lang="en"][not(child::node())][following-sibling::zeta[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@xml:lang="nb"][@xml:id="id1"][following-sibling::lambda[@xml:id="id2"][not(child::node())][following-sibling::nu[contains(concat(@attribute,"$"),"content$")][@xml:lang="en-GB"][not(following-sibling::*)]//omicron[@xml:id="id3"][not(preceding-sibling::*)]/pi[@xml:id="id4"][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(preceding-sibling::nu)][not(child::node())][following-sibling::theta[@xml:lang="no-nb"][@xml:id="id5"][not(following-sibling::*)]//kappa[@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]//kappa[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@token="attribute value"][@xml:id="id7"][not(preceding-sibling::*)]//chi[@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)]/*[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]] + + + tau + 0 + @@ -12245,6 +14340,11 @@ //chi[@xml:id="id1"]/sigma[contains(concat(@abort,"$"),"his.nodeValue$")]//beta[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]/beta[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::beta)][not(child::node())][following-sibling::phi[contains(concat(@delete,"$"),"ute$")][@xml:id="id4"][following-sibling::omega[@class][@xml:lang="en"][following-sibling::iota[starts-with(concat(@data,"-"),"this.nodeValue-")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//upsilon[@false="_blank"][@xml:id="id5"][position() = 1]]]] + + + beta + 1 + @@ -12264,6 +14364,11 @@ //xi[@string]//delta[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[starts-with(concat(@delete,"-"),"123456789-")][not(preceding-sibling::*)]/omicron[not(child::node())][following-sibling::zeta[@attrib][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[starts-with(concat(@class,"-"),"true-")][@xml:lang="en"][@xml:id="id2"][not(child::node())][following-sibling::alpha[@desciption][@xml:id="id3"]//lambda[@xml:lang="en-US"][not(following-sibling::*)]/mu[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[not(following-sibling::*)]]][position() = 1]] + + + omicron + 0 + @@ -12287,6 +14392,11 @@ //sigma[@xml:lang="en-US"][@xml:id="id1"]/kappa[@xml:id="id2"][not(preceding-sibling::*)]//sigma[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[contains(@and,"blan")][not(following-sibling::*)]//upsilon[not(child::node())][following-sibling::chi[starts-with(concat(@abort,"-"),"true-")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::epsilon[starts-with(@src,"co")]/pi[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::phi[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 2]]/epsilon[@data="this.nodeValue"][@xml:lang="nb"][not(preceding-sibling::*)]//nu[@xml:lang="no"]//omega[@string="attribute value"][not(following-sibling::*)]/pi[not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[not(preceding-sibling::*)][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + upsilon + 0 + @@ -12322,6 +14432,11 @@ //epsilon[@xml:id="id1"]//upsilon[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[contains(concat(@src,"$"),"ibute value$")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[not(following-sibling::*)]/gamma[not(preceding-sibling::*)]//phi[not(preceding-sibling::*)][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//sigma[@att="attribute"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[contains(@true,"ttribute v")][@xml:id="id6"][not(following-sibling::*)]/rho//zeta[position() = 1]][position() = 1]][position() = 1]]]] + + + upsilon + 0 + @@ -12349,6 +14464,11 @@ //psi[@xml:lang="no-nb"][@xml:id="id1"]/xi[@xml:lang="no-nb"][following-sibling::omicron[starts-with(@string,"_")][@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]/lambda[@xml:id="id3"][not(preceding-sibling::*)][not(preceding-sibling::lambda)][following-sibling::iota[@true][@xml:lang="en-GB"][following-sibling::kappa[starts-with(concat(@object,"-"),"attribute-")][@xml:lang="nb"][following-sibling::epsilon[starts-with(concat(@title,"-"),"_blank-")][@xml:lang="en-US"][@xml:id="id4"][position() = 1]][position() = 1]]]] + + + xi + 0 + @@ -12365,6 +14485,11 @@ //mu[starts-with(concat(@attr,"-"),"123456789-")]//lambda[@xml:lang="nb"][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::delta[contains(@desciption,"ute-value")][not(following-sibling::*)]//xi[contains(concat(@or,"$"),"ank$")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[@xml:id="id2"][following-sibling::delta[starts-with(@insert,"this-is-att-valu")][preceding-sibling::*[position() = 1]][following-sibling::*[not(following-sibling::*)]/theta[@number][not(child::node())][following-sibling::xi[@xml:lang="nb"][not(child::node())][following-sibling::psi[@xml:lang="nb"][following-sibling::rho[@token][@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::phi[@xml:id="id3"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[not(following-sibling::*)]//xi[starts-with(concat(@class,"-"),"_blank-")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::pi[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[not(following-sibling::*)]/beta[not(preceding-sibling::*)]/chi[@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:id="id7"][not(child::node())][following-sibling::chi[starts-with(@content,"fal")][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::gamma[@class="attribute"][@xml:id="id9"][preceding-sibling::*[position() = 3]]][position() = 1]]]]][position() = 1]]][position() = 1]]]]][position() = 1]] + + + lambda + 0 + @@ -12401,6 +14526,11 @@ //delta[@xml:lang="en"]//alpha[starts-with(@string,"solid 1px green")][@xml:lang="no"][not(following-sibling::*)]/gamma[@xml:id="id1"][not(child::node())][following-sibling::gamma[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@object][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[contains(concat(@att,"$"),"alse$")][@xml:lang="en-GB"][not(child::node())][following-sibling::rho[@xml:lang="nb"]//tau[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@class][@xml:id="id5"]//mu[@class][not(preceding-sibling::*)][following-sibling::epsilon[contains(concat(@token,"$"),"%$")][@xml:lang="nb"][not(following-sibling::*)]]][position() = 1]]] + + + gamma + 0 + @@ -12425,6 +14555,11 @@ //beta[@xml:lang="no"][@xml:id="id1"]//omicron[contains(concat(@true,"$"),"odeValue$")][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::epsilon[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[@class="100%"][not(preceding-sibling::*)][following-sibling::omega[following-sibling::zeta[@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)][position() = 1]]][position() = 1]] + + + omicron + 0 + @@ -12440,6 +14575,11 @@ //omicron[@content]//xi[@xml:id="id1"]/omicron[@xml:lang="no-nb"][@xml:id="id2"][following-sibling::nu[@false][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::alpha[preceding-sibling::*[position() = 2]]/gamma[@xml:id="id4"][not(preceding-sibling::*)]//zeta[@number="attribute-value"][@xml:lang="no"][not(child::node())][following-sibling::psi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::omicron[contains(concat(@delete,"$"),"ue$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/upsilon[starts-with(@title,"another attribute value")][@xml:lang="en"][following-sibling::iota[starts-with(@or,"fal")][@xml:id="id5"][preceding-sibling::*[position() = 1]]/beta[@insert][@xml:lang="no-nb"][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::beta[@xml:lang="no"][@xml:id="id7"][not(child::node())][following-sibling::epsilon[@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/theta[starts-with(@true,"this.nodeValu")][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]] + + + omicron + 1 + @@ -12469,6 +14609,11 @@ //chi[@data]/gamma[@data="123456789"][@xml:lang="en-US"][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::upsilon[@xml:lang="en-US"][@xml:id="id2"]//gamma[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)]//chi[@xml:id="id4"][not(child::node())][following-sibling::zeta[contains(concat(@class,"$"),"is-att-value$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::chi[starts-with(concat(@number,"-"),"attribute-")][@xml:lang="en-US"]//pi[@xml:lang="en"]]]] + + + gamma + 0 + @@ -12490,6 +14635,11 @@ //xi[@xml:id="id1"]/delta[starts-with(@true,"t")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)]/theta[starts-with(concat(@and,"-"),"100%-")][not(child::node())][following-sibling::delta[starts-with(@att,"attri")][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[contains(concat(@data,"$"),"ue$")][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::phi[starts-with(@insert,"attribute valu")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]//omega[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::psi[contains(@desciption,"t-value")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::psi[not(following-sibling::*)]//xi[@insert][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[starts-with(@number,"t")][@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[contains(concat(@src,"$")," 1px green$")][@xml:lang="no"][@xml:id="id9"][not(child::node())][following-sibling::alpha[@token="attribute-value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//iota[@xml:id="id10"][not(preceding-sibling::*)][following-sibling::gamma//alpha[@and][@xml:lang="en-US"]//epsilon[starts-with(concat(@abort,"-"),"attribute-")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:id="id11"][preceding-sibling::*[position() = 1]]//rho[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="en-GB"][@xml:id="id12"][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]]]] + + + theta + 0 + @@ -12533,6 +14683,11 @@ //alpha[contains(concat(@class,"$"),"blank$")][@xml:lang="en-GB"][@xml:id="id1"]/zeta[@string="attribute-value"][@xml:id="id2"][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"][not(child::node())][following-sibling::sigma[@attribute="attribute"][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::beta[@xml:lang="no-nb"][not(following-sibling::*)]//chi[@data="false"][@xml:id="id5"][not(preceding-sibling::*)]//tau[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@xml:lang="no"][not(following-sibling::upsilon)][following-sibling::chi[@class][@xml:lang="nb"][following-sibling::psi[@xml:id="id7"][following-sibling::*[position()=2]][following-sibling::psi[@xml:lang="no"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::psi[@name="_blank"][@xml:lang="no"][@xml:id="id8"][preceding-sibling::*[position() = 4]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -12557,6 +14712,11 @@ //omicron//theta[not(preceding-sibling::*)]/omega[@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]/tau[@xml:lang="en-US"][not(following-sibling::*)]//nu[@xml:lang="nb"]/theta[@desciption="123456789"][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::upsilon[@number="content"][@xml:lang="en"][following-sibling::tau[starts-with(@attr,"this-is-att")][@xml:id="id3"][preceding-sibling::*[position() = 2]][position() = 1]]] + + + theta + 1 + @@ -12577,6 +14737,11 @@ //iota[@xml:id="id1"]/kappa[@false]/phi[@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::xi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@xml:lang="no"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::omega[@attrib][@xml:lang="nb"][@xml:id="id4"]//sigma[@xml:lang="en-GB"][not(following-sibling::*)]//theta//omicron[not(preceding-sibling::*)]/rho[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en-GB"][not(following-sibling::*)]//rho[@abort][@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)]/omega[not(child::node())][following-sibling::sigma[contains(concat(@content,"$"),"e value$")][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::sigma)][following-sibling::lambda[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[contains(@attrib,"e")][@xml:lang="en"][@xml:id="id8"][following-sibling::*[position()=2]][not(child::node())][following-sibling::lambda[@and="solid 1px green"][@xml:lang="no"][@xml:id="id9"][not(child::node())][following-sibling::sigma[@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 5]][position() = 1]]]]]]][position() = 1]][position() = 1]]] + + + phi + 0 + @@ -12610,6 +14775,11 @@ //xi[contains(@true,"e")][@xml:id="id1"]//nu[following-sibling::*[position()=5]][following-sibling::mu[@delete][@xml:id="id2"][not(child::node())][following-sibling::gamma[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::*[contains(concat(@false,"$"),"is-is-att-value$")][@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::theta[@and][preceding-sibling::*[position() = 4]][following-sibling::theta[@xml:lang="nb"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//delta[contains(concat(@attrib,"$"),"false$")][@xml:id="id5"][not(preceding-sibling::*)]/mu[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(concat(@content,"$"),"true$")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::iota[@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[not(child::node())][following-sibling::xi[contains(@att,"56789")][@xml:id="id8"][following-sibling::chi[preceding-sibling::*[position() = 5]][position() = 1]][position() = 1]]]]]][position() = 1]]]]] + + + nu + 0 + @@ -12634,6 +14804,11 @@ //tau[@token][@xml:id="id1"]//theta[starts-with(@insert,"10")][@xml:lang="en-US"][not(following-sibling::*)]/kappa[@and][@xml:id="id2"]//alpha[contains(@data,"nt")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@src][preceding-sibling::*[position() = 1]]//delta[@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::*[@attribute="this.nodeValue"][@xml:id="id4"][not(following-sibling::*)]/omicron[@title][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//phi[starts-with(@string,"this-")][@xml:id="id6"][following-sibling::rho[starts-with(@name,"f")][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::zeta[not(following-sibling::*)]/gamma[contains(@token,"odeValue")][not(following-sibling::*)]/theta[contains(concat(@abort,"$"),"his.nodeValue$")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:id="id8"]//kappa[@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)]//upsilon[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@number][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[contains(concat(@desciption,"$"),"s-is-att-value$")][@xml:lang="en"][@xml:id="id10"][following-sibling::sigma[@xml:id="id11"][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -12674,6 +14849,11 @@ //phi[@xml:id="id1"]/xi[@xml:lang="nb"][@xml:id="id2"]/alpha[@number][not(preceding-sibling::*)][following-sibling::zeta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/delta[@or][not(child::node())][following-sibling::mu[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::lambda[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/xi[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@name][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[starts-with(@att,"soli")][following-sibling::delta[@number="_blank"][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]/beta[@xml:lang="en-GB"]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -12700,6 +14880,11 @@ //*[@xml:lang="en-US"]//lambda[not(preceding-sibling::*)]//mu[@xml:lang="no-nb"][not(following-sibling::*)]//pi[@class][@xml:lang="no"][not(following-sibling::*)]/nu[@token][@xml:lang="no"][@xml:id="id1"]//xi[@xml:id="id2"][not(following-sibling::*)]//omega[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::zeta[preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[contains(concat(@attr,"$"),"tribute$")][@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::psi[@attribute="false"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//beta[contains(@false,"ut")][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@object][@xml:lang="en"]/*[@xml:lang="no-nb"][not(following-sibling::*)]//zeta[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::upsilon[@true][preceding-sibling::*[position() = 1]]//phi[@xml:id="id7"][following-sibling::iota[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[starts-with(concat(@object,"-"),"solid 1px green-")][preceding-sibling::*[position() = 2]]//pi[@content="this-is-att-value"][@xml:id="id8"][following-sibling::*[position()=2]][following-sibling::*[@xml:lang="no-nb"][not(child::node())][following-sibling::gamma[@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/beta[@att][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[@number][@xml:lang="no"][not(following-sibling::*)][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -12743,6 +14928,11 @@ //lambda[@xml:lang="en-GB"]/alpha[@xml:id="id1"][following-sibling::phi[contains(@data,"_bl")][@xml:lang="nb"][@xml:id="id2"][following-sibling::rho[@xml:lang="en-GB"][not(following-sibling::*)]/upsilon[contains(concat(@title,"$"),"this.nodeValue$")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::epsilon[@false="another attribute value"][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//pi[@xml:lang="no"][not(child::node())][following-sibling::eta[@desciption="attribute"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:id="id5"]/iota[@data][@xml:id="id6"]/iota[contains(concat(@false,"$"),"e$")][following-sibling::*[position()=3]][not(child::node())][following-sibling::mu[@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@xml:lang="en-GB"][@xml:id="id8"][not(child::node())][following-sibling::omega[starts-with(concat(@attr,"-"),"attribute value-")][@xml:id="id9"][preceding-sibling::*[position() = 3]]//phi//beta[@xml:lang="en-US"][@xml:id="id10"][not(following-sibling::*)]//sigma[not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::omicron[@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[contains(concat(@number,"$"),"e$")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id12"]//mu[contains(@delete,"olid 1px")][@xml:lang="nb"][@xml:id="id13"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::mu)]/psi[@class="content"][@xml:lang="no"][not(preceding-sibling::psi)][not(child::node())][following-sibling::upsilon[@xml:lang="en-US"][@xml:id="id14"][preceding-sibling::*[position() = 1]][following-sibling::tau[@xml:lang="nb"][@xml:id="id15"]]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + alpha + 0 + @@ -12784,6 +14974,11 @@ //sigma[@att="123456789"][@xml:id="id1"]//omega[not(child::node())][following-sibling::upsilon[@xml:lang="no"]//sigma[@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::lambda[starts-with(concat(@object,"-"),"true-")][@xml:lang="en-US"]//sigma[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]//delta[@true][@xml:lang="en-GB"][@xml:id="id3"]/chi[following-sibling::*[position()=1]][following-sibling::beta[contains(@src,"lid 1px gr")][@xml:lang="no-nb"][not(following-sibling::*)]/*[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[contains(@insert,"-at")][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::*[@att][@xml:id="id6"][not(following-sibling::*)]//omega[@or="_blank"][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::phi[starts-with(concat(@attrib,"-"),"content-")][following-sibling::omega[not(following-sibling::*)]/kappa[@true="false"][@xml:id="id7"][not(following-sibling::*)]//omega[@xml:id="id8"][not(preceding-sibling::*)]/beta[@string][@xml:id="id9"][following-sibling::kappa[@desciption][@xml:id="id10"][preceding-sibling::*[position() = 1]]/pi[@attrib="false"][@xml:lang="no"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::pi[@xml:id="id12"][not(following-sibling::*)]//epsilon[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -12826,6 +15021,11 @@ //eta[@attrib="another attribute value"][@xml:lang="en-GB"]//upsilon[@xml:id="id1"][not(preceding-sibling::*)]/tau[starts-with(concat(@token,"-"),"false-")][@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]//delta[@string][not(preceding-sibling::*)][following-sibling::phi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[starts-with(@abort,"conten")][not(preceding-sibling::nu)][following-sibling::epsilon[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::beta[starts-with(@delete,"solid 1px gre")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id5"]/mu[not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-GB"][not(child::node())][following-sibling::epsilon[@xml:lang="en"][@xml:id="id6"][following-sibling::alpha[not(child::node())][following-sibling::rho[@number="true"][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/delta[@xml:lang="no"]//nu[@true="solid 1px green"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::alpha[@desciption][@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 2]]]]]]]][position() = 1]][position() = 1]][position() = 1]]]] + + + delta + 0 + @@ -12861,6 +15061,11 @@ //gamma[starts-with(@src,"_bla")][@xml:lang="en-GB"]/nu[@xml:lang="en-US"][@xml:id="id1"]//theta//chi[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@number][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@token="_blank"][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[starts-with(@content,"tru")]//omicron[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::nu[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]]//upsilon[not(preceding-sibling::*)][following-sibling::gamma[not(following-sibling::*)]//delta[starts-with(@number,"1")]//psi[@xml:id="id9"][not(following-sibling::*)]//omicron[contains(concat(@class,"$"),"false$")][@xml:id="id10"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:id="id11"][preceding-sibling::*[position() = 1]]//psi[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]] + + + lambda + 0 + @@ -12902,6 +15107,11 @@ //nu[@xml:id="id1"]//tau[@desciption="attribute"][@xml:lang="en"][not(child::node())][following-sibling::rho[@and="true"][@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:id="id3"][not(preceding-sibling::*)]//epsilon[contains(@content,"ttr")][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::gamma)][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/gamma[@insert][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:lang="no-nb"][@xml:id="id6"][position() = 1]][position() = 1]][position() = 1]]] + + + tau + 0 + @@ -12922,6 +15132,11 @@ //sigma[contains(concat(@class,"$"),"9$")]/nu[@string][@xml:lang="en"][@xml:id="id1"][not(child::node())][following-sibling::iota[starts-with(concat(@abort,"-"),"attribute-")][@xml:lang="en"][@xml:id="id2"][following-sibling::mu[starts-with(concat(@number,"-"),"123456789-")][preceding-sibling::*[position() = 2]][not(preceding-sibling::mu)]//nu[@xml:lang="en-US"][@xml:id="id3"]/upsilon[@or="123456789"][@xml:lang="no"]//phi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::iota[starts-with(concat(@false,"-"),"100%-")][@xml:id="id4"]/chi[@number][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 1]][following-sibling::tau[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[preceding-sibling::*[position() = 3]]]]]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -12946,6 +15161,11 @@ //zeta[starts-with(@desciption,"_blank")]/theta[starts-with(@title,"_bl")][following-sibling::lambda[starts-with(@object,"1234")][not(following-sibling::*)]/phi[@xml:id="id1"]//omicron[not(preceding-sibling::*)][following-sibling::zeta[starts-with(@insert,"_blank")][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]]] + + + theta + 0 + @@ -12962,6 +15182,11 @@ //beta[@xml:id="id1"]//zeta[contains(@object,"de")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[not(preceding-sibling::*)]//lambda[@xml:lang="en-US"][not(following-sibling::*)]/psi[contains(concat(@number,"$"),"e$")][not(preceding-sibling::*)][not(following-sibling::*)]//xi[contains(concat(@name,"$"),"her attribute value$")][@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::omega[@xml:lang="no-nb"]//tau[@xml:id="id3"]/gamma[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]] + + + xi + 0 + @@ -12985,6 +15210,11 @@ //delta[@attr="solid 1px green"][@xml:lang="no"][@xml:id="id1"]//beta[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//eta[@src="attribute value"][@xml:id="id2"][not(following-sibling::*)]/phi[@token="true"][@xml:lang="en"][not(child::node())][following-sibling::phi[following-sibling::lambda[@xml:lang="en"][preceding-sibling::*[position() = 2]]/pi[contains(concat(@or,"$"),"lse$")][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -13005,6 +15235,11 @@ //iota[@xml:lang="en-US"][@xml:id="id1"]/iota[@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@xml:id="id3"]/*[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[following-sibling::*[position()=1]][following-sibling::xi[@number][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/mu[@src][@xml:lang="nb"][not(child::node())][following-sibling::delta[contains(concat(@abort,"$")," green$")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::nu[not(following-sibling::*)]/xi[starts-with(@name,"th")][@xml:lang="no"][not(following-sibling::*)][position() = 1]]][position() = 1]]]] + + + iota + 1 + @@ -13026,6 +15261,11 @@ //gamma[@xml:lang="en-US"][@xml:id="id1"]//iota[@data][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::beta[contains(concat(@class,"$"),"x green$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::epsilon[starts-with(concat(@desciption,"-"),"solid 1px green-")][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@object][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::upsilon[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 4]]/psi[@xml:id="id5"][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 1]]//iota[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[not(following-sibling::*)]//theta[@xml:id="id7"][not(preceding-sibling::*)]/omega[contains(concat(@insert,"$"),"deValue$")][@xml:id="id8"][not(preceding-sibling::*)]/theta[@object][@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@token][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id11"][not(following-sibling::*)]/pi[contains(concat(@name,"$"),"rue$")][@xml:id="id12"][not(preceding-sibling::pi or following-sibling::pi)][not(child::node())][following-sibling::delta[@xml:lang="en-US"][@xml:id="id13"]//omicron[position() = 1]][position() = 1]]][position() = 1]]]]][position() = 1]] + + + iota + 0 + @@ -13060,6 +15300,11 @@ //omicron[@xml:lang="en-US"]//sigma[contains(concat(@object,"$"),"reen$")][not(preceding-sibling::*)]//nu[contains(concat(@delete,"$"),"te value$")][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="no"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::chi[@xml:lang="en-US"][preceding-sibling::*[position() = 2]]/mu[starts-with(concat(@name,"-"),"100%-")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[starts-with(concat(@data,"-"),"123456789-")][not(following-sibling::*)]/sigma[@abort][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:id="id3"][not(following-sibling::*)]//psi[@delete="true"][@xml:lang="no-nb"]/epsilon[contains(concat(@attribute,"$"),"ent$")][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@attr="this.nodeValue"][@xml:lang="nb"]/epsilon[@object][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[starts-with(@attrib,"c")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::beta[@attrib="solid 1px green"][@xml:lang="nb"][not(child::node())][following-sibling::pi[@xml:lang="no-nb"]//delta[contains(concat(@abort,"$"),"00%$")][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@xml:id="id6"][not(child::node())][following-sibling::eta[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@desciption]/delta[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@delete="another attribute value"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]]]]][position() = 1]] + + + nu + 0 + @@ -13102,6 +15347,11 @@ //pi[@and][@xml:lang="nb"]//mu[@content][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/*[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/zeta[starts-with(@content,"_b")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::eta[starts-with(concat(@name,"-"),"content-")][preceding-sibling::*[position() = 1]][following-sibling::*[@abort="true"][not(child::node())][following-sibling::eta[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 3]]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -13120,6 +15370,11 @@ //omega[starts-with(concat(@false,"-"),"solid 1px green-")][@xml:id="id1"]//*[@class][@xml:lang="en-GB"][@xml:id="id2"][following-sibling::alpha[@xml:lang="en-US"][following-sibling::upsilon[@insert="attribute value"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/omicron[starts-with(@content,"this-is-att-v")][@xml:lang="no-nb"]/*[starts-with(@title,"solid 1px")][@xml:lang="en"][not(following-sibling::*)]//rho[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]/nu[contains(concat(@data,"$"),"bute$")][following-sibling::omega[not(child::node())][following-sibling::upsilon[not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/chi[contains(concat(@token,"$"),"ue$")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)]/theta[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::omicron[@string][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[contains(concat(@src,"$"),"ute value$")][@xml:id="id8"][not(child::node())][following-sibling::omega[starts-with(concat(@delete,"-"),"this.nodeValue-")][preceding-sibling::*[position() = 1]][following-sibling::psi[starts-with(concat(@false,"-"),"attribute value-")][@xml:lang="en-GB"][following-sibling::zeta[@data][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]]//phi[starts-with(@token,"a")][@xml:lang="nb"][@xml:id="id9"][following-sibling::epsilon[starts-with(concat(@data,"-"),"false-")][@xml:lang="no"][@xml:id="id10"]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + any + 0 + @@ -13157,6 +15412,11 @@ //kappa[@xml:lang="en"]/mu[@false][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[@delete][@xml:lang="en-US"][@xml:id="id1"][not(child::node())][following-sibling::beta[@xml:id="id2"][preceding-sibling::*[position() = 1]]/sigma[@xml:id="id3"][not(following-sibling::*)]//psi[@content][@xml:id="id4"][following-sibling::epsilon[@attribute][@xml:id="id5"][position() = 1]]] + + + chi + 0 + @@ -13175,6 +15435,11 @@ //*[@insert][@xml:id="id1"]//omicron[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta//beta[@xml:id="id2"][not(preceding-sibling::*)]/rho[@xml:lang="en-US"][following-sibling::*[position()=1]][following-sibling::upsilon[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[contains(concat(@attribute,"$"),"px green$")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@and][@xml:lang="en"]//eta[not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::psi[@content][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::psi[contains(concat(@attr,"$"),"is-is-att-value$")][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]] + + + rho + 0 + @@ -13200,6 +15465,11 @@ //omega[@or][@xml:lang="no-nb"][@xml:id="id1"]/phi[starts-with(@or,"a")][@xml:lang="en-US"][not(child::node())][following-sibling::eta[@xml:lang="en-GB"][not(following-sibling::*)]/psi[contains(@name,"s-is-att-value")][@xml:lang="en"][not(child::node())][following-sibling::theta[@xml:id="id2"]/epsilon[@or][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]//tau[contains(concat(@and,"$"),"ue$")][not(child::node())][following-sibling::*[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[following-sibling::*[position()=5]][following-sibling::epsilon[@abort="123456789"][@xml:id="id4"][following-sibling::*[position()=4]][following-sibling::epsilon[@desciption="another attribute value"][@xml:lang="en-US"][not(child::node())][following-sibling::mu[@name][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::nu[@name][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][following-sibling::tau[contains(@name,"another attribute value")][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 5]]/alpha[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@class][not(child::node())][following-sibling::phi[@delete][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::nu[following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@desciption][@xml:id="id8"][preceding-sibling::*[position() = 4]]//delta[@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::delta)]/chi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::psi[starts-with(@data,"tr")][@xml:lang="no"][@xml:id="id10"]//xi[@number][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]]]] + + + phi + 0 + @@ -13240,6 +15510,11 @@ //omega[contains(@token,"his-is-")][@xml:id="id1"]/omicron[@xml:lang="en-GB"][not(preceding-sibling::*)]//pi[starts-with(@object,"tr")][not(child::node())][following-sibling::eta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[@xml:lang="en"][@xml:id="id2"][not(child::node())][following-sibling::chi[@xml:lang="no"][not(following-sibling::*)]][position() = 1]]] + + + pi + 0 + @@ -13255,6 +15530,11 @@ //tau[starts-with(concat(@desciption,"-"),"false-")]/chi[@att][@xml:lang="no"][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[starts-with(concat(@token,"-"),"content-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/sigma[contains(concat(@number,"$")," attribute value$")][@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::delta[@false][@xml:lang="nb"][@xml:id="id3"][not(child::node())][following-sibling::eta[@attr][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::eta[@class="123456789"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/iota[starts-with(concat(@title,"-"),"true-")][@xml:lang="nb"][not(preceding-sibling::*)]//psi[starts-with(concat(@number,"-"),"100%-")][@xml:lang="no"][@xml:id="id5"]//omicron[@attribute="true"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@true][@xml:id="id7"][not(preceding-sibling::*)][not(preceding-sibling::beta or following-sibling::beta)]//pi[starts-with(concat(@number,"-"),"solid 1px green-")][@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::sigma[contains(@or,"t")][@xml:lang="en-GB"][not(following-sibling::*)]/chi[contains(concat(@abort,"$"),"%$")][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="no"][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/omicron[@or][not(preceding-sibling::*)]][position() = 1]][position() = 1]]]]][position() = 1]] + + + chi + 0 + @@ -13288,6 +15568,11 @@ //delta[@xml:id="id1"]//pi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[@attrib][preceding-sibling::*[position() = 1]]//nu[@xml:id="id2"][not(following-sibling::*)]//chi[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[contains(concat(@true,"$"),"value$")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::*[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[starts-with(@attrib,"_bla")][@xml:lang="nb"][@xml:id="id5"]//mu[@token][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::kappa[@name="attribute"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[@data][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omicron[@att="solid 1px green"][@xml:id="id8"][not(following-sibling::*)]/delta[starts-with(@att,"attribute-")][@xml:id="id9"][not(following-sibling::*)]/sigma[@delete][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id10"][following-sibling::delta[@number][@xml:lang="no"]/tau[@false][@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[starts-with(@string,"12345")][@xml:lang="en-US"][@xml:id="id12"][not(following-sibling::*)]][position() = 1]]][position() = 1]]]]] + + + pi + 0 + @@ -13323,6 +15608,11 @@ //mu[@and]//*[starts-with(concat(@content,"-"),"attribute value-")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::epsilon[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::zeta[starts-with(@content,"another a")][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/mu[@name][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::sigma[not(child::node())][following-sibling::gamma[@xml:lang="no"]/upsilon[@xml:id="id3"][not(preceding-sibling::*)]//omicron[@att][@xml:lang="en"][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::gamma[@xml:lang="en"][not(following-sibling::*)]//gamma[@att="solid 1px green"]//epsilon[contains(concat(@attrib,"$"),"ue$")][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][following-sibling::chi[@abort][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omega[@xml:id="id7"][preceding-sibling::*[position() = 3]]//nu[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]] + + + any + 0 + @@ -13355,6 +15645,11 @@ //mu[@xml:lang="en"]/chi[contains(concat(@and,"$"),"solid 1px green$")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)]//mu[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]/*[@xml:lang="nb"][not(child::node())][following-sibling::omega[@token="content"][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//beta[@att="attribute value"][@xml:lang="en-US"][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"][following-sibling::kappa[contains(concat(@object,"$"),"content$")][@xml:lang="en-GB"][not(following-sibling::*)]/gamma][position() = 1]]] + + + any + 0 + @@ -13376,6 +15671,11 @@ //alpha[@xml:lang="nb"]//rho[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::theta[starts-with(@data,"f")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[not(following-sibling::pi)][not(child::node())][following-sibling::delta[@xml:lang="en"]//zeta[not(child::node())][following-sibling::epsilon[@xml:id="id2"][not(child::node())][following-sibling::lambda[contains(@or,"gre")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/kappa[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(following-sibling::kappa)][not(child::node())][following-sibling::sigma[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::iota[following-sibling::*[position()=1]][not(preceding-sibling::iota)][not(child::node())][following-sibling::omicron[starts-with(@class,"a")][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:lang="no-nb"][@xml:id="id8"][following-sibling::omega[@src][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[starts-with(@name,"a")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id10"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]]]][position() = 1]]][position() = 1]][position() = 1]] + + + rho + 0 + @@ -13410,6 +15710,11 @@ //eta[contains(concat(@data,"$"),"ntent$")][@xml:lang="en-GB"][@xml:id="id1"]/xi[starts-with(concat(@false,"-"),"false-")][not(preceding-sibling::*)]/*[@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::epsilon[@false][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/*[@xml:lang="en-US"][not(child::node())][following-sibling::beta[@true="attribute"][@xml:lang="no"][not(following-sibling::*)]/mu[@abort="another attribute value"][not(child::node())][following-sibling::upsilon[@attrib][following-sibling::nu[contains(concat(@att,"$"),"ue$")]//alpha[@xml:id="id4"][not(following-sibling::*)]/omicron[@object][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::sigma[@number="this.nodeValue"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[starts-with(concat(@content,"-"),"this-")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::beta[@xml:lang="no-nb"]//*[not(preceding-sibling::*)][not(following-sibling::*)]/chi[not(preceding-sibling::*)][following-sibling::theta[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]]]][position() = 1]] + + + any + 0 + @@ -13444,6 +15749,11 @@ //iota[starts-with(@false,"attribute ")]//lambda[@or][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[@attr][@xml:lang="en"][not(following-sibling::*)]/xi[@number][@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::xi)][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 2]][following-sibling::sigma[@xml:lang="en-GB"][not(child::node())][following-sibling::iota[@delete="attribute"]//beta[starts-with(concat(@class,"-"),"content-")][@xml:lang="en-US"][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[@insert][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::*[starts-with(concat(@title,"-"),"attribute-")]/psi[not(preceding-sibling::*)][not(following-sibling::*)]//tau[@xml:id="id4"][following-sibling::iota[starts-with(@attribute,"th")][@xml:lang="en-US"][following-sibling::tau[contains(@attr,"bute-value")][@xml:lang="en"][not(following-sibling::*)]//mu[@insert][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::eta[@string][@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::eta[@xml:lang="nb"][@xml:id="id6"]/rho[not(child::node())][following-sibling::*[@or][@xml:lang="en"]/xi[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + lambda + 0 + @@ -13480,6 +15790,11 @@ //mu/omega[@xml:id="id1"][not(preceding-sibling::*)]//iota[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[starts-with(@true,"100%")][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[starts-with(@title,"tru")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//lambda[@delete][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::upsilon[not(following-sibling::*)]//sigma[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[starts-with(concat(@att,"-"),"true-")][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[starts-with(@and,"conten")][not(following-sibling::*)]//xi[@class][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@or="_blank"][@xml:lang="en-US"][@xml:id="id8"][not(following-sibling::*)]/nu[starts-with(concat(@title,"-"),"attribute value-")][@xml:lang="en-GB"][@xml:id="id9"]//psi[@xml:id="id10"][not(child::node())][following-sibling::delta[@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 1]]//iota[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -13515,6 +15830,11 @@ //sigma[starts-with(@token,"this.no")]//*//*[@xml:lang="no-nb"][@xml:id="id1"][not(child::node())][following-sibling::tau[@attrib][@xml:id="id2"][preceding-sibling::*[position() = 1]]//*[@and][following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[starts-with(@class,"this-is-at")][@xml:lang="en-US"][following-sibling::omicron[contains(concat(@true,"$"),"attribute$")][@xml:lang="en-US"][@xml:id="id4"]/alpha[@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::beta[@xml:id="id6"][following-sibling::rho[not(child::node())][following-sibling::upsilon[@attr="false"][@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=4]][following-sibling::rho[@xml:lang="en-US"][preceding-sibling::*[position() = 4]][following-sibling::zeta[not(child::node())][following-sibling::nu[starts-with(concat(@desciption,"-"),"false-")][@xml:lang="en"][preceding-sibling::*[position() = 6]][following-sibling::sigma[@xml:lang="en-GB"][@xml:id="id8"]/zeta[starts-with(@string,"attribute valu")][@xml:lang="nb"][not(child::node())][following-sibling::epsilon[@token][@xml:lang="en-US"][@xml:id="id9"][not(following-sibling::*)]//mu[starts-with(concat(@insert,"-"),"123456789-")][not(following-sibling::*)][position() = 1]]]]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + any + 1 + @@ -13547,6 +15867,11 @@ //alpha[@xml:id="id1"]/xi[starts-with(concat(@content,"-"),"123456789-")][following-sibling::rho[@insert][@xml:lang="no"][not(following-sibling::*)]//*[@content][@xml:lang="no-nb"][@xml:id="id2"]/iota[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::pi[@xml:id="id3"][not(child::node())][following-sibling::eta[@xml:lang="en"][not(following-sibling::*)][not(preceding-sibling::eta)]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -13564,6 +15889,11 @@ //phi[@xml:id="id1"]//psi[contains(concat(@true,"$"),"en$")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[@src="content"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//tau[contains(@name,"23")][not(following-sibling::*)]/chi[@xml:lang="nb"][@xml:id="id4"][following-sibling::eta[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[starts-with(@object,"this-is-")][@xml:lang="en"][@xml:id="id5"][not(child::node())][following-sibling::delta[contains(concat(@number,"$"),"reen$")][@xml:lang="no"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::sigma[starts-with(@insert,"1")][@xml:id="id6"][not(following-sibling::*)]//chi[@att][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@number][@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]//theta[@string][@xml:lang="en"][not(preceding-sibling::*)]//kappa[not(preceding-sibling::*)][not(following-sibling::*)]//xi[contains(concat(@data,"$"),"ue$")][@xml:lang="no"][not(following-sibling::*)]//pi[@attr][not(following-sibling::*)]]][position() = 1]][position() = 1]]]][position() = 1]] + + + psi + 0 + @@ -13595,6 +15925,11 @@ //epsilon[@or][@xml:lang="en"][@xml:id="id1"]/rho[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]/tau[@attrib][@xml:id="id3"]/xi[not(preceding-sibling::*)][not(child::node())][following-sibling::chi[contains(concat(@number,"$"),"true$")][@xml:lang="nb"][following-sibling::nu[contains(@name,"ue")][@xml:lang="en-US"]//lambda[@xml:lang="en"]//omicron[not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//upsilon[@xml:lang="en-GB"][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 2]][following-sibling::iota[@xml:id="id5"][not(following-sibling::*)]/omega[@xml:lang="nb"][not(preceding-sibling::*)]//alpha[@xml:id="id6"][not(following-sibling::*)]]]][position() = 1]]]] + + + xi + 0 + @@ -13625,6 +15960,11 @@ //chi[@xml:lang="no"]/theta[@attribute][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(concat(@token,"$"),"t-value$")][not(following-sibling::*)]//gamma[starts-with(@delete,"solid 1px")][@xml:id="id1"]/phi[starts-with(@and,"f")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)]/*[following-sibling::*[position()=7]][following-sibling::lambda[@xml:lang="en"][@xml:id="id3"][following-sibling::delta[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::lambda[@content="_blank"][@xml:lang="en-GB"][following-sibling::*[position()=4]][following-sibling::epsilon[@false][@xml:lang="en"][preceding-sibling::*[position() = 4]][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@class][not(child::node())][following-sibling::alpha[starts-with(@or,"f")]/lambda[@xml:id="id5"]/xi//gamma[starts-with(@content,"tr")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)]/lambda[starts-with(concat(@delete,"-"),"_blank-")][@xml:lang="no"][@xml:id="id7"][not(child::node())][following-sibling::*[contains(concat(@true,"$"),"ute-value$")][@xml:id="id8"][following-sibling::*[position()=2]][following-sibling::zeta[@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi//mu[starts-with(concat(@and,"-"),"false-")][@xml:lang="no-nb"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[contains(@delete,"ibute value")][@xml:lang="no-nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@class][@xml:lang="en-US"][position() = 1]]][position() = 1]]]]]]][position() = 1]]]][position() = 1]]] + + + theta + 0 + @@ -13664,6 +16004,11 @@ //zeta[@class]//sigma[not(preceding-sibling::*)]//alpha[@xml:lang="en-US"][@xml:id="id1"][not(child::node())][following-sibling::beta[contains(concat(@delete,"$"),"nt$")][@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//iota[starts-with(concat(@attribute,"-"),"true-")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[starts-with(concat(@attr,"-"),"solid 1px green-")][@xml:lang="nb"]//omicron[@delete][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::gamma[preceding-sibling::*[position() = 1]]//mu[@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -13685,6 +16030,11 @@ //omicron[starts-with(concat(@token,"-"),"solid 1px green-")][@xml:id="id1"]//chi[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[contains(@attr,"ibute valu")][not(following-sibling::*)]/nu[contains(@and," value")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::psi[starts-with(@delete,"fals")][@xml:lang="en-GB"]/omicron[contains(@and,"eValue")][@xml:id="id3"][not(following-sibling::*)]/chi[@xml:lang="no"]/sigma[@xml:lang="no"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::nu[not(child::node())][following-sibling::tau[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(following-sibling::tau)]//theta[@xml:lang="no"][@xml:id="id5"]/upsilon[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::nu[contains(concat(@string,"$"),"ibute$")][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::chi[contains(concat(@and,"$"),"_blank$")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::beta[starts-with(@string,"another attribute ")][not(following-sibling::*)]/beta[@xml:lang="no-nb"][@xml:id="id7"][not(child::node())][following-sibling::beta[@xml:id="id8"][preceding-sibling::*[position() = 1]]//eta[@xml:lang="no"][not(following-sibling::*)]/nu[not(following-sibling::*)]]][position() = 1]]][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -13722,6 +16072,11 @@ //omega[@xml:lang="nb"]//chi[@xml:id="id1"]//delta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[contains(concat(@data,"$"),"ttribute value$")][preceding-sibling::*[position() = 1]]/chi[not(preceding-sibling::*)]//upsilon[@attrib][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[starts-with(concat(@true,"-"),"true-")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::*[not(child::node())][following-sibling::omicron[@src][not(child::node())][following-sibling::xi[@token="content"][not(following-sibling::*)]//omicron[@title][not(following-sibling::*)]/upsilon[@title][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::mu[@xml:lang="no-nb"][not(child::node())][following-sibling::sigma[starts-with(@insert,"attribut")][not(following-sibling::*)]]]][position() = 1]]]][position() = 1]] + + + delta + 0 + @@ -13749,6 +16104,11 @@ //omicron[contains(@false,"k")][@xml:lang="en-US"]/pi[starts-with(concat(@token,"-"),"this.nodeValue-")][@xml:lang="no-nb"][@xml:id="id1"][not(following-sibling::*)]//tau[starts-with(@name,"fals")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 2]]//lambda[@src="another attribute value"][@xml:id="id3"][not(child::node())][following-sibling::omega[not(following-sibling::*)]//zeta[@xml:lang="nb"][not(following-sibling::*)]/beta[@string="100%"][@xml:lang="no"]/omicron[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][not(following-sibling::*)]//epsilon[not(preceding-sibling::*)]/upsilon[@content][@xml:lang="en"]/gamma//sigma[contains(@attrib,"l")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omicron[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]]]] + + + tau + 0 + @@ -13782,6 +16142,11 @@ //gamma[starts-with(concat(@class,"-"),"attribute value-")][@xml:lang="no-nb"][@xml:id="id1"]//psi[@xml:lang="en-GB"][@xml:id="id2"]/xi[@number]//lambda[@xml:id="id3"][not(following-sibling::*)]//chi[@attr][@xml:lang="no-nb"][not(following-sibling::*)]//tau[starts-with(@att,"another")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::phi[@data="solid 1px green"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::omicron[@title][@xml:lang="no-nb"][@xml:id="id6"]/beta[@desciption][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@xml:id="id7"][not(following-sibling::*)]/phi[starts-with(@name,"t")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::zeta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]]//alpha[@xml:id="id9"][not(preceding-sibling::*)]//zeta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@delete="_blank"][@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@content][@xml:lang="en"][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[@att="attribute-value"][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//upsilon[@xml:id="id12"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::rho[contains(concat(@string,"$"),"ank$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[starts-with(@string,"this-is-at")][not(following-sibling::*)]/zeta[@xml:lang="en"][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + tau + 0 + @@ -13826,6 +16191,11 @@ //omicron[@xml:lang="en-US"]/xi[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id2"]/nu[following-sibling::iota[following-sibling::lambda[@insert="false"][@xml:id="id3"][not(child::node())][following-sibling::lambda[contains(concat(@number,"$"),"alue$")][@xml:lang="en"][not(child::node())][following-sibling::gamma[starts-with(@attr,"at")][@xml:id="id4"]//iota[@att][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma//rho[starts-with(@attr,"attribut")][@xml:lang="en"][@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@title][@xml:id="id6"][preceding-sibling::*[position() = 1]]//xi[contains(concat(@src,"$"),"s-att-value$")][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::sigma[contains(concat(@abort,"$"),"se$")][@xml:lang="en-US"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 2]]/delta[@xml:lang="no"][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id9"]/theta[starts-with(concat(@attrib,"-"),"this-")][@xml:lang="en-GB"][@xml:id="id10"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="nb"][@xml:id="id11"][not(following-sibling::*)]//phi[@attr][@xml:lang="en"][@xml:id="id12"][not(preceding-sibling::*)]//lambda[@xml:lang="en-GB"][not(child::node())][following-sibling::alpha[contains(concat(@src,"$"),"00%$")][@xml:lang="en"][@xml:id="id13"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@object][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]]][position() = 1]] + + + xi + 0 + @@ -13866,6 +16236,11 @@ //sigma[@xml:id="id1"]/theta[@string][@xml:id="id2"][not(following-sibling::*)]//*[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/eta[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::eta)]//*[@object][@xml:id="id5"][position() = 1]] + + + any + 0 + @@ -13883,6 +16258,11 @@ //kappa[starts-with(@att,"12345")]//chi[contains(@attribute,"te")][@xml:id="id1"][not(child::node())][following-sibling::*[starts-with(@content,"tru")][@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[starts-with(@desciption,"att")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::mu[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@content]/zeta[starts-with(@false,"attribute-value")][@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]/beta[@att][@xml:lang="en-US"][@xml:id="id4"]/chi[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@class][not(preceding-sibling::*)][following-sibling::epsilon[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[contains(concat(@object,"$"),"00%$")][@xml:lang="en-GB"][@xml:id="id7"]//alpha[@xml:lang="no-nb"][@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::rho[starts-with(concat(@and,"-"),"true-")][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]][position() = 1]]] + + + chi + 0 + @@ -13913,6 +16293,11 @@ //delta[@xml:lang="en"][@xml:id="id1"]/mu[starts-with(@attribute,"attri")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/gamma[@content="this.nodeValue"][@xml:id="id3"][not(following-sibling::*)]/omicron[@and][not(preceding-sibling::*)]//phi[@delete][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@att="_blank"][@xml:lang="no"][preceding-sibling::*[position() = 1]]/kappa[@false="another attribute value"][@xml:id="id5"][not(preceding-sibling::*)]//zeta[@delete="attribute-value"][@xml:id="id6"][not(child::node())][following-sibling::alpha[@xml:lang="nb"][not(child::node())][following-sibling::omega[starts-with(@number,"con")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/theta[@abort][@xml:lang="no-nb"][not(following-sibling::*)]/beta[following-sibling::upsilon[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::pi//phi[starts-with(@false,"conten")][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::rho[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omega[@attribute="false"][@xml:id="id8"][following-sibling::upsilon[starts-with(@attrib,"another attrib")][following-sibling::*[position()=1]][following-sibling::zeta[@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/theta[starts-with(@attrib,"conten")][@xml:id="id10"][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]] + + + mu + 0 + @@ -13953,6 +16338,11 @@ //mu[contains(@content,"his.no")][@xml:lang="nb"]/psi[contains(concat(@true,"$"),"id 1px green$")][@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(concat(@name,"$"),"odeValue$")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@object="100%"][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/omicron[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:lang="no-nb"][not(child::node())][following-sibling::gamma[starts-with(@att,"fa")][preceding-sibling::*[position() = 3]]//phi[contains(concat(@and,"$"),"other attribute value$")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[contains(@title,"2345")][@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]/beta[contains(@abort,"se")][not(preceding-sibling::*)]//epsilon[contains(concat(@attrib,"$"),"nother attribute value$")][@xml:id="id5"][not(child::node())][following-sibling::iota[@xml:lang="no"][@xml:id="id6"][following-sibling::theta[@xml:lang="en-GB"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::sigma[@object="_blank"][@xml:id="id8"][not(following-sibling::*)]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -13981,6 +16371,11 @@ //theta[@xml:lang="no-nb"][@xml:id="id1"]/zeta[@delete="another attribute value"][not(preceding-sibling::*)]//mu[@xml:lang="nb"]/zeta[@xml:id="id2"][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//kappa[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[contains(@or,"his.nodeValue")][@xml:id="id5"]//eta[@xml:id="id6"][not(child::node())][following-sibling::chi[contains(@desciption,"attri")][preceding-sibling::*[position() = 1]]//delta[@xml:lang="no"][not(preceding-sibling::*)]/phi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[starts-with(@object,"conten")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@true="false"][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + zeta + 1 + @@ -14010,6 +16405,11 @@ //delta[@xml:lang="en-GB"][@xml:id="id1"]//tau[contains(concat(@token,"$"),"t-value$")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::*[contains(@attrib,"attribute val")][@xml:lang="en-GB"][not(following-sibling::*)]/nu[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omicron[starts-with(@string,"f")][@xml:lang="nb"][@xml:id="id3"]/beta[@title="content"][not(following-sibling::*)]/kappa[@or][@xml:lang="en-GB"][not(following-sibling::*)]/omega[not(preceding-sibling::*)][following-sibling::kappa[@data][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[@xml:lang="en-US"][not(following-sibling::*)]/gamma[starts-with(@name,"attribute-valu")][@xml:lang="nb"][@xml:id="id5"]/nu[@src="solid 1px green"][@xml:id="id6"][not(preceding-sibling::*)]//phi[@xml:id="id7"][not(preceding-sibling::*)]//chi[@xml:lang="nb"][not(following-sibling::*)]/phi[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"]]][position() = 1]]][position() = 1]][position() = 1]] + + + tau + 0 + @@ -14046,6 +16446,11 @@ //zeta[@xml:id="id1"]/mu[@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::upsilon[@and="attribute value"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[following-sibling::*[position()=1]][following-sibling::lambda[preceding-sibling::*[position() = 3]]/tau[@xml:lang="nb"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::lambda[@or="true"][@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//kappa[@xml:lang="en"][@xml:id="id6"][following-sibling::*[position()=3]][following-sibling::kappa[@xml:lang="no-nb"][@xml:id="id7"][not(child::node())][following-sibling::omicron[@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 3]][not(following-sibling::*)]/rho[@delete][not(preceding-sibling::*)]]]]][position() = 1]]]] + + + mu + 0 + @@ -14069,6 +16474,11 @@ //pi[contains(concat(@true,"$"),"value$")][@xml:lang="no"][@xml:id="id1"]//iota[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[not(following-sibling::*)][not(parent::*/*[position()=2])]//rho[contains(concat(@token,"$"),"ontent$")][@xml:lang="no"][following-sibling::iota[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(following-sibling::iota)]//epsilon//beta[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[preceding-sibling::*[position() = 1]]/delta[@xml:id="id4"][not(following-sibling::*)]/psi[@content][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)]//mu[@xml:id="id6"]/delta[not(following-sibling::*)][position() = 1]]][position() = 1]] + + + iota + 0 + @@ -14098,6 +16508,11 @@ //omega/*[@xml:id="id1"][following-sibling::*[position()=2]][following-sibling::tau[@xml:lang="en-US"][@xml:id="id2"][following-sibling::*[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/eta[@xml:id="id3"][following-sibling::rho[preceding-sibling::*[position() = 1]]/phi[starts-with(@abort,"this-is-att-va")][not(following-sibling::*)]/pi[@xml:id="id4"][following-sibling::kappa[starts-with(@token,"1234567")][@xml:lang="nb"][following-sibling::lambda[starts-with(@or,"_b")][@xml:lang="en"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::*[@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]//alpha[@data][@xml:lang="nb"][@xml:id="id7"][not(following-sibling::*)][not(preceding-sibling::alpha)]]][position() = 1]]][position() = 1]]] + + + any + 0 + @@ -14122,6 +16537,11 @@ //beta[@xml:id="id1"]//delta[contains(@insert,"rue")][@xml:lang="en-GB"][not(child::node())][following-sibling::mu[following-sibling::upsilon/omicron[contains(concat(@content,"$"),"rue$")][@xml:lang="en-GB"][not(following-sibling::*)]//delta[starts-with(@abort,"1234")][@xml:lang="nb"]/mu[@xml:lang="en-GB"][@xml:id="id2"]//omicron[@xml:id="id3"][not(preceding-sibling::*)]/tau[@insert][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[contains(@attribute,"ue")][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::iota[@xml:id="id6"][not(child::node())][following-sibling::kappa[@xml:lang="en"][following-sibling::omicron[not(preceding-sibling::omicron or following-sibling::omicron)][following-sibling::pi[not(following-sibling::pi)][not(child::node())][following-sibling::epsilon[@desciption][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 5]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]] + + + delta + 0 + @@ -14151,6 +16571,11 @@ //delta[starts-with(concat(@true,"-"),"123456789-")]/gamma[@insert="another attribute value"][@xml:id="id1"][following-sibling::*[@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::phi[starts-with(@data,"so")][@xml:lang="no"][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id4"]//mu[not(child::node())][following-sibling::upsilon[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:id="id6"][following-sibling::theta[starts-with(@and,"sol")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:id="id7"][not(child::node())][following-sibling::gamma[@xml:id="id8"][not(following-sibling::*)]//rho[starts-with(@data,"attribute")][@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][not(preceding-sibling::rho)][not(child::node())][following-sibling::eta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]//upsilon[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::*[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/chi[@title][following-sibling::gamma[@xml:lang="no"][following-sibling::rho[contains(@name,"his.nodeVal")][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[contains(concat(@or,"$"),"k$")][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::iota[@attrib="false"][@xml:id="id11"][not(following-sibling::*)]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]] + + + gamma + 0 + @@ -14186,6 +16611,11 @@ //sigma[@xml:lang="nb"][@xml:id="id1"]//beta[contains(concat(@true,"$"),"value$")][@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]/lambda[starts-with(concat(@delete,"-"),"attribute-")][@xml:id="id3"][following-sibling::*[position()=2]][following-sibling::eta[@content][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::theta[not(following-sibling::*)]//kappa[not(child::node())][following-sibling::gamma[starts-with(@src,"_")][not(following-sibling::*)]//delta[contains(@or,"att-")][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[@number][@xml:lang="nb"][@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[not(following-sibling::*)]]][position() = 1]]]] + + + lambda + 0 + @@ -14207,6 +16637,11 @@ //omega[starts-with(concat(@delete,"-"),"false-")]/iota[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[starts-with(concat(@delete,"-"),"false-")][@xml:id="id1"][not(preceding-sibling::epsilon)]//phi[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[contains(concat(@and,"$"),"tribute-value$")]//zeta[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@xml:lang="en-GB"][not(preceding-sibling::*)]/rho[@xml:lang="en-US"][following-sibling::gamma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[@att][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:lang="no"]/*[@attrib="this-is-att-value"][not(following-sibling::*)]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -14236,6 +16671,11 @@ //beta[@xml:lang="no"]//tau[starts-with(@class,"attri")][@xml:id="id1"]/pi[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[starts-with(@name,"anothe")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)]/upsilon[contains(concat(@number,"$"),"ute value$")][@xml:id="id3"][not(preceding-sibling::*)]//*[starts-with(concat(@or,"-"),"this-")][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]//upsilon[starts-with(concat(@attr,"-"),"this-")][@xml:id="id5"]//tau[@xml:id="id6"][not(preceding-sibling::*)]/delta[contains(@name,"ue")][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::gamma[starts-with(concat(@number,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::tau[@xml:lang="en-US"][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/nu[@class][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[contains(concat(@data,"$"),"rue$")][@xml:lang="nb"][@xml:id="id10"][following-sibling::upsilon[contains(@object,"%")][@xml:id="id11"][not(following-sibling::*)]/nu[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::lambda[@data][not(child::node())][following-sibling::tau[@data="another attribute value"][@xml:id="id12"][not(following-sibling::*)]//nu[starts-with(concat(@content,"-"),"this.nodeValue-")][@xml:id="id13"]//beta[starts-with(concat(@class,"-"),"123456789-")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="no-nb"][@xml:id="id14"]//eta[contains(concat(@delete,"$"),"n$")][@xml:id="id15"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[starts-with(concat(@or,"-"),"_blank-")][not(preceding-sibling::*)]/theta[@xml:id="id16"][not(preceding-sibling::*)][not(following-sibling::*)]]]][position() = 1]][position() = 1]][position() = 1]] + + + delta + 0 + @@ -14282,6 +16722,11 @@ //rho[@true="attribute"][@xml:lang="en-GB"]//phi[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/phi[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@true][@xml:id="id3"][not(following-sibling::*)]/gamma[starts-with(concat(@delete,"-"),"123456789-")][not(preceding-sibling::*)][not(following-sibling::*)]/*[contains(@attribute,"lan")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:id="id5"]/alpha//tau[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[contains(@data,"te value")][@xml:lang="no-nb"][@xml:id="id7"][following-sibling::*[position()=3]][following-sibling::upsilon[starts-with(@abort,"attri")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"][@xml:id="id8"][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@xml:id="id9"]//tau[starts-with(concat(@true,"-"),"this.nodeValue-")][@xml:lang="en"][@xml:id="id10"][not(preceding-sibling::*)]/lambda[@class][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="no"][@xml:id="id13"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + phi + 0 + @@ -14318,6 +16763,11 @@ //lambda[contains(@att,"ute val")][@xml:id="id1"]/kappa[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@class][@xml:lang="nb"][not(child::node())][following-sibling::omega//iota[contains(concat(@insert,"$"),"is-att-value$")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[not(preceding-sibling::*)][not(preceding-sibling::omega)][following-sibling::epsilon[starts-with(@content,"attribute")]/delta[@xml:id="id3"][not(preceding-sibling::*)]//zeta[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::nu[starts-with(@attribute,"solid 1px gr")]/omega[@xml:id="id5"][not(preceding-sibling::*)]/upsilon[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[contains(@and,"on")][@xml:id="id7"]//phi[starts-with(@or,"10")][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[@attrib][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="no"][following-sibling::rho[@xml:lang="no"][@xml:id="id9"]//tau[@xml:id="id10"][not(following-sibling::*)]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -14353,6 +16803,11 @@ //psi[starts-with(@and,"attr")][@xml:lang="no-nb"][@xml:id="id1"]/lambda[not(following-sibling::*)]//theta[@xml:lang="no-nb"][not(preceding-sibling::*)]//iota[@xml:id="id2"][not(child::node())][following-sibling::nu[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@content][@xml:lang="en"][@xml:id="id3"]/phi[@xml:lang="en"][@xml:id="id4"][not(child::node())][following-sibling::pi[@attribute][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//gamma[@xml:lang="en-US"][@xml:id="id6"][following-sibling::mu/*[contains(@title,"this.nodeVal")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[contains(@false,"89")][not(child::node())][following-sibling::delta[contains(concat(@title,"$"),"value$")][@xml:lang="en-US"][not(following-sibling::*)]//lambda[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::chi[@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::rho[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/alpha[starts-with(@class,"this-is-att-va")][@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]]]] + + + iota + 0 + @@ -14386,6 +16841,11 @@ //gamma/upsilon[@att][@xml:lang="en"][following-sibling::theta[@xml:lang="nb"][@xml:id="id1"][not(following-sibling::*)]/xi[starts-with(@src,"attribute va")][not(preceding-sibling::*)][following-sibling::*[position()=7]][following-sibling::phi[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=6]][following-sibling::lambda[@xml:lang="en"][following-sibling::theta[@or][@xml:id="id2"][following-sibling::upsilon[@xml:id="id3"][preceding-sibling::*[position() = 4]][following-sibling::tau[@xml:lang="en"][following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[@string="false"][preceding-sibling::*[position() = 6]][following-sibling::alpha[@number][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]] + + + upsilon + 0 + @@ -14406,6 +16866,11 @@ //nu[@xml:lang="nb"][@xml:id="id1"]/sigma[@title][not(following-sibling::*)]/theta[contains(@data,"23")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::tau[@true="attribute value"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@xml:lang="en-US"][@xml:id="id4"][following-sibling::chi[preceding-sibling::*[position() = 1]]/rho[@xml:lang="en"]//rho[@desciption]/theta[@or="123456789"][@xml:lang="en-US"][not(following-sibling::*)]/theta[@title][@xml:lang="en-GB"][not(preceding-sibling::*)]//phi[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[not(child::node())][following-sibling::rho[@xml:lang="nb"][preceding-sibling::*[position() = 2]]//xi[@xml:id="id6"][not(child::node())][following-sibling::sigma[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -14437,6 +16902,11 @@ //psi[starts-with(concat(@token,"-"),"solid 1px green-")]/nu[contains(concat(@true,"$"),"ue$")]/lambda[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::eta[contains(@true,"bla")]/*[contains(concat(@data,"$"),"789$")][@xml:id="id1"][not(preceding-sibling::*)]/delta[following-sibling::sigma[@xml:lang="nb"][following-sibling::*[position()=3]][following-sibling::*[@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::nu[@xml:id="id2"][not(child::node())][following-sibling::lambda[contains(concat(@src,"$"),"tent$")][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//gamma[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::sigma[starts-with(@data,"t")][@xml:lang="en-US"]][position() = 1]]]][position() = 1]][position() = 1]] + + + lambda + 0 + @@ -14461,6 +16931,11 @@ //rho[@number][@xml:id="id1"]//nu[@class][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::omicron[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]//beta[@number][not(child::node())][following-sibling::rho[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[@class][@xml:lang="no-nb"][@xml:id="id5"][following-sibling::omicron[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 3]]/chi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::beta[@true="_blank"][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]]/iota[contains(@attribute,"56789")][@xml:lang="en-GB"][@xml:id="id8"][not(child::node())][following-sibling::delta[starts-with(@title,"at")][@xml:lang="no"][@xml:id="id9"][not(child::node())][following-sibling::alpha[@xml:id="id10"]//delta[@xml:id="id11"][not(following-sibling::*)]/gamma[contains(concat(@delete,"$"),"alse$")]/gamma[@true][@xml:lang="no-nb"][@xml:id="id12"][not(preceding-sibling::*)][following-sibling::beta[@and][@xml:id="id13"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//theta[starts-with(@insert,"tr")][not(following-sibling::*)]//iota[@xml:lang="no"]//eta[@xml:lang="en"][not(following-sibling::*)]/rho[@xml:lang="en"][@xml:id="id14"][not(following-sibling::*)]/nu[starts-with(@name,"another attribute valu")][@xml:lang="nb"][@xml:id="id15"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id16"][not(following-sibling::*)]//kappa[@xml:lang="no-nb"][@xml:id="id17"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]]]][position() = 1]]] + + + nu + 0 + @@ -14506,6 +16981,11 @@ //theta[starts-with(concat(@delete,"-"),"content-")]/pi[@attribute][@xml:lang="en"][not(child::node())][following-sibling::delta[following-sibling::*[contains(@data,"e")][not(child::node())][following-sibling::alpha[@xml:id="id1"]//gamma[@xml:lang="no-nb"][following-sibling::rho[@title][preceding-sibling::*[position() = 1]]/delta[@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]//rho[@insert][@xml:id="id3"]/theta[@desciption][@xml:id="id4"][not(following-sibling::*)]//delta[@att="_blank"][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)]/psi[@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@false][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="en-US"][preceding-sibling::*[position() = 2]]//xi[@xml:lang="en-GB"][following-sibling::omicron[@token][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]]//chi[not(preceding-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]]]] + + + pi + 0 + @@ -14539,6 +17019,11 @@ //alpha//gamma[contains(@string,"nk")][not(preceding-sibling::*)]/lambda[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau//iota[following-sibling::tau[not(child::node())][following-sibling::psi[@xml:lang="en-GB"][not(following-sibling::*)]]]] + + + lambda + 0 + @@ -14556,6 +17041,11 @@ //rho[@xml:lang="no-nb"]/lambda[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::gamma[@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::tau[not(following-sibling::*)]/omicron[@object][following-sibling::theta[@and="_blank"][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[starts-with(@token,"anot")][@xml:lang="en"][@xml:id="id3"][following-sibling::eta[@xml:id="id4"][following-sibling::*[position()=1]][not(preceding-sibling::eta)][not(child::node())][following-sibling::gamma[not(following-sibling::*)]//*[starts-with(concat(@name,"-"),"_blank-")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:id="id6"]/rho[contains(@content,"s.n")][@xml:lang="en"][@xml:id="id7"]/pi[@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::pi)][position() = 1]]][position() = 1]]][position() = 1]] + + + lambda + 0 + @@ -14583,6 +17073,11 @@ //xi[contains(concat(@src,"$"),"another attribute value$")][@xml:id="id1"]//eta[contains(concat(@and,"$"),"e$")]//nu[@true][@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[@att][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[starts-with(concat(@abort,"-"),"attribute value-")][@xml:id="id3"][not(following-sibling::*)][position() = 1]] + + + nu + 0 + @@ -14600,6 +17095,11 @@ //rho[@xml:id="id1"]//*[starts-with(concat(@insert,"-"),"solid 1px green-")][@xml:id="id2"][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[starts-with(@token,"12345")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@class]/psi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::upsilon[starts-with(@src,"a")][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/pi[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::sigma[@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::gamma[starts-with(concat(@att,"-"),"content-")][@xml:lang="en-US"][@xml:id="id7"]/omega[starts-with(@attribute,"attribute-val")][@xml:lang="no"][@xml:id="id8"][not(following-sibling::*)]//gamma[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@and][@xml:lang="nb"][not(following-sibling::*)]/lambda[contains(@desciption,"la")][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu//rho[@xml:lang="en-US"][@xml:id="id10"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@insert][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[starts-with(@number,"_blan")][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[starts-with(@insert,"attri")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/iota[starts-with(concat(@class,"-"),"false-")][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + any + 0 + @@ -14641,6 +17141,11 @@ //*[@xml:lang="en-US"][@xml:id="id1"]//iota[@xml:id="id2"][not(following-sibling::*)]/theta[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:id="id4"][not(child::node())][following-sibling::upsilon[@object][@xml:lang="nb"][@xml:id="id5"][following-sibling::psi[contains(concat(@src,"$"),"tribute$")][@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 4]][not(following-sibling::*)]/psi[@content][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@att][@xml:id="id7"][not(following-sibling::*)]/phi[@xml:lang="en"][following-sibling::*[position()=1]][not(preceding-sibling::phi or following-sibling::phi)][not(child::node())][following-sibling::omega[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/zeta[@xml:id="id8"][following-sibling::nu[@xml:lang="en"][@xml:id="id9"]/omicron[contains(concat(@string,"$"),"alue$")]/lambda[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="no"][@xml:id="id10"][not(following-sibling::*)]/eta[starts-with(@number,"cont")][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[@xml:id="id12"][not(preceding-sibling::*)][following-sibling::beta[starts-with(concat(@attribute,"-"),"123456789-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@attribute="this-is-att-value"][@xml:lang="en-US"][@xml:id="id13"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -14678,6 +17183,11 @@ //lambda[@desciption="false"][@xml:lang="en"]/pi[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@or][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[starts-with(concat(@name,"-"),"123456789-")][@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//sigma[@xml:id="id4"]/omega[@or="solid 1px green"][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]//eta[following-sibling::iota[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[@and][@xml:id="id6"][not(child::node())][following-sibling::omicron[starts-with(concat(@attrib,"-"),"123456789-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[@xml:id="id7"][not(preceding-sibling::*)]/upsilon[@xml:lang="en-GB"][not(child::node())][following-sibling::phi[@number][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//delta[not(preceding-sibling::*)]/mu[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@and][@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@abort][@xml:id="id9"]/mu[starts-with(@or,"at")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[starts-with(@data,"attr")][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::gamma[@xml:lang="en"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::rho[@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::eta[@xml:id="id12"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/theta[starts-with(@attribute,"12")][@xml:lang="no"][not(following-sibling::*)]/eta[@string][@xml:lang="no-nb"][@xml:id="id13"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]] + + + eta + 0 + @@ -14723,6 +17233,11 @@ //sigma[@token][@xml:lang="no-nb"][@xml:id="id1"]/phi[starts-with(@desciption,"th")][@xml:id="id2"][not(following-sibling::*)]/zeta[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::epsilon[contains(@and,"id 1px green")][following-sibling::chi[@xml:id="id4"]/omicron[@class][not(following-sibling::*)][position() = 1]]] + + + zeta + 0 + @@ -14739,6 +17254,11 @@ //upsilon//eta[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::lambda[@string="true"][@xml:lang="no-nb"][not(following-sibling::*)]/epsilon[@xml:lang="en"][@xml:id="id1"][not(following-sibling::*)]/tau[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[not(child::node())][following-sibling::chi[@xml:id="id2"][not(child::node())][following-sibling::psi[starts-with(@att,"10")][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 3]]][position() = 1]][position() = 1]]] + + + eta + 0 + @@ -14757,6 +17277,11 @@ //kappa[contains(concat(@name,"$"),"3456789$")][@xml:id="id1"]/mu[@xml:id="id2"][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[@true][@xml:lang="no"][not(child::node())][following-sibling::omega[@and][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::xi[contains(@class,"e")][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[@and="content"][@xml:lang="no"][@xml:id="id4"][following-sibling::mu[starts-with(@attr,"1234")][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/lambda[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[starts-with(concat(@number,"-"),"attribute-")][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::phi[@xml:id="id7"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::nu[@xml:lang="no"][@xml:id="id8"]//alpha[starts-with(@src,"another ")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::theta[@xml:id="id9"][not(following-sibling::*)]/zeta[@xml:id="id10"][not(preceding-sibling::*)][not(preceding-sibling::zeta)]/iota[starts-with(concat(@abort,"-"),"attribute-")][@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)]/upsilon[starts-with(@attrib,"attribute v")][@xml:id="id12"]/omicron[contains(@true,"se")][@xml:lang="en"][not(preceding-sibling::*)][position() = 1]]]]]]][position() = 1]][position() = 1]]] + + + mu + 0 + @@ -14790,6 +17315,11 @@ //epsilon[@or]/sigma[starts-with(concat(@class,"-"),"another attribute value-")][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::rho[@xml:lang="no"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[@insert][@xml:id="id2"][following-sibling::rho[@and][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 3]]//tau[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::kappa[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//kappa[@number="attribute value"][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)]/beta[not(preceding-sibling::*)][not(following-sibling::*)]//*[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)]/sigma[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="en"][preceding-sibling::*[position() = 1]]/omega[@xml:lang="en-US"][not(child::node())][following-sibling::omega[@xml:id="id8"][not(following-sibling::*)]//psi[@xml:id="id9"][not(preceding-sibling::*)][following-sibling::pi[@data="100%"][@xml:lang="en"][@xml:id="id10"]/zeta[@abort][@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@insert][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(following-sibling::any)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + sigma + 0 + @@ -14825,6 +17355,11 @@ //upsilon[@xml:lang="en-US"][@xml:id="id1"]/chi[@attr][@xml:id="id2"]//pi[starts-with(concat(@and,"-"),"content-")]//eta[@class][@xml:id="id3"][not(child::node())][following-sibling::lambda[@attribute]/omicron[starts-with(@number,"co")][@xml:lang="en-GB"][not(following-sibling::*)]/chi[@object="another attribute value"][not(preceding-sibling::*)][following-sibling::omega[starts-with(concat(@att,"-"),"another attribute value-")][not(following-sibling::*)]/pi[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]/nu[not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]] + + + eta + 0 + @@ -14849,6 +17384,11 @@ //mu[@class="attribute value"][@xml:lang="no-nb"]//xi[contains(concat(@name,"$"),"ibute-value$")][not(following-sibling::*)][not(parent::*/*[position()=2])]//chi[contains(concat(@token,"$"),"tribute-value$")][@xml:id="id1"]//theta[@xml:lang="en-GB"][following-sibling::eta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::gamma[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::theta[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::psi[@attrib="this-is-att-value"][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::pi[contains(concat(@name,"$"),"alse$")][@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)]/sigma[contains(@attr,"%")][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::mu[starts-with(@data,"tr")][not(following-sibling::*)]//theta[@and="attribute value"]//alpha[not(preceding-sibling::*)][following-sibling::sigma[contains(@false,"value")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::mu[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::mu[@attr][@xml:id="id7"][not(following-sibling::*)]//iota[@xml:id="id8"][not(following-sibling::*)]/tau[@data="attribute value"][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)]/kappa[@attribute="false"][@xml:lang="en-GB"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::delta[@xml:id="id12"][not(following-sibling::*)]//theta[@xml:lang="no"][@xml:id="id13"][not(child::node())][following-sibling::alpha[@xml:lang="en-US"]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]] + + + theta + 0 + @@ -14891,6 +17431,11 @@ //gamma[@class]//epsilon[@attr="_blank"][not(following-sibling::*)]/beta[@attrib="solid 1px green"][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@xml:id="id3"]//iota[not(child::node())][following-sibling::upsilon[starts-with(concat(@abort,"-"),"attribute value-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[@number="_blank"][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::sigma[contains(@src,"56")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[not(child::node())][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]/zeta[@xml:lang="en-US"][not(following-sibling::*)]//eta[@xml:lang="no"][following-sibling::rho[contains(@abort,"3")][@xml:lang="en-US"][@xml:id="id8"][following-sibling::xi[@xml:lang="en"]][position() = 1]]]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -14922,6 +17467,11 @@ //chi[@name="attribute"][@xml:lang="en-US"][@xml:id="id1"]/xi[@name][@xml:lang="en"][@xml:id="id2"]//tau[following-sibling::*[position()=2]][following-sibling::kappa[@token="solid 1px green"][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::sigma[@true][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//mu[contains(@title,"ibut")]//omega[starts-with(concat(@att,"-"),"attribute-")][@xml:id="id3"]/pi[@xml:id="id4"][not(preceding-sibling::*)]/kappa[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@and][preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:id="id6"][following-sibling::theta[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]//upsilon[@xml:id="id8"][not(child::node())][following-sibling::alpha[contains(@true,"tribute valu")][@xml:lang="nb"][not(following-sibling::*)]/delta[not(following-sibling::*)]/phi[@xml:id="id9"][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[@xml:lang="en-US"]/nu[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::zeta[starts-with(concat(@name,"-"),"false-")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/omega//nu[contains(@object,"a")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@attribute][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::mu[starts-with(concat(@insert,"-"),"attribute value-")][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + tau + 0 + @@ -14966,6 +17516,11 @@ //upsilon[@xml:lang="no"]//xi[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[not(child::node())][following-sibling::omicron[starts-with(@title,"false")][@xml:lang="no"]/kappa[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@string][not(preceding-sibling::*)]//nu[@or][@xml:lang="nb"][@xml:id="id2"][position() = 1]][position() = 1]] + + + xi + 0 + @@ -14984,6 +17539,11 @@ //kappa[@xml:lang="nb"][@xml:id="id1"]/phi[starts-with(concat(@class,"-"),"false-")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::omicron[@xml:lang="no-nb"][not(following-sibling::*)]/*[following-sibling::theta[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/upsilon[@object][@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][position() = 1]]][position() = 1]] + + + delta + 0 + @@ -15003,6 +17563,11 @@ //lambda[@src]//rho[starts-with(concat(@content,"-"),"another attribute value-")][@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)]/beta[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@xml:id="id3"][not(following-sibling::*)]//theta[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]/omega[@att][@xml:lang="en-GB"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::tau[@abort][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@desciption][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::theta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@token][@xml:lang="no-nb"]/kappa[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]] + + + omega + 0 + @@ -15029,6 +17594,11 @@ //mu[starts-with(@attrib,"true")][@xml:lang="en"]//phi[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[contains(@src,"attribut")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]//xi[following-sibling::gamma[not(child::node())][following-sibling::iota[contains(concat(@false,"$"),"56789$")][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::lambda[@xml:id="id4"]//upsilon[@xml:lang="no-nb"][@xml:id="id5"][following-sibling::*[position()=2]][following-sibling::iota[contains(@title,"alue")][@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@class][@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 2]]/phi[@number="this.nodeValue"][@xml:lang="nb"][@xml:id="id8"][following-sibling::omicron[@false][@xml:lang="no"][following-sibling::xi[@xml:id="id9"][not(following-sibling::*)]/xi[@xml:lang="en"][@xml:id="id10"][following-sibling::beta[starts-with(concat(@or,"-"),"solid 1px green-")][@xml:lang="no-nb"][not(child::node())][following-sibling::omega[contains(concat(@or,"$"),"1px green$")][preceding-sibling::*[position() = 2]]//phi[contains(@content,"attri")][@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::epsilon[@object][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -15061,6 +17631,11 @@ //mu[@xml:lang="no-nb"]/mu[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::mu)]//lambda[starts-with(@desciption,"att")][following-sibling::sigma[@xml:id="id1"][preceding-sibling::*[position() = 1]]/pi[@class][not(preceding-sibling::*)]/phi[@xml:lang="en-US"]] + + + lambda + 0 + @@ -15078,6 +17653,11 @@ //omicron[starts-with(@object,"12345")][@xml:lang="nb"]/phi[contains(@object,"k")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id1"][following-sibling::gamma[@attrib="attribute value"][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]/beta[@desciption="100%"][@xml:id="id3"][not(preceding-sibling::*)]/alpha[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@src]]] + + + phi + 0 + @@ -15096,6 +17676,11 @@ //beta[contains(@attrib,"but")][@xml:id="id1"]//rho[following-sibling::*[position()=3]][following-sibling::*[@data][@xml:lang="en-GB"][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::epsilon[starts-with(concat(@att,"-"),"solid 1px green-")][@xml:id="id3"][not(following-sibling::*)]/xi[@or="123456789"][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(preceding-sibling::kappa or following-sibling::kappa)][following-sibling::pi[@abort="solid 1px green"][@xml:lang="en-GB"][following-sibling::omicron[@false="this.nodeValue"][@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::iota[@xml:lang="nb"][preceding-sibling::*[position() = 3]]/theta[@xml:lang="no"]/omega[@object][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@and][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[@title="123456789"][not(child::node())][following-sibling::pi[@insert="100%"][@xml:id="id6"]/iota[@xml:lang="nb"][@xml:id="id7"][not(following-sibling::*)]/tau[contains(concat(@src,"$"),"tribute$")][@xml:id="id8"][following-sibling::phi[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:lang="nb"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]]]]][position() = 1]]]][position() = 1]] + + + rho + 0 + @@ -15132,6 +17717,11 @@ //omega[contains(@attr,"t")][@xml:lang="nb"]//mu[contains(concat(@src,"$"),"bute$")][not(following-sibling::*)]//epsilon[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::tau[@xml:id="id2"][not(following-sibling::*)]//gamma[@xml:lang="en-US"][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/phi[contains(concat(@att,"$"),"56789$")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::pi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::omicron[@false][@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::upsilon[starts-with(@and,"attribute-v")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 3]]//eta[starts-with(@false,"another attribute ")][@xml:lang="no-nb"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + epsilon + 0 + @@ -15155,6 +17745,11 @@ //lambda[@xml:lang="no"]//omicron[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::iota[contains(concat(@data,"$"),"t-value$")][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@class][@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//theta[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::zeta[@title][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//zeta[@att][@xml:lang="no"]]][position() = 1]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -15174,6 +17769,11 @@ //kappa[@xml:lang="en-US"]/zeta[@object="this-is-att-value"][@xml:lang="nb"][@xml:id="id1"][not(following-sibling::*)]/sigma[starts-with(concat(@string,"-"),"another attribute value-")][following-sibling::eta[@xml:id="id2"]//alpha[starts-with(@false,"another")][@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::beta[starts-with(concat(@desciption,"-"),"this.nodeValue-")][@xml:lang="no-nb"]/epsilon[starts-with(@true,"con")][not(child::node())][following-sibling::epsilon[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]]//alpha[starts-with(@insert,"this.nodeV")][@xml:id="id5"]//nu[contains(@attr,"67")][@xml:id="id6"][not(child::node())][following-sibling::lambda[@xml:lang="en"]//phi[not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="en-US"][@xml:id="id7"]/lambda[@xml:id="id8"]/beta[@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@xml:lang="en"][@xml:id="id10"][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id11"][preceding-sibling::*[position() = 1]]//delta/epsilon[@insert][@xml:id="id12"]][position() = 1]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -15213,6 +17813,11 @@ //delta[starts-with(concat(@token,"-"),"100%-")][@xml:lang="no"][@xml:id="id1"]//upsilon[contains(concat(@attr,"$"),".nodeValue$")][@xml:lang="en-US"][not(child::node())][following-sibling::alpha[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@object="attribute-value"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::pi[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 3]][following-sibling::chi[not(following-sibling::*)]]][position() = 1]][position() = 1]] + + + upsilon + 0 + @@ -15227,6 +17832,11 @@ //delta[@xml:lang="no"]//sigma[@true]//chi[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[contains(@attrib,"e")][@xml:lang="en"][@xml:id="id2"][following-sibling::iota[contains(concat(@abort,"$"),"ibute$")][following-sibling::*[position()=1]][following-sibling::xi[contains(@and,"1")][@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]]] + + + kappa + 0 + @@ -15243,6 +17853,11 @@ //eta[@xml:lang="no-nb"][@xml:id="id1"]/beta[starts-with(concat(@data,"-"),"attribute-")][not(preceding-sibling::*)][following-sibling::xi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[not(preceding-sibling::*)]/kappa[@xml:lang="en-US"][not(preceding-sibling::*)]/theta[not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::theta)]//chi[starts-with(concat(@number,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/iota[@data="another attribute value"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="nb"][not(child::node())][following-sibling::xi[@delete][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@content="attribute-value"][@xml:lang="nb"][preceding-sibling::*[position() = 3]]/phi[@att][@xml:id="id5"][not(preceding-sibling::*)]/chi[@xml:id="id6"][not(preceding-sibling::*)]/mu[contains(concat(@content,"$"),"e$")][@xml:lang="en-GB"][not(following-sibling::*)]]][position() = 1]][position() = 1]]] + + + beta + 0 + @@ -15274,6 +17889,11 @@ //upsilon//iota[contains(@class,"56789")][not(child::node())][following-sibling::omicron[following-sibling::*[position()=2]][following-sibling::theta[@number][@xml:lang="en"][@xml:id="id1"][following-sibling::xi[@xml:lang="en-US"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//delta[not(following-sibling::*)]/nu[@xml:id="id2"][following-sibling::chi[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::alpha[@xml:lang="no"][@xml:id="id4"]/pi[contains(concat(@attrib,"$"),"tribute value$")][@xml:lang="en"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]]][position() = 1]] + + + iota + 0 + @@ -15296,6 +17916,11 @@ //sigma[@true][@xml:id="id1"]//delta[@string][@xml:id="id2"]/omicron[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::lambda[contains(@false,"e")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]]/upsilon[contains(concat(@data,"$"),"odeValue$")][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::sigma[@object][@xml:id="id6"][following-sibling::pi[contains(@attrib,"n")][@xml:lang="nb"][@xml:id="id7"][following-sibling::theta[contains(@att,"t")][preceding-sibling::*[position() = 3]]/delta[@xml:lang="en"][@xml:id="id8"]/omega[starts-with(@string,"cont")][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@or][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]] + + + omicron + 0 + @@ -15320,6 +17945,11 @@ //chi[@xml:id="id1"]/mu[starts-with(@attribute,"this.node")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::mu[@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[@content][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::lambda[@xml:lang="nb"][not(following-sibling::*)]/epsilon[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[starts-with(concat(@data,"-"),"100%-")][following-sibling::beta[starts-with(@insert,"100%")][@xml:id="id5"][preceding-sibling::*[position() = 2]]/omega[@attrib][not(child::node())][following-sibling::lambda[@abort][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::lambda[starts-with(@insert,"content")][@xml:lang="nb"][@xml:id="id7"][not(child::node())][following-sibling::rho/xi[not(child::node())][following-sibling::iota[@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[preceding-sibling::*[position() = 2]][following-sibling::kappa[starts-with(concat(@insert,"-"),"this.nodeValue-")][@xml:lang="en-GB"][@xml:id="id9"]//omega[@xml:lang="nb"][not(preceding-sibling::*)]/lambda[not(preceding-sibling::*)][not(following-sibling::*)]//delta[@title][@xml:lang="nb"][not(child::node())][following-sibling::pi[@xml:lang="no"][@xml:id="id10"][not(following-sibling::*)]/omega[contains(@string,"0%")][@xml:lang="no-nb"][@xml:id="id11"]//upsilon[starts-with(@false,"1")][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + mu + 0 + @@ -15358,6 +17988,11 @@ //upsilon[contains(@and,"al")][@xml:lang="nb"]/gamma[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[contains(@insert,"%")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//upsilon[not(child::node())][following-sibling::alpha[@data][not(following-sibling::*)]/pi[@xml:lang="no"][@xml:id="id2"][following-sibling::mu[contains(concat(@src,"$"),"_blank$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/theta[contains(@att,"Value")][@xml:id="id3"][not(following-sibling::*)][not(preceding-sibling::theta or following-sibling::theta)][not(preceding-sibling::theta)]//beta[@class][@xml:lang="en-US"]//phi[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id6"]//delta[starts-with(@object,"this.nod")][@xml:lang="en-GB"][@xml:id="id7"][following-sibling::tau[preceding-sibling::*[position() = 1]][following-sibling::alpha[following-sibling::psi[@att][@xml:lang="en-US"][@xml:id="id8"][not(following-sibling::*)]//omega[@xml:id="id9"][not(preceding-sibling::*)]]][position() = 1]]][position() = 1]][position() = 1]]] + + + gamma + 0 + @@ -15391,6 +18026,11 @@ //beta[@xml:lang="en-GB"][@xml:id="id1"]//*[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::gamma[starts-with(concat(@data,"-"),"this-")][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[starts-with(concat(@src,"-"),"100%-")][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//*[@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)]//mu[starts-with(concat(@src,"-"),"false-")][not(child::node())][following-sibling::delta[starts-with(@object,"_b")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@xml:id="id6"][position() = 1]][position() = 1]]] + + + any + 0 + @@ -15410,6 +18050,11 @@ //omicron[contains(@src,"4")][@xml:id="id1"]/xi[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::phi[@attribute][@xml:lang="no-nb"][not(child::node())][following-sibling::beta[@att][@xml:lang="no"][not(child::node())][following-sibling::*[@attr][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 3]]//omicron[@title][@xml:lang="en-US"]//eta[@number][@xml:lang="no"]/phi[@token]/alpha[@xml:lang="nb"][@xml:id="id4"]//pi[contains(@number,"tt")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@string="true"][not(following-sibling::*)]//delta[@true][@xml:id="id6"][not(preceding-sibling::*)]//phi[contains(@object,"6789")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@src="this-is-att-value"][@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][position() = 1]]]]] + + + xi + 0 + @@ -15440,6 +18085,11 @@ //kappa[@xml:lang="no"][@xml:id="id1"]//omicron[contains(concat(@name,"$"),"tt-value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[preceding-sibling::*[position() = 1]]//upsilon[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[following-sibling::phi[contains(@token,"een")][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/eta[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::omicron[contains(@name,"e")][@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@xml:id="id5"]/gamma[@false][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@or,"$"),"value$")][@xml:lang="en-US"][@xml:id="id7"]//omicron[@desciption][position() = 1]]]][position() = 1]]] + + + omicron + 0 + @@ -15465,6 +18115,11 @@ //omicron[@xml:lang="en-GB"][@xml:id="id1"]//pi[not(preceding-sibling::*)]/sigma[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(preceding-sibling::sigma or following-sibling::sigma)][following-sibling::phi[@false][not(following-sibling::*)]/kappa[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//*//sigma[contains(@class,"12345")][following-sibling::gamma[@xml:id="id3"][preceding-sibling::*[position() = 1]]//nu[contains(@data,"lue")][@xml:lang="no-nb"][not(preceding-sibling::*)]/psi[@or][@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]//eta[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::*[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::mu[contains(@attrib,"te value")][@xml:lang="no-nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omicron[@xml:lang="nb"][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[@number][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:id="id9"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:lang="no-nb"][@xml:id="id10"]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -15498,6 +18153,11 @@ //*[@xml:lang="nb"][@xml:id="id1"]/psi[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::gamma[contains(concat(@token,"$"),"ttribute$")][preceding-sibling::*[position() = 1]][following-sibling::chi[@false][@xml:id="id3"]//omicron[not(child::node())][following-sibling::tau[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id4"]//upsilon[not(following-sibling::*)]/pi[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::iota[@class="attribute value"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::phi[@xml:id="id6"][preceding-sibling::*[position() = 2]]//theta[contains(concat(@src,"$"),"ttribute value$")][@xml:lang="no"][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[contains(concat(@src,"$"),"ute value$")][@xml:lang="en"][not(following-sibling::*)]/pi[starts-with(@src,"another")][@xml:lang="no-nb"][not(preceding-sibling::pi)][not(child::node())][following-sibling::epsilon[@xml:id="id8"][following-sibling::*[position()=4]][following-sibling::xi[@xml:lang="no-nb"][following-sibling::delta[@xml:lang="nb"][not(child::node())][following-sibling::kappa[@xml:id="id9"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::kappa[@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 5]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + psi + 0 + @@ -15530,6 +18190,11 @@ //xi[@xml:id="id1"]//theta[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::kappa[contains(@class,"56789")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[starts-with(@attr,"attri")][@xml:lang="en"]//xi[contains(@att,"0%")][not(preceding-sibling::*)]/zeta[@name][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="no"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -15549,6 +18214,11 @@ //alpha[@xml:lang="nb"][@xml:id="id1"]/zeta[@true][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[@delete="this-is-att-value"][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[starts-with(concat(@class,"-"),"content-")][@xml:lang="en-GB"][not(following-sibling::*)]/chi[contains(@object,"tru")][@xml:id="id4"][following-sibling::beta[@xml:lang="en"][@xml:id="id5"]//nu[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::xi[@object="100%"][@xml:id="id7"]//upsilon/omicron[starts-with(concat(@content,"-"),"solid 1px green-")][@xml:lang="nb"][@xml:id="id8"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@desciption][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:id="id10"]/lambda[starts-with(concat(@and,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@xml:lang="nb"][@xml:id="id12"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + zeta + 0 + @@ -15579,6 +18249,11 @@ //sigma[@xml:id="id1"]//alpha[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::beta[@xml:lang="no"][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id6"]/gamma[@and="100%"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@src][@xml:id="id7"][not(child::node())][following-sibling::tau[@xml:lang="en"]/pi[@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/omicron[@object][not(following-sibling::*)]//chi[@xml:lang="nb"][following-sibling::omega[contains(@or," value")][@xml:lang="en-GB"][following-sibling::xi[@xml:lang="en"][@xml:id="id9"]//*[starts-with(concat(@content,"-"),"this-")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en"][not(following-sibling::*)]//tau[@xml:lang="no-nb"][@xml:id="id10"][not(following-sibling::*)]/xi[@xml:lang="en"][@xml:id="id11"]//tau[@number][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:id="id12"][preceding-sibling::*[position() = 1]][following-sibling::*[contains(concat(@string,"$"),"reen$")][@xml:id="id13"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//pi[@number][@xml:lang="en-GB"][@xml:id="id14"][not(following-sibling::*)][position() = 1]][position() = 1]]]]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -15621,6 +18296,11 @@ //psi[contains(@desciption,"456789")][@xml:lang="nb"]//eta[@attribute="123456789"][@xml:id="id1"][not(following-sibling::*)]/gamma[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::mu[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[not(following-sibling::*)]//iota[@xml:lang="no"][not(child::node())][following-sibling::lambda[@insert="false"][@xml:id="id4"]//kappa[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::*[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/iota[@xml:lang="no"][not(following-sibling::*)]/sigma[contains(concat(@true,"$"),"ibute value$")][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]//theta[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::mu//mu[@attribute][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::mu)][following-sibling::sigma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//alpha[starts-with(@desciption,"another attribute valu")][@xml:lang="no"][@xml:id="id8"]/eta[contains(concat(@token,"$"),"bute$")][@xml:id="id9"][not(following-sibling::*)]/mu[@xml:lang="nb"]/beta[@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]]][position() = 1]] + + + gamma + 0 + @@ -15659,6 +18339,11 @@ //chi[@xml:lang="en-GB"]/xi[@att][not(preceding-sibling::*)][not(following-sibling::*)]/tau[starts-with(@or,"1234")][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:id="id2"][preceding-sibling::*[position() = 1]]//xi[contains(@and,"lue")][@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[contains(concat(@true,"$"),"tribute value$")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]]//psi[starts-with(concat(@insert,"-"),"this-")][@xml:id="id4"]//epsilon[following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:id="id5"][preceding-sibling::*[position() = 1]]//nu[@xml:lang="no-nb"][following-sibling::nu/iota[not(following-sibling::*)][position() = 1]]]]]] + + + tau + 0 + @@ -15686,6 +18371,11 @@ //omicron[@xml:lang="nb"][@xml:id="id1"]//epsilon[@class][@xml:id="id2"][not(preceding-sibling::*)]//omicron[not(following-sibling::*)]//beta[starts-with(@content,"this.no")][@xml:lang="en-GB"][not(following-sibling::*)]//mu[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::mu[not(following-sibling::*)]/sigma[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[starts-with(@title,"at")][@xml:id="id5"][preceding-sibling::*[position() = 1]]/lambda[starts-with(@number,"attr")][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::kappa[starts-with(concat(@content,"-"),"this-")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[not(following-sibling::*)]//epsilon[@xml:id="id8"][not(following-sibling::*)]//omicron[@delete][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[@att][@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]] + + + mu + 0 + @@ -15717,6 +18407,11 @@ //rho[@xml:lang="en"]//omega[@xml:id="id1"][not(preceding-sibling::*)][not(preceding-sibling::omega)]//theta[@xml:lang="nb"][@xml:id="id2"]/epsilon[@object][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::zeta[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="no-nb"][not(following-sibling::*)]]] + + + epsilon + 0 + @@ -15733,6 +18428,11 @@ //epsilon/alpha//rho[@string][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[starts-with(@number,"_bla")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::omicron[not(following-sibling::*)]]] + + + kappa + 0 + @@ -15749,6 +18449,11 @@ //epsilon[@xml:lang="en-GB"][@xml:id="id1"]/sigma[@string="solid 1px green"][@xml:lang="en-US"][@xml:id="id2"][following-sibling::pi[@xml:id="id3"][following-sibling::*[position()=2]][following-sibling::zeta[preceding-sibling::*[position() = 2]][following-sibling::alpha[@string]/kappa[contains(@content,"ank")][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]//omega[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::omega)]/nu[@xml:lang="no"][not(preceding-sibling::*)]//epsilon[@or][@xml:lang="en-GB"][@xml:id="id6"]/lambda[not(preceding-sibling::*)][following-sibling::delta[@delete][preceding-sibling::*[position() = 1]][following-sibling::nu[@object][@xml:id="id7"][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 3]]/omega[@xml:id="id8"][not(preceding-sibling::*)]//delta[@xml:lang="no-nb"][not(preceding-sibling::*)]//pi[not(preceding-sibling::*)][following-sibling::phi[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::phi[preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]] + + + sigma + 0 + @@ -15783,6 +18488,11 @@ //theta[@or="this-is-att-value"]//beta[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::omega[starts-with(@attr,"at")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[starts-with(@desciption,"solid 1px gre")][@xml:lang="en-US"]//epsilon[@true][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::gamma[contains(@data,"234")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//zeta[@content][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::upsilon[contains(@number,"attribute valu")][@xml:id="id5"]//theta[@xml:id="id6"][not(child::node())][following-sibling::theta[contains(concat(@false,"$"),"e$")][following-sibling::chi//beta[contains(concat(@attribute,"$"),"100%$")]//iota[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)]/phi[@token][@xml:lang="nb"][@xml:id="id8"][not(following-sibling::*)][not(preceding-sibling::phi)]/zeta[@xml:lang="en-US"]/omicron[@xml:id="id9"][not(preceding-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + beta + 0 + @@ -15818,6 +18528,11 @@ //sigma[@xml:lang="no"]//eta[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:lang="en-US"]/eta//rho[@insert="_blank"][not(preceding-sibling::*)][not(following-sibling::*)]] + + + theta + 0 + @@ -15835,6 +18550,11 @@ //xi[@class][@xml:lang="en-GB"]/theta[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[starts-with(concat(@data,"-"),"attribute value-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]/omicron[@xml:lang="en-US"][not(child::node())][following-sibling::zeta[@delete][@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]]/pi[contains(@false,"olid 1px green")][@xml:lang="nb"][not(following-sibling::*)]//zeta[@token="attribute value"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[following-sibling::rho[@attribute="solid 1px green"]/*[@false][@xml:lang="no"]//delta[contains(concat(@or,"$"),"_blank$")][not(preceding-sibling::*)]//iota[starts-with(@token,"att")][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:id="id2"][not(child::node())][following-sibling::tau[@data][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::upsilon[contains(concat(@src,"$"),"false$")][preceding-sibling::*[position() = 3]][following-sibling::kappa//epsilon[@or="this-is-att-value"][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::*[contains(@class,"bute value")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]]]]]] + + + nu + 0 + @@ -15871,6 +18591,11 @@ //phi[@and="this.nodeValue"][@xml:id="id1"]//chi[@xml:id="id2"][not(preceding-sibling::*)]//psi[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::iota[@src][@xml:lang="en"][following-sibling::*[position()=3]][following-sibling::rho[starts-with(concat(@number,"-"),"true-")][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::eta[@delete][@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][following-sibling::beta[contains(@attribute,"100")][@xml:id="id5"][preceding-sibling::*[position() = 4]]//psi[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[@false="attribute-value"][@xml:lang="nb"]/kappa[@xml:id="id7"][following-sibling::xi[@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 1]]/tau[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[starts-with(@true,"attri")][@xml:lang="no"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/*[following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[@xml:id="id11"][not(preceding-sibling::*)][following-sibling::alpha[starts-with(concat(@name,"-"),"false-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[@false="true"][@xml:lang="nb"][following-sibling::rho[@name][@xml:lang="nb"][@xml:id="id12"][preceding-sibling::*[position() = 3]][following-sibling::zeta[@xml:id="id13"][following-sibling::*[position()=1]][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]/alpha[@xml:lang="no"][not(preceding-sibling::alpha)]/zeta[@xml:id="id14"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -15911,6 +18636,11 @@ //alpha[contains(@number," 1px gre")]/eta[not(child::node())][following-sibling::iota[@xml:lang="en"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::nu[@object][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//psi[@attrib][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::nu[@delete][preceding-sibling::*[position() = 1]]//beta/tau[@xml:id="id3"]/chi[starts-with(concat(@true,"-"),"content-")][@xml:id="id4"][not(preceding-sibling::*)]/phi[@xml:id="id5"][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]]//iota[not(following-sibling::*)]/upsilon[contains(concat(@name,"$"),"k$")]/eta[@data="attribute"][not(child::node())][following-sibling::tau[@xml:id="id7"][preceding-sibling::*[position() = 1]]//eta[@token="attribute-value"][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::kappa[@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@xml:id="id9"][preceding-sibling::*[position() = 2]]//lambda[@desciption="123456789"]/gamma[@attr][@xml:id="id10"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@xml:id="id11"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]]] + + + eta + 0 + @@ -15951,6 +18681,11 @@ //epsilon[starts-with(@insert,"fa")][@xml:lang="en-US"][@xml:id="id1"]/eta[contains(concat(@class,"$"),"e$")][@xml:lang="en"]//nu[starts-with(concat(@string,"-"),"this-")][@xml:id="id2"][following-sibling::alpha[contains(concat(@name,"$"),"tribute$")][@xml:lang="en-US"][following-sibling::upsilon[preceding-sibling::*[position() = 2]]//nu[not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="en-GB"][not(child::node())][following-sibling::zeta[starts-with(@class,"con")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 3]][not(following-sibling::*)]/omicron[following-sibling::iota[not(child::node())][following-sibling::theta[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::sigma[@xml:id="id4"][not(child::node())][following-sibling::alpha[@xml:id="id5"][following-sibling::sigma[starts-with(@content,"10")][@xml:id="id6"][not(child::node())][following-sibling::omicron[@content="true"][@xml:id="id7"][position() = 1]]]][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -15978,6 +18713,11 @@ //xi[@xml:id="id1"]//iota[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[preceding-sibling::*[position() = 1]]//delta[@insert][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@data][@xml:lang="no-nb"][not(following-sibling::*)]//lambda[@xml:id="id2"][following-sibling::epsilon[@insert][@xml:lang="no"][preceding-sibling::*[position() = 1]]/phi[@xml:id="id3"][not(preceding-sibling::*)]//rho[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="en-US"][not(child::node())][following-sibling::psi[@name][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@xml:lang="en"][not(following-sibling::*)]//omicron[starts-with(@attr,"c")]/upsilon[contains(concat(@name,"$")," 1px green$")][@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]/delta[not(following-sibling::*)]/beta[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::omicron[@content][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[contains(concat(@token,"$"),"ue$")][@xml:id="id7"][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]]] + + + iota + 0 + @@ -16014,6 +18754,11 @@ //theta[contains(@string,"ontent")][@xml:lang="nb"]//iota[contains(@token,"t-v")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@xml:id="id1"]//kappa[@xml:id="id2"][not(preceding-sibling::*)]//beta[@attribute="this-is-att-value"][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[starts-with(concat(@true,"-"),"solid 1px green-")][@xml:id="id4"][following-sibling::omega[@and="attribute"][@xml:lang="no"][not(following-sibling::*)]//pi[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]] + + + zeta + 0 + @@ -16035,6 +18780,11 @@ //omega[@xml:lang="en-US"]//alpha[@xml:id="id1"][not(preceding-sibling::*)]/delta[@xml:id="id2"][following-sibling::alpha[starts-with(concat(@src,"-"),"this-")][@xml:lang="en"][@xml:id="id3"][following-sibling::*[position()=3]][following-sibling::beta[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::*[preceding-sibling::*[position() = 3]][following-sibling::epsilon[starts-with(concat(@attribute,"-"),"solid 1px green-")][not(following-sibling::*)]//sigma[@class][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:id="id5"][preceding-sibling::*[position() = 1]]/kappa[@delete="123456789"][@xml:lang="no"][following-sibling::epsilon[@xml:id="id6"][not(following-sibling::*)]/kappa[@xml:id="id7"][not(following-sibling::*)]/sigma[contains(@attr,"12345")][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[preceding-sibling::*[position() = 1]]/eta[@false][@xml:lang="en-GB"][@xml:id="id8"][not(child::node())][following-sibling::xi[starts-with(concat(@and,"-"),"another attribute value-")][@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)]//*[contains(concat(@title,"$"),"tribute value$")][not(preceding-sibling::*)][not(following-sibling::any)][following-sibling::omega[@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::kappa[@class="attribute"][@xml:id="id11"][preceding-sibling::*[position() = 2]][following-sibling::psi[@true="another attribute value"][@xml:id="id12"][not(child::node())][following-sibling::nu[contains(concat(@src,"$"),"false$")][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::psi[@xml:id="id13"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + delta + 0 + @@ -16072,6 +18822,11 @@ //theta[@attribute][@xml:id="id1"]//nu[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 1]]//*[starts-with(concat(@attr,"-"),"_blank-")][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]/omicron[contains(@delete,"ther attribute value")][@xml:id="id3"]/pi[@xml:lang="no"]//kappa[@xml:lang="en"][@xml:id="id4"]//delta[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[not(following-sibling::*)][not(following-sibling::iota)]/eta[starts-with(concat(@delete,"-"),"solid 1px green-")][@xml:lang="nb"][not(child::node())][following-sibling::*[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[starts-with(concat(@attrib,"-"),"solid 1px green-")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[not(preceding-sibling::*)][not(following-sibling::*)]/lambda[contains(@or,"alse")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]]] + + + nu + 0 + @@ -16104,6 +18859,11 @@ //iota[contains(@data,"ank")][@xml:id="id1"]//*[@xml:id="id2"][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[following-sibling::*[@title][@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]//psi[@xml:id="id4"]//chi[@xml:id="id5"][not(child::node())][following-sibling::kappa[contains(@desciption,"%")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]]//psi[@class][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="no"]//omicron[starts-with(@abort,"1")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[@name="false"][@xml:lang="no"][not(preceding-sibling::*)]//zeta[@content][@xml:lang="nb"]/psi[@att="content"][@xml:lang="en"][@xml:id="id9"][following-sibling::rho[@xml:id="id10"][not(following-sibling::*)]/kappa[@xml:lang="en-US"]//lambda[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::pi[starts-with(@string,"at")][@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 1]]/kappa[starts-with(@number,"th")][@xml:id="id12"]//mu[@xml:id="id13"][not(preceding-sibling::mu)][following-sibling::kappa[not(preceding-sibling::kappa)]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + any + 0 + @@ -16147,6 +18907,11 @@ //pi[@xml:id="id1"]//lambda[@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::rho[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[@object="this.nodeValue"][@xml:lang="en-GB"][not(following-sibling::*)]/gamma[contains(concat(@delete,"$"),"tribute-value$")][@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]/mu[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::sigma[@and][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:lang="en-US"][following-sibling::phi[@attrib][@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 3]]//alpha/*[starts-with(@and,"this-is-at")][@xml:id="id7"][following-sibling::eta[@xml:id="id8"]//epsilon[contains(@token,"gree")][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@false][@xml:lang="no-nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]]//sigma[@xml:lang="en-GB"][not(following-sibling::*)]//gamma[@xml:lang="en-GB"][not(child::node())][following-sibling::theta[starts-with(concat(@attrib,"-"),"solid 1px green-")][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@xml:id="id12"][preceding-sibling::*[position() = 2]]//xi[@xml:lang="en-US"][not(preceding-sibling::*)]/omega[starts-with(@token,"this.nodeV")][not(child::node())][following-sibling::lambda[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[starts-with(concat(@delete,"-"),"another attribute value-")][@xml:lang="en-US"][not(following-sibling::*)]//epsilon[position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]] + + + lambda + 0 + @@ -16190,6 +18955,11 @@ //omicron[starts-with(@att,"attribute value")]//mu[@xml:lang="en-GB"][@xml:id="id1"][not(child::node())][following-sibling::beta//sigma[@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::delta[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[starts-with(@or,"tru")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::mu[starts-with(concat(@attrib,"-"),"attribute value-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 4]][following-sibling::rho[@att][@xml:lang="en-GB"][following-sibling::iota[@name][not(following-sibling::*)]//lambda[@desciption][@xml:id="id4"][not(preceding-sibling::*)]/tau[contains(@false,"0%")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="en-US"][not(child::node())][following-sibling::epsilon/chi[@token][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::kappa[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="no"]/lambda[@attrib]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]]]]] + + + mu + 0 + @@ -16221,6 +18991,11 @@ //zeta[@xml:lang="no"]/pi[not(following-sibling::*)]//chi[@attrib][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::sigma[@attribute][@xml:lang="en-US"][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[starts-with(concat(@attr,"-"),"content-")][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:id="id3"][preceding-sibling::*[position() = 3]]//mu[@xml:id="id4"][not(child::node())][following-sibling::theta[@number="attribute-value"][@xml:id="id5"][following-sibling::rho[starts-with(@number,"solid 1px gre")][@xml:id="id6"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -16240,6 +19015,11 @@ //alpha[@false][@xml:lang="no-nb"]//theta[@false][@xml:id="id1"][following-sibling::delta[preceding-sibling::*[position() = 1]][following-sibling::mu[starts-with(@and,"this.n")][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/kappa[@xml:lang="en"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::psi[starts-with(concat(@class,"-"),"attribute value-")][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[following-sibling::theta[starts-with(concat(@delete,"-"),"this-")][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::sigma[@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@number][@xml:lang="no-nb"][preceding-sibling::*[position() = 3]]//theta[@xml:lang="no"][@xml:id="id7"]//nu[@attr][not(child::node())][following-sibling::omega[starts-with(@delete,"cont")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[@xml:lang="en"][@xml:id="id8"]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + theta + 0 + @@ -16266,6 +19046,11 @@ //xi//gamma[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::kappa[@xml:id="id1"][following-sibling::rho[starts-with(@title,"100")][following-sibling::lambda[starts-with(concat(@true,"-"),"another attribute value-")][@xml:lang="en-GB"][@xml:id="id2"]//gamma[@token][not(child::node())][following-sibling::psi[starts-with(concat(@insert,"-"),"100%-")][@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]/tau[starts-with(concat(@number,"-"),"attribute-")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::tau[@xml:id="id5"][following-sibling::*[position()=2]][following-sibling::upsilon[@class][@xml:lang="en-US"][following-sibling::upsilon[not(following-sibling::*)]//sigma[starts-with(concat(@or,"-"),"true-")][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@class][@xml:id="id7"][not(following-sibling::*)]//omega[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[contains(concat(@false,"$"),"ue$")][@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)]//beta[starts-with(@content,"fa")][@xml:id="id9"][not(following-sibling::*)]//upsilon[contains(@att,"ut")][not(preceding-sibling::*)]//beta[@name="false"][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::pi[@xml:lang="no"][@xml:id="id11"][position() = 1]][position() = 1]][position() = 1]]]]]][position() = 1]]][position() = 1]] + + + gamma + 0 + @@ -16302,6 +19087,11 @@ //chi/delta[@object="123456789"][@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]//pi[contains(concat(@attrib,"$"),"e$")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[contains(@false,"e")][@xml:id="id3"][not(following-sibling::*)]//chi[@or][not(following-sibling::*)]/zeta[starts-with(@data,"t")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::gamma[starts-with(concat(@number,"-"),"solid 1px green-")][not(following-sibling::*)]/chi[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[not(following-sibling::*)]/rho[@att="content"][@xml:id="id6"][not(following-sibling::*)]/sigma[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[starts-with(@attribute,"this-is")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@object][following-sibling::*[position()=1]][following-sibling::chi[@class][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//psi[@class][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@src][@xml:id="id8"]/omicron[@attrib][@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][position() = 1]]][position() = 1]]] + + + zeta + 0 + @@ -16338,6 +19128,11 @@ //theta[@data][@xml:id="id1"]//gamma[@attrib="solid 1px green"][not(preceding-sibling::*)]//psi[@xml:lang="no"][not(preceding-sibling::*)]/psi[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@delete][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[@attribute="attribute-value"][@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]] + + + xi + 0 + @@ -16356,6 +19151,11 @@ //phi[starts-with(concat(@number,"-"),"this.nodeValue-")][@xml:lang="en-GB"][@xml:id="id1"]//epsilon[@xml:id="id2"][not(following-sibling::*)]/sigma[@xml:lang="no"][following-sibling::sigma[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::xi[@attrib][@xml:id="id4"][not(following-sibling::*)]//gamma[@xml:lang="no-nb"][@xml:id="id5"]/zeta[@xml:lang="en-US"][not(preceding-sibling::*)]//zeta[contains(@abort,"lue")][@xml:id="id6"][not(child::node())][following-sibling::nu[@delete][@xml:lang="no"][following-sibling::sigma[starts-with(@att,"conte")][@xml:id="id7"][not(following-sibling::*)]//omicron[starts-with(concat(@src,"-"),"attribute value-")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@data][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@xml:lang="no-nb"]//pi[@xml:id="id8"][not(following-sibling::*)]//beta[@attribute][@xml:lang="no"][following-sibling::*[position()=3]][not(child::node())][following-sibling::xi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::omicron[starts-with(@name,"anot")][@xml:lang="en-US"][following-sibling::*[position()=1]][not(following-sibling::omicron)][following-sibling::chi[@name][not(following-sibling::*)]//kappa[@xml:lang="nb"][@xml:id="id9"][not(following-sibling::*)]/xi[starts-with(concat(@content,"-"),"attribute-")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -16395,6 +19195,11 @@ //omega[starts-with(@abort,"attribut")]//tau[contains(@or,"bute ")][@xml:id="id1"]/eta[not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:lang="en-US"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::chi[contains(@attribute,"e")][@xml:lang="no"][not(following-sibling::*)]//zeta[contains(@object,"ntent")][@xml:lang="en-GB"]/epsilon[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[contains(concat(@src,"$"),"se$")][@xml:lang="en-US"][not(preceding-sibling::*)]/tau[@xml:id="id3"]//theta[starts-with(@src,"fa")][@xml:id="id4"][following-sibling::psi[contains(@content,"lue")][not(following-sibling::*)]][position() = 1]] + + + iota + 0 + @@ -16421,6 +19226,11 @@ //kappa[@xml:lang="no-nb"]//zeta[starts-with(concat(@attr,"-"),"solid 1px green-")][@xml:lang="no"][not(following-sibling::*)]/alpha[contains(@attrib,"alue")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//delta[contains(@object,"n")][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::eta[@xml:id="id4"][preceding-sibling::*[position() = 1]]/alpha[@object][@xml:id="id5"][not(preceding-sibling::*)]//chi[starts-with(concat(@delete,"-"),"this-")][@xml:lang="no-nb"][@xml:id="id6"][following-sibling::eta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[starts-with(@content,"fa")][@xml:lang="en"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::kappa[@xml:lang="en-US"][@xml:id="id8"]/chi[@xml:id="id9"][not(child::node())][following-sibling::alpha[not(child::node())][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id10"][not(following-sibling::kappa)][not(child::node())][following-sibling::delta[@attr][@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + alpha + 0 + @@ -16449,6 +19259,11 @@ //tau[@xml:lang="en-US"][@xml:id="id1"]//xi[@object="true"][@xml:id="id2"][not(preceding-sibling::*)]/alpha[contains(@false,"fa")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[contains(@class,"value")][@xml:lang="no"][preceding-sibling::*[position() = 1]]/theta[starts-with(@number,"12345678")][@xml:lang="en-US"][following-sibling::upsilon[contains(@object,"e")][@xml:id="id3"]//theta[not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:id="id4"][not(following-sibling::*)]//upsilon[starts-with(concat(@insert,"-"),"this.nodeValue-")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::tau[contains(@content,"is-is-att")][@xml:id="id5"]]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -16471,6 +19286,11 @@ //alpha//nu[starts-with(concat(@string,"-"),"_blank-")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::nu)]/rho[starts-with(@content,"conten")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/pi[@data][@xml:lang="nb"][not(child::node())][following-sibling::theta[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]//beta[@xml:id="id5"][following-sibling::gamma[contains(concat(@and,"$"),"nt$")][@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]/nu[@xml:lang="en"][not(preceding-sibling::*)][position() = 1]][position() = 1]]] + + + rho + 0 + @@ -16492,6 +19312,11 @@ //eta[@xml:lang="en"]//sigma[@or][@xml:lang="no"][not(following-sibling::*)]//delta[contains(concat(@data,"$"),"tent$")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::pi[starts-with(concat(@false,"-"),"attribute-")][following-sibling::*[position()=2]][following-sibling::omega[preceding-sibling::*[position() = 3]][following-sibling::epsilon[contains(concat(@attrib,"$"),"this.nodeValue$")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//rho[@number="100%"][not(preceding-sibling::*)][following-sibling::mu[@attr][@xml:id="id4"][preceding-sibling::*[position() = 1]]//iota[@xml:id="id5"][not(following-sibling::*)]//epsilon[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:lang="nb"][not(following-sibling::*)]/phi[@attr][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -16519,6 +19344,11 @@ //lambda[@src="solid 1px green"][@xml:id="id1"]//eta[@xml:id="id2"][not(preceding-sibling::*)]//omega[@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[contains(concat(@or,"$"),"_blank$")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::sigma[@xml:id="id4"][preceding-sibling::*[position() = 2]]/zeta[@attrib][not(following-sibling::*)][position() = 1]][position() = 1]] + + + omega + 0 + @@ -16535,6 +19365,11 @@ //sigma//kappa[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)]//phi[contains(concat(@insert,"$"),"lid 1px green$")][@xml:lang="no-nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::beta[@or][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::omicron[@attrib="content"][@xml:id="id4"][following-sibling::nu//gamma[@xml:lang="en-US"][not(preceding-sibling::*)]//kappa[starts-with(@data,"attribut")][@xml:lang="no"][not(following-sibling::*)][position() = 1]]]][position() = 1]]] + + + phi + 0 + @@ -16558,6 +19393,11 @@ //upsilon[@and="another attribute value"][@xml:lang="no"][@xml:id="id1"]/lambda[@src][@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]//xi[@string][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[contains(concat(@class,"$"),"olid 1px green$")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=5]][following-sibling::upsilon[@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::kappa[@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::upsilon[@xml:lang="en"][@xml:id="id7"][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@xml:lang="no-nb"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//omega[contains(@attribute,"e")][@xml:lang="en-GB"]/upsilon[@xml:id="id8"][not(preceding-sibling::*)]/nu[starts-with(concat(@attrib,"-"),"solid 1px green-")][@xml:lang="no"][following-sibling::iota//sigma[@xml:id="id9"][following-sibling::nu[@xml:lang="en-GB"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]]] + + + mu + 0 + @@ -16587,6 +19427,11 @@ //eta//epsilon[@and="123456789"][@xml:id="id1"]/chi[@delete][@xml:id="id2"][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[starts-with(concat(@attrib,"-"),"123456789-")][not(preceding-sibling::*)]/iota[contains(concat(@delete,"$"),"e$")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@xml:id="id5"][preceding-sibling::*[position() = 1]]//eta[@name][@xml:id="id6"][not(preceding-sibling::*)]//zeta[starts-with(concat(@desciption,"-"),"_blank-")][@xml:id="id7"]//gamma[@attrib][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@and="true"][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]]//phi/chi[starts-with(@content,"a")][@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@attrib][@xml:id="id10"][following-sibling::upsilon[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/nu[contains(@token,"e ")][@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@object="solid 1px green"][@xml:lang="en"][@xml:id="id12"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[contains(@string,"ute value")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/*[@xml:lang="en-US"][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + chi + 0 + @@ -16630,6 +19475,11 @@ //nu[@data]//beta[starts-with(@title,"attribute v")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::iota[following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[@att="attribute value"][following-sibling::iota[@attribute][not(following-sibling::*)]/upsilon[starts-with(@attr,"t")][@xml:id="id1"][not(preceding-sibling::*)]//theta[contains(@title,"10")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[starts-with(concat(@title,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]/theta[contains(concat(@abort,"$"),"e$")][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@true][not(child::node())][following-sibling::beta[contains(@delete,"ue")][@xml:lang="no"]//lambda[@xml:id="id4"][not(following-sibling::*)]/xi[@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]/lambda[@true][not(following-sibling::*)]/pi[not(following-sibling::pi)]//sigma[starts-with(@object,"attribute valu")][@xml:lang="no-nb"][not(preceding-sibling::*)]/tau[@xml:lang="no-nb"][not(following-sibling::*)]//psi[@true="true"][@xml:lang="en"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -16667,6 +19517,11 @@ //nu[@title="this-is-att-value"][@xml:id="id1"]//beta[@abort="123456789"][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::phi[@xml:lang="no"]/upsilon[contains(@class,"fal")][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]//gamma[@xml:lang="en-US"][not(following-sibling::*)]/iota[@xml:id="id3"][not(child::node())][following-sibling::beta[@class][@xml:lang="nb"][following-sibling::theta[not(following-sibling::*)]/theta[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]//psi[@xml:id="id5"]/upsilon[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::zeta[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::phi[starts-with(@true,"solid ")][@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[starts-with(concat(@src,"-"),"attribute value-")][not(following-sibling::*)]//zeta[contains(concat(@insert,"$"),"e$")][not(preceding-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]] + + + beta + 0 + @@ -16697,6 +19552,11 @@ //gamma[contains(concat(@delete,"$"),"%$")][@xml:id="id1"]//alpha[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::delta[contains(concat(@attribute,"$"),"attribute$")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//tau[contains(concat(@string,"$"),"alue$")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@and][@xml:id="id5"][not(preceding-sibling::*)]/phi[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[contains(concat(@data,"$"),"e$")][not(child::node())][following-sibling::upsilon[starts-with(@title,"attribute va")][@xml:lang="nb"][not(following-sibling::*)]//nu[starts-with(concat(@or,"-"),"false-")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 2]]/epsilon[contains(concat(@src,"$"),"attribute$")][@xml:id="id8"][following-sibling::pi[contains(concat(@src,"$"),"alue$")][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::gamma[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::epsilon[@xml:lang="en-US"][preceding-sibling::*[position() = 4]]//delta[starts-with(concat(@content,"-"),"100%-")][@xml:lang="en"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::omega[contains(concat(@false,"$"),"e$")][@xml:id="id12"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="en-US"][@xml:id="id13"][preceding-sibling::*[position() = 2]][following-sibling::gamma[contains(concat(@number,"$"),"789$")][@xml:lang="nb"][@xml:id="id14"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//kappa[starts-with(@src,"attribute va")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[contains(concat(@att,"$"),"eValue$")][@xml:id="id15"][preceding-sibling::*[position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -16734,6 +19594,11 @@ //lambda[starts-with(concat(@att,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id1"]//rho[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[contains(@abort,"e")][not(following-sibling::*)]//delta[starts-with(concat(@desciption,"-"),"this.nodeValue-")][not(preceding-sibling::*)]/phi[@token][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@class,"$"),"789$")][@xml:id="id3"][not(child::node())][following-sibling::pi[contains(concat(@class,"$"),"e$")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/kappa[not(child::node())][following-sibling::eta[@xml:id="id4"][preceding-sibling::*[position() = 1]]/psi[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[contains(concat(@class,"$"),"e$")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[not(preceding-sibling::*)][not(child::node())][following-sibling::nu[contains(concat(@attribute,"$"),"tribute-value$")][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[@xml:id="id7"]/gamma[contains(concat(@att,"$"),"6789$")][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@true="100%"][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)]/omicron[not(preceding-sibling::*)]/sigma[@desciption="attribute"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::sigma[@content="content"][@xml:id="id11"][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//iota[@src][@xml:lang="en-GB"][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/kappa[@true][@xml:id="id12"][not(following-sibling::*)]/delta[@name][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + rho + 0 + @@ -16779,6 +19644,11 @@ //lambda[@name][@xml:id="id1"]//omega[@xml:lang="no-nb"][following-sibling::psi[contains(@delete,"r attr")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@attribute][@xml:id="id2"][preceding-sibling::*[position() = 2]]/zeta[starts-with(concat(@number,"-"),"false-")][@xml:lang="en"][not(following-sibling::*)]/beta[starts-with(@abort,"100")][not(following-sibling::beta)]//chi[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::omega[following-sibling::iota[contains(@string,"lse")][@xml:lang="en"][@xml:id="id4"]/phi[@xml:id="id5"][not(following-sibling::*)]//gamma[@xml:lang="en-US"][@xml:id="id6"][following-sibling::alpha[@xml:lang="en-GB"][not(child::node())][following-sibling::psi[@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[starts-with(concat(@number,"-"),"attribute-")][@xml:id="id8"]//omicron[contains(@true,"e")][@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::omicron)]/mu[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omicron[contains(@desciption,"6789")][preceding-sibling::*[position() = 1]][following-sibling::kappa[@xml:id="id10"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/tau[starts-with(concat(@or,"-"),"attribute-")][@xml:lang="en-US"][not(child::node())][following-sibling::beta[position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -16815,6 +19685,11 @@ //lambda[@xml:id="id1"]/beta[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::zeta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@att][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::rho[@name][@xml:id="id5"][preceding-sibling::*[position() = 3]]//pi[@xml:id="id6"]/gamma[starts-with(concat(@false,"-"),"attribute-")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[starts-with(@abort,"_bl")][@xml:lang="en"][@xml:id="id7"][following-sibling::gamma[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omega[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[starts-with(@title,"solid 1px ")][@xml:id="id9"]//zeta[not(child::node())][following-sibling::zeta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[starts-with(@abort,"this")][@xml:lang="no-nb"][following-sibling::*[position()=3]][following-sibling::eta[@attr="attribute"][preceding-sibling::*[position() = 3]][following-sibling::epsilon[preceding-sibling::*[position() = 4]][following-sibling::gamma[@desciption][@xml:lang="no"][preceding-sibling::*[position() = 5]][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]]]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -16847,6 +19722,11 @@ //tau[starts-with(concat(@desciption,"-"),"100%-")][@xml:lang="no"]/phi[@xml:lang="en"][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id1"][following-sibling::sigma[starts-with(concat(@or,"-"),"true-")][@xml:lang="en"][@xml:id="id2"]/pi[@insert="123456789"][@xml:lang="no-nb"][not(following-sibling::*)]//pi[@att][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::zeta[preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:lang="en"][preceding-sibling::*[position() = 2]]/lambda[@name][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)]][position() = 1]]]] + + + phi + 0 + @@ -16867,6 +19747,11 @@ //phi//delta[starts-with(@data,"_bl")][not(preceding-sibling::*)][not(following-sibling::*)]/phi[contains(concat(@class,"$"),"id 1px green$")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[starts-with(@class,"fa")][@xml:id="id2"][not(following-sibling::*)]//beta[contains(concat(@class,"$"),"ribute$")][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[starts-with(concat(@insert,"-"),"true-")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="nb"][not(child::node())][following-sibling::theta[@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/chi[starts-with(@number,"10")][@xml:lang="en"][not(preceding-sibling::*)]//delta[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[starts-with(concat(@title,"-"),"true-")][@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)]/nu[contains(concat(@data,"$"),"odeValue$")][@xml:lang="no-nb"][not(following-sibling::*)]/upsilon[@xml:lang="en-US"]/phi[contains(@title,"odeV")][@xml:id="id7"][not(preceding-sibling::*)]//phi[starts-with(concat(@delete,"-"),"content-")][not(preceding-sibling::*)]/omega[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:lang="no"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::eta[@xml:lang="en-US"][preceding-sibling::*[position() = 2]]/mu[@xml:id="id9"]/gamma[contains(concat(@att,"$"),"ank$")][@xml:id="id10"][not(following-sibling::*)]//sigma[@attrib][@xml:id="id11"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(@content,"tr")][@xml:lang="en"][not(following-sibling::*)]//chi[@xml:lang="en"][not(preceding-sibling::*)][not(preceding-sibling::chi)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -16913,6 +19798,11 @@ //gamma[@and][@xml:lang="en-US"][@xml:id="id1"]//delta[@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa[@xml:lang="en"][not(following-sibling::*)]/delta[contains(@data,"is.no")][@xml:id="id3"][not(preceding-sibling::*)]/eta[starts-with(@name,"this.node")][@xml:id="id4"]//*[starts-with(concat(@content,"-"),"this.nodeValue-")][not(following-sibling::*)]/rho[@string="solid 1px green"][@xml:lang="en-US"][following-sibling::*[position()=1]][not(preceding-sibling::rho)][following-sibling::epsilon[contains(@token,"attribute")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[@xml:lang="en-US"][not(preceding-sibling::*)]//sigma[@abort][not(following-sibling::*)]]] + + + delta + 0 + @@ -16937,6 +19827,11 @@ //theta[@or][@xml:lang="nb"]//lambda[@src][@xml:id="id1"]/omega[contains(concat(@abort,"$"),"olid 1px green$")][@xml:lang="en"]/epsilon[not(preceding-sibling::*)][following-sibling::omega[contains(concat(@class,"$"),"ute-value$")][preceding-sibling::*[position() = 1]][following-sibling::iota[@xml:id="id2"][not(following-sibling::*)]/rho[@xml:lang="no-nb"][not(preceding-sibling::*)][not(preceding-sibling::rho)]/tau[@true][following-sibling::beta[not(child::node())][following-sibling::iota[starts-with(concat(@object,"-"),"100%-")][@xml:lang="no"][not(following-sibling::*)]//nu[@attrib][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::iota//omicron[@title][not(following-sibling::*)]//*[@xml:id="id4"][not(preceding-sibling::*)][not(preceding-sibling::any)]//psi[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::zeta[preceding-sibling::*[position() = 1]]/mu[@string][@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)]/rho[@xml:id="id7"][not(child::node())][following-sibling::*[not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]] + + + epsilon + 0 + @@ -16975,6 +19870,11 @@ //beta[@xml:lang="no"][@xml:id="id1"]//iota[contains(@true,"eVal")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::tau[@or][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::zeta[@token][@xml:lang="no"][following-sibling::upsilon[@false][@xml:id="id3"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//pi[@xml:id="id4"][not(preceding-sibling::*)][not(preceding-sibling::pi)]//phi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::lambda[@xml:id="id5"][preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -16994,6 +19894,11 @@ //zeta[@xml:lang="en-US"]//psi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@token][@xml:lang="en-US"][not(following-sibling::*)]/rho[not(preceding-sibling::rho)][following-sibling::epsilon[@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omicron[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[contains(concat(@and,"$"),"ntent$")][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@xml:lang="no-nb"]]] + + + rho + 0 + @@ -17014,6 +19919,11 @@ //epsilon[@xml:lang="nb"]/delta[not(child::node())][following-sibling::gamma[contains(@attr,"tt")][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/pi[contains(concat(@delete,"$"),"te$")][@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]/kappa[contains(@string,"t")][@xml:id="id4"][not(following-sibling::kappa)]/chi[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="nb"][@xml:id="id6"]/chi[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[@att][@xml:lang="en"][not(preceding-sibling::psi or following-sibling::psi)][not(child::node())][following-sibling::upsilon[starts-with(concat(@title,"-"),"this-")][@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::*[@number="solid 1px green"][@xml:lang="no-nb"][@xml:id="id9"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::kappa[@name][preceding-sibling::*[position() = 3]][following-sibling::alpha[@content="attribute value"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//omega[contains(concat(@attribute,"$"),"ibute$")][@xml:lang="en-US"][@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@object][@xml:lang="en-US"][@xml:id="id11"][preceding-sibling::*[position() = 1]]/sigma[@xml:lang="en-US"][@xml:id="id12"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::epsilon[@abort]//*[contains(concat(@or,"$"),"blank$")][@xml:lang="no-nb"][@xml:id="id13"][not(preceding-sibling::*)][following-sibling::kappa[@xml:lang="nb"][@xml:id="id14"][not(child::node())][following-sibling::beta[@att][@xml:lang="en-US"][@xml:id="id15"][following-sibling::tau[@xml:lang="no-nb"][@xml:id="id16"][preceding-sibling::*[position() = 3]][following-sibling::omega[@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]]][position() = 1]]][position() = 1]] + + + delta + 0 + @@ -17054,6 +19964,11 @@ //rho[starts-with(@attrib,"a")][@xml:lang="no"]/tau[contains(@attr,"se")][not(child::node())][following-sibling::kappa[@xml:id="id1"]//pi[starts-with(@false,"this-is-att-valu")]/rho[not(following-sibling::*)]//eta[@attrib="attribute value"][not(preceding-sibling::*)][following-sibling::psi[@number="attribute value"][@xml:lang="en-US"][not(following-sibling::*)]//epsilon[@data="attribute"][@xml:lang="en-US"][@xml:id="id2"][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 1]]//theta[@att="100%"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="no-nb"][@xml:id="id4"]/omicron[not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[contains(@insert,"ibute")][preceding-sibling::*[position() = 1]]/omicron[contains(concat(@and,"$"),"e$")][@xml:lang="no-nb"][not(child::node())][following-sibling::*[starts-with(@attribute,"t")]/tau[starts-with(concat(@object,"-"),"attribute-")][@xml:lang="no-nb"][not(child::node())][following-sibling::psi[@xml:lang="en-US"][following-sibling::kappa[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//gamma[not(following-sibling::*)]//phi[@xml:lang="en-GB"][@xml:id="id5"]//upsilon[starts-with(@attr,"10")][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::eta[preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:id="id7"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]][position() = 1]]]]]]] + + + tau + 0 + @@ -17097,6 +20012,11 @@ //omicron[@xml:lang="no-nb"]/rho[@xml:lang="en-US"][not(preceding-sibling::*)]/omega[@xml:lang="en-US"][@xml:id="id1"][following-sibling::theta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@xml:lang="no"][@xml:id="id3"][following-sibling::theta[not(following-sibling::*)]/omega[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[starts-with(@abort,"attribute-valu")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::pi[starts-with(@att,"_")][@xml:id="id4"][following-sibling::xi[starts-with(@number,"at")][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::iota[@data="attribute value"][@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="en-GB"][not(following-sibling::*)]//mu[following-sibling::gamma[starts-with(concat(@insert,"-"),"attribute-")][@xml:lang="no-nb"]/nu[@xml:id="id6"][not(preceding-sibling::*)]//kappa[@delete="_blank"][@xml:lang="nb"][@xml:id="id7"]/iota[@false][@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::gamma[contains(concat(@attr,"$"),"lank$")][following-sibling::phi[@xml:id="id9"][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]] + + + omega + 0 + @@ -17131,6 +20051,11 @@ //mu[@insert][@xml:lang="en-US"]/kappa[@xml:lang="en-GB"][not(following-sibling::*)]/beta[@attr][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@delete="this-is-att-value"][@xml:id="id1"][preceding-sibling::*[position() = 1]]/zeta[contains(@or,"th")][@xml:id="id2"][not(following-sibling::*)]//gamma[@token][@xml:id="id3"][not(following-sibling::*)]/beta[@token][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::gamma[@name="attribute-value"][@xml:id="id4"][not(child::node())][following-sibling::delta[@false][@xml:lang="no-nb"][not(child::node())][following-sibling::phi[contains(@src,"tribute valu")][@xml:id="id5"][not(following-sibling::*)]/zeta[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[following-sibling::upsilon[@attr][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//mu[starts-with(concat(@attr,"-"),"123456789-")][@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -17161,6 +20086,11 @@ //rho[contains(concat(@false,"$"),"e$")][@xml:id="id1"]/epsilon[@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]//beta[@false="123456789"][@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/kappa//sigma[not(child::node())][following-sibling::nu[contains(@abort,"0%")][preceding-sibling::*[position() = 1]]/delta[@xml:id="id4"][not(following-sibling::*)]//upsilon[contains(concat(@attribute,"$"),"nt$")][@xml:lang="en-US"][not(preceding-sibling::*)]//delta[@xml:lang="nb"][following-sibling::*[starts-with(concat(@string,"-"),"solid 1px green-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[@insert][@xml:id="id5"]//iota[@false][@xml:lang="no"][following-sibling::xi[contains(concat(@string,"$"),"nk$")][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[contains(concat(@true,"$")," green$")][@xml:lang="no-nb"][@xml:id="id7"][not(child::node())][following-sibling::rho[@string][@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][following-sibling::xi[preceding-sibling::*[position() = 4]]//psi[not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::psi)]/omicron[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::chi[starts-with(@abort,"another attribute valu")][@xml:lang="en"][not(following-sibling::*)]/kappa[@attribute][@xml:lang="nb"][@xml:id="id9"][not(child::node())][following-sibling::beta[@name][@xml:lang="en-GB"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[@xml:id="id11"]/lambda[@attr][@xml:lang="no"][@xml:id="id12"][not(preceding-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]]]]] + + + sigma + 0 + @@ -17204,6 +20134,11 @@ //xi[@abort="attribute value"][@xml:id="id1"]/xi[@and][following-sibling::*[position()=1]][following-sibling::omega[@attrib][@xml:lang="en"][@xml:id="id2"]//omega[@attr][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[contains(@number,"is-att-value")][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 1]][following-sibling::gamma[starts-with(concat(@attrib,"-"),"another attribute value-")]/omega[@xml:lang="en-US"][following-sibling::tau[contains(@desciption,"attribute-value")][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[@insert][@xml:id="id4"][not(following-sibling::*)]/pi[@name="this-is-att-value"][@xml:id="id5"][not(following-sibling::*)]//kappa[contains(concat(@src,"$"),"is-att-value$")][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[contains(@src,"%")][@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]//zeta[@xml:id="id7"]//nu[starts-with(@attr,"fal")][@xml:lang="no"][@xml:id="id8"][not(following-sibling::*)]/omega[starts-with(concat(@delete,"-"),"attribute value-")][@xml:lang="nb"]//epsilon[@xml:lang="en-GB"][not(preceding-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]] + + + xi + 1 + @@ -17240,6 +20175,11 @@ //delta[starts-with(@delete,"this.n")][@xml:lang="en"]//eta[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::zeta[following-sibling::zeta[contains(concat(@insert,"$"),"tribute-value$")][@xml:lang="en-GB"][@xml:id="id2"]//xi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@attr][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][not(child::node())][following-sibling::lambda[starts-with(@number,"10")][@xml:id="id3"][following-sibling::*[position()=4]][following-sibling::gamma[@class="content"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::kappa[contains(concat(@token,"$"),"bute-value$")][preceding-sibling::*[position() = 4]][following-sibling::*[position()=2]][following-sibling::theta[@title="attribute-value"][@xml:lang="nb"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::zeta[@delete]/sigma[starts-with(concat(@object,"-"),"123456789-")][not(preceding-sibling::*)][following-sibling::beta[contains(@att,"this-is-att-")][not(following-sibling::*)]/*[starts-with(concat(@content,"-"),"false-")][@xml:lang="no-nb"][not(child::node())][following-sibling::tau[@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::omicron[contains(concat(@false,"$"),"23456789$")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]] + + + eta + 0 + @@ -17267,6 +20207,11 @@ //omega[starts-with(@and,"123456")][@xml:lang="en-US"]//alpha[@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]//sigma[@token="attribute value"][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="no"][following-sibling::*[position()=3]][not(child::node())][following-sibling::beta[@and="another attribute value"][@xml:id="id3"][following-sibling::psi[@attribute][@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::epsilon[contains(concat(@object,"$"),"lank$")][@xml:lang="no"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/psi[@xml:lang="en-GB"][@xml:id="id5"]/theta[@xml:lang="no-nb"][not(preceding-sibling::*)]/eta[contains(@attribute,"id 1px green")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::nu[@or][@xml:id="id6"][not(child::node())][following-sibling::nu[following-sibling::*[position()=2]][following-sibling::omicron[@xml:lang="no"][following-sibling::pi[@xml:lang="en"]/chi[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//*[@xml:lang="en-GB"][following-sibling::alpha[@xml:id="id8"][preceding-sibling::*[position() = 1]]//omicron[@content][not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 2]]//*[contains(@title,"tribute val")][@xml:lang="en-US"][not(following-sibling::*)]//delta[@xml:id="id9"][not(preceding-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]] + + + sigma + 0 + @@ -17306,6 +20251,11 @@ //nu[@xml:id="id1"]/kappa[@xml:lang="nb"][@xml:id="id2"][following-sibling::xi//theta[@src][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::mu[contains(@att,"blan")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::pi[contains(@or,"r attribute va")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//gamma[contains(@delete,"nodeValue")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::pi[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[following-sibling::kappa[contains(@src,"tent")][@xml:id="id6"][not(following-sibling::*)][position() = 1]]]]][position() = 1]]]] + + + kappa + 0 + @@ -17327,6 +20277,11 @@ //iota[@xml:id="id1"]/omega[starts-with(concat(@attrib,"-"),"true-")][@xml:id="id2"][not(preceding-sibling::*)]/gamma[not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:id="id3"][preceding-sibling::*[position() = 1]]//chi[@xml:lang="en"][not(child::node())][following-sibling::xi[@desciption][@xml:lang="no"][following-sibling::rho[@xml:id="id4"]//beta[not(preceding-sibling::*)][following-sibling::epsilon[@class][@xml:id="id5"][not(following-sibling::*)]//xi[@data][@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)]/omicron[@xml:id="id7"][following-sibling::beta[@data][@xml:id="id8"][not(following-sibling::*)]/alpha[starts-with(@insert,"cont")]//chi[contains(concat(@or,"$"),"n$")][not(preceding-sibling::chi)][not(child::node())][following-sibling::lambda[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@xml:id="id9"][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id10"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::iota[@xml:lang="no"][@xml:id="id11"][following-sibling::iota[@xml:lang="en-GB"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]/kappa[@xml:lang="no"][@xml:id="id12"][following-sibling::mu[starts-with(concat(@delete,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id13"][not(following-sibling::*)]]][position() = 1]]]]][position() = 1]]]]][position() = 1]] + + + gamma + 0 + @@ -17364,6 +20319,11 @@ //nu/mu[contains(@true,"tribute")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[starts-with(concat(@attr,"-"),"attribute value-")][@xml:lang="no-nb"][not(child::node())][following-sibling::tau[starts-with(@object,"content")][not(following-sibling::*)]/nu[@name][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::epsilon[starts-with(@attrib,"this.n")][@xml:id="id2"][not(following-sibling::*)][position() = 1]]] + + + upsilon + 0 + @@ -17380,6 +20340,11 @@ //kappa[@src][@xml:lang="no-nb"]/upsilon[@xml:lang="nb"]//xi[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@src][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/beta[not(child::node())][following-sibling::nu[@object][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::nu/nu[@desciption][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::beta[@xml:lang="en-GB"][@xml:id="id4"]/omicron[@data][not(following-sibling::*)]/gamma[@xml:lang="no-nb"][not(preceding-sibling::*)]/zeta[@att][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@number="another attribute value"][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::epsilon[following-sibling::*[contains(concat(@true,"$"),"r attribute value$")][@xml:id="id5"][not(following-sibling::*)]]]]][position() = 1]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -17410,6 +20375,11 @@ //epsilon[starts-with(@data,"cont")][@xml:lang="nb"][@xml:id="id1"]//*[@xml:lang="en-GB"][following-sibling::rho[@xml:lang="en-GB"][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::epsilon[@xml:id="id2"][not(following-sibling::*)]/theta[starts-with(@object,"solid ")][@xml:id="id3"][not(preceding-sibling::*)]//rho[starts-with(@att,"this-is-att-val")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::nu[@xml:id="id5"]//xi[@xml:id="id6"][not(following-sibling::*)]//phi[contains(@content,"e")][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@src="false"][@xml:id="id7"][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@xml:lang="nb"][@xml:id="id8"][following-sibling::sigma[starts-with(concat(@false,"-"),"content-")][@xml:id="id9"][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]] + + + any + 0 + @@ -17435,6 +20405,11 @@ //omicron[@src][@xml:id="id1"]//epsilon[@xml:id="id2"][not(following-sibling::*)]//sigma[starts-with(concat(@attribute,"-"),"123456789-")][following-sibling::*[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:id="id4"][preceding-sibling::*[position() = 3]]//pi[@data]//alpha[@xml:id="id5"][not(child::node())][following-sibling::chi[following-sibling::omicron[preceding-sibling::*[position() = 2]][not(following-sibling::*)]]][position() = 1]]]][position() = 1]] + + + sigma + 0 + @@ -17459,6 +20434,11 @@ //tau[@xml:id="id1"]/theta[starts-with(concat(@delete,"-"),"_blank-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[contains(@true,"%")][preceding-sibling::*[position() = 1]]//lambda[@xml:lang="nb"][not(preceding-sibling::*)]//zeta[starts-with(concat(@and,"-"),"another attribute value-")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::kappa[@class="attribute-value"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::omicron[@class="attribute-value"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/phi[@insert][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)]//phi[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[contains(@title,"ttribute")][@xml:lang="en"][not(child::node())][following-sibling::xi[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//tau[following-sibling::kappa[@xml:id="id6"][preceding-sibling::*[position() = 1]]//mu[starts-with(concat(@abort,"-"),"attribute-")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[contains(@delete,"lid ")][@xml:id="id7"][not(preceding-sibling::*)]//nu[@xml:id="id8"][not(preceding-sibling::*)][following-sibling::rho[@xml:lang="nb"][@xml:id="id9"]/zeta[@desciption][@xml:id="id10"]//omicron[@title][@xml:lang="no-nb"][@xml:id="id11"][following-sibling::eta[contains(@string,"solid 1")][@xml:lang="no"][@xml:id="id12"]/iota[starts-with(concat(@token,"-"),"attribute value-")][not(child::node())][following-sibling::gamma[starts-with(concat(@object,"-"),"true-")][@xml:lang="en-GB"][@xml:id="id13"][not(following-sibling::*)]/lambda[contains(@attr,"ent")][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]] + + + theta + 0 + @@ -17503,6 +20483,11 @@ //zeta[@delete="attribute value"][@xml:lang="en"]//mu[@xml:lang="en"][not(child::node())][following-sibling::omicron[contains(@token,"e")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::eta[@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)]//rho[@xml:lang="no-nb"][@xml:id="id2"][not(child::node())][following-sibling::beta[@xml:id="id3"][following-sibling::*[starts-with(concat(@object,"-"),"this-")][@xml:lang="no-nb"][following-sibling::beta[@xml:id="id4"][following-sibling::*[position()=2]][preceding-sibling::beta[1]][not(child::node())][following-sibling::mu[@and="attribute-value"][@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::sigma[@xml:id="id6"][preceding-sibling::*[position() = 5]]/kappa[starts-with(concat(@attr,"-"),"this-")][@xml:lang="en-US"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@name="123456789"][@xml:id="id8"][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -17525,6 +20510,11 @@ //delta[@xml:lang="en"][@xml:id="id1"]//xi[@xml:id="id2"][not(following-sibling::*)]/tau[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[not(child::node())][following-sibling::zeta[@class][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::rho[not(following-sibling::*)]//xi[@class][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="nb"][@xml:id="id5"][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][following-sibling::tau[@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][not(preceding-sibling::tau or following-sibling::tau)]//delta[contains(@number,"er at")][@xml:lang="en-US"][@xml:id="id6"][not(child::node())][following-sibling::epsilon[@xml:id="id7"]//tau[starts-with(@attrib,"tr")][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[contains(concat(@string,"$"),"alue$")][@xml:id="id9"][not(following-sibling::*)]//upsilon[@xml:lang="no-nb"][@xml:id="id10"]//epsilon[starts-with(@name,"attribute val")][@xml:id="id11"][following-sibling::nu[@xml:lang="nb"][@xml:id="id12"][preceding-sibling::*[position() = 1]]/psi[not(following-sibling::*)]/alpha[starts-with(@att,"attribut")][not(following-sibling::*)]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -17561,6 +20551,11 @@ //kappa[@xml:lang="en-GB"]/zeta[contains(@title,"s")][@xml:lang="nb"][@xml:id="id1"][not(following-sibling::*)]//chi[@attrib][not(preceding-sibling::*)][following-sibling::nu[@xml:id="id2"]//xi[starts-with(concat(@attribute,"-"),"attribute-")][@xml:lang="nb"]/nu[@number][@xml:id="id3"][not(following-sibling::*)]/nu[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[contains(@src,"tru")][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/sigma[@xml:id="id5"][not(preceding-sibling::*)]//lambda[starts-with(concat(@and,"-"),"_blank-")][not(following-sibling::*)]/mu[not(child::node())][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(preceding-sibling::gamma)][following-sibling::mu[not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::alpha[starts-with(concat(@object,"-"),"true-")][following-sibling::zeta[@xml:lang="no"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//mu[contains(@attrib,"en")][@xml:lang="en-GB"][@xml:id="id7"][not(child::node())][following-sibling::eta[@token][@xml:id="id8"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[contains(concat(@attrib,"$"),"-value$")][preceding-sibling::*[position() = 2]]/gamma[@xml:id="id9"][not(child::node())][following-sibling::iota[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@object][@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]] + + + chi + 0 + @@ -17601,6 +20596,11 @@ //pi[@xml:lang="en-GB"]/mu[@attrib="attribute"][@xml:lang="en-GB"][not(following-sibling::*)]//iota[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@xml:id="id1"][not(following-sibling::*)]//phi[@class]//pi[@xml:lang="nb"][not(following-sibling::*)]/xi[@and="123456789"][@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::psi[starts-with(@attrib,"fa")][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//sigma[@attribute][@xml:id="id4"][not(child::node())][following-sibling::theta[@true][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::pi[@xml:lang="en-GB"][@xml:id="id6"][not(child::node())][following-sibling::nu[@xml:lang="en"][@xml:id="id7"][not(following-sibling::*)]//sigma[contains(@src,"alue")][@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@data]//lambda[@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::psi[contains(concat(@name,"$"),"ank$")]/tau[contains(@title,"deValue")][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[starts-with(@src,"_bl")][@xml:lang="en"][@xml:id="id12"][preceding-sibling::*[position() = 2]][following-sibling::pi[@abort][@xml:id="id13"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[contains(concat(@token,"$"),"nt$")][preceding-sibling::*[position() = 4]]]][position() = 1]]][position() = 1]][position() = 1]]]]]]][position() = 1]]] + + + iota + 0 + @@ -17642,6 +20642,11 @@ //*[@or="solid 1px green"][@xml:lang="en-GB"]/eta[starts-with(concat(@token,"-"),"another attribute value-")][@xml:id="id1"][not(preceding-sibling::*)]//sigma[@xml:id="id2"][not(preceding-sibling::*)]/omega//epsilon[contains(concat(@title,"$"),"lank$")]/phi[@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:lang="no-nb"]//chi[@xml:lang="en"][not(preceding-sibling::*)]//rho[contains(concat(@att,"$"),"89$")]/lambda[@object][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda] + + + phi + 0 + @@ -17669,6 +20674,11 @@ //epsilon[contains(concat(@abort,"$"),"100%$")][@xml:id="id1"]/xi[not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[starts-with(@att,"tru")][not(child::node())][following-sibling::lambda[contains(concat(@insert,"$"),"_blank$")][@xml:id="id2"][following-sibling::psi[@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//kappa[@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:lang="en"]/kappa[@xml:id="id5"][not(child::node())][following-sibling::beta[@class][@xml:lang="en-US"][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::upsilon[@false][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::upsilon)][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 3]]//gamma[@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[contains(@true,"0%")][@xml:lang="en-US"][not(child::node())][following-sibling::epsilon[@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@delete="_blank"][not(preceding-sibling::kappa)][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][following-sibling::xi/iota[@xml:lang="en-US"][not(child::node())][following-sibling::epsilon[@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@xml:id="id11"]//alpha[starts-with(@delete,"th")][@xml:lang="en-GB"][@xml:id="id12"][not(preceding-sibling::*)]/xi[not(preceding-sibling::*)]//gamma[starts-with(@or,"tr")][@xml:id="id13"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]] + + + xi + 0 + @@ -17710,6 +20720,11 @@ //epsilon[@xml:lang="no"]/chi[not(child::node())][following-sibling::omicron[@abort][following-sibling::xi[@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::tau[preceding-sibling::*[position() = 3]]//upsilon[contains(concat(@name,"$"),"te value$")][not(following-sibling::*)]//mu[not(child::node())][following-sibling::tau[@data="attribute value"][@xml:id="id1"][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::tau[@name="false"][@xml:lang="en"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][following-sibling::lambda[starts-with(@string,"this.node")][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::gamma[@xml:id="id2"]/epsilon[@xml:id="id3"][not(preceding-sibling::*)]//xi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omega[contains(@string,"ute")][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]//alpha[@class][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//theta[@xml:lang="no"][following-sibling::*[position()=3]][following-sibling::psi[contains(@attribute,"lid 1px green")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[@xml:id="id8"][not(child::node())][following-sibling::nu[starts-with(concat(@class,"-"),"100%-")][@xml:lang="no-nb"][@xml:id="id9"][preceding-sibling::*[position() = 3]]/beta[starts-with(@or,"conte")][@xml:lang="nb"][@xml:id="id10"][not(following-sibling::*)][position() = 1]]]]]]]]]][position() = 1]]][position() = 1]]][position() = 1]] + + + chi + 0 + @@ -17748,6 +20763,11 @@ //zeta[@xml:id="id1"]//beta[@insert][@xml:id="id2"][following-sibling::*[position()=3]][not(child::node())][following-sibling::*[following-sibling::lambda[contains(@attr,"alue")][@xml:lang="no"][@xml:id="id3"][not(following-sibling::lambda)][not(child::node())][following-sibling::omega[@xml:lang="no"][@xml:id="id4"]/theta[@xml:id="id5"][not(preceding-sibling::*)]//epsilon[@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)]//theta[@xml:lang="nb"][@xml:id="id7"][following-sibling::gamma[@xml:id="id8"][following-sibling::alpha[contains(concat(@attr,"$"),"ribute value$")][@xml:id="id9"][preceding-sibling::*[position() = 2]][following-sibling::theta[@xml:id="id10"][not(following-sibling::*)][not(following-sibling::theta)]]][position() = 1]]]][position() = 1]] + + + beta + 0 + @@ -17770,6 +20790,11 @@ //gamma[@attrib][@xml:id="id1"]//pi[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[not(preceding-sibling::*)][following-sibling::*[preceding-sibling::*[position() = 1]][following-sibling::omega[contains(concat(@data,"$"),"odeValue$")][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/zeta][position() = 1]]] + + + pi + 0 + @@ -17787,6 +20812,11 @@ //rho[starts-with(@attr,"another attribute")][@xml:lang="no-nb"]/theta[@attrib][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::kappa[contains(concat(@true,"$"),"6789$")][@xml:lang="no-nb"][not(child::node())][following-sibling::mu[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::lambda[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::kappa[@delete][@xml:lang="en-GB"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::omicron[starts-with(@abort,"attribu")][@xml:lang="en-US"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::*[@xml:id="id2"]//chi[@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[contains(@abort,"ute")][@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@attrib="123456789"][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 2]]/delta[@attr][@xml:lang="no-nb"][following-sibling::omicron[@xml:lang="en-GB"][not(following-sibling::*)]/pi[not(following-sibling::*)]/xi[following-sibling::tau[starts-with(@or,"at")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]//phi[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:id="id7"][not(child::node())][following-sibling::iota[@xml:lang="nb"][preceding-sibling::*[position() = 2]]/omega[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]]]]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -17821,6 +20851,11 @@ //chi[@xml:lang="en-US"][@xml:id="id1"]/psi[@xml:lang="en-US"][not(preceding-sibling::*)]/kappa[@number][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[starts-with(@delete,"attribute")][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::upsilon[@src][@xml:id="id2"][following-sibling::*[position()=3]][following-sibling::alpha[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[starts-with(@attribute,"12")][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id4"]//tau[@attrib="false"][@xml:lang="no-nb"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]] + + + pi + 0 + @@ -17841,6 +20876,11 @@ //nu[starts-with(@token,"this.no")]//iota[@xml:lang="en"][following-sibling::alpha[@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]]//phi[contains(@attr,"tribu")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::eta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::phi[starts-with(concat(@and,"-"),"another attribute value-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]]//sigma[not(preceding-sibling::*)][not(following-sibling::*)]//pi[@xml:lang="en"][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//tau[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@xml:lang="no-nb"][following-sibling::eta[@attr][@xml:lang="en-GB"][@xml:id="id5"]/tau[starts-with(@attr,"1234567")][@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[contains(@desciption,"co")][@xml:lang="en-GB"][@xml:id="id7"]//eta[not(following-sibling::*)]/gamma[contains(concat(@attribute,"$"),"lse$")][@xml:lang="en-US"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[not(preceding-sibling::*)]/psi[@or][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::nu[@object][@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]]]] + + + iota + 0 + @@ -17881,6 +20921,11 @@ //iota[@xml:id="id1"]//eta[contains(concat(@abort,"$"),"lue$")][@xml:id="id2"][not(child::node())][following-sibling::gamma[@number="solid 1px green"][@xml:id="id3"][following-sibling::phi[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="no"][preceding-sibling::*[position() = 2]][following-sibling::eta[preceding-sibling::*[position() = 3]][not(following-sibling::*)]//epsilon[contains(concat(@false,"$"),"ute value$")][not(following-sibling::*)]//eta[contains(concat(@and,"$"),"odeValue$")][@xml:lang="en-GB"][not(following-sibling::*)]//xi[@name][@xml:id="id4"][not(child::node())][following-sibling::sigma[starts-with(concat(@true,"-"),"attribute-")][@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::gamma[not(preceding-sibling::gamma or following-sibling::gamma)]][position() = 1]]]][position() = 1]] + + + eta + 0 + @@ -17902,6 +20947,11 @@ //upsilon[starts-with(concat(@attribute,"-"),"this-")]/tau[not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@src][preceding-sibling::*[position() = 1]][following-sibling::iota[@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 2]][following-sibling::phi[contains(@object,"789")][following-sibling::*[position()=1]][following-sibling::alpha[@xml:id="id2"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//psi[@xml:id="id3"]//epsilon[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]/xi[starts-with(concat(@class,"-"),"attribute value-")][@xml:lang="en-US"][not(preceding-sibling::*)]//epsilon[@xml:lang="en"][not(following-sibling::*)]//epsilon[@xml:lang="no"][not(preceding-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]] + + + tau + 0 + @@ -17927,6 +20977,11 @@ //alpha[starts-with(concat(@and,"-"),"attribute value-")][@xml:lang="nb"]/zeta[contains(concat(@token,"$"),"this.nodeValue$")][@xml:lang="no"][@xml:id="id1"][following-sibling::iota[@xml:id="id2"][not(following-sibling::*)]//mu[@xml:lang="no"][@xml:id="id3"][not(following-sibling::*)]//tau[@xml:lang="en-US"][@xml:id="id4"]//upsilon[@xml:id="id5"][not(following-sibling::*)]//theta[@attribute][@xml:lang="en-US"][@xml:id="id6"][not(child::node())][following-sibling::upsilon[@abort="another attribute value"][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::upsilon)][not(child::node())][following-sibling::mu[@att="attribute value"][@xml:lang="no"]//tau[starts-with(concat(@string,"-"),"another attribute value-")][@xml:lang="no"][@xml:id="id8"][not(child::node())][following-sibling::rho[@xml:id="id9"]/delta[@xml:lang="en"][not(preceding-sibling::*)]//gamma[not(child::node())][following-sibling::epsilon[@att="this.nodeValue"][@xml:id="id10"][preceding-sibling::*[position() = 1]]/pi[@class="true"][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]][position() = 1]] + + + zeta + 0 + @@ -17958,6 +21013,11 @@ //psi/theta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)][not(parent::*/*[position()=2])]/omicron[starts-with(@abort,"attribut")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@desciption="content"][@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::mu[@xml:lang="en-US"][not(following-sibling::*)]//eta[@object][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)]//chi[@xml:id="id2"][following-sibling::lambda[contains(@attribute,"45")][@xml:id="id3"][preceding-sibling::*[position() = 1]]//omega[@attr="100%"][not(preceding-sibling::*)][following-sibling::*[@attr="attribute"][@xml:lang="en"][@xml:id="id4"][not(following-sibling::*)]//rho[contains(concat(@desciption,"$"),"ttribute-value$")][@xml:id="id5"][not(child::node())][following-sibling::iota[@xml:lang="no"][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[@xml:lang="no"][following-sibling::delta[@xml:lang="nb"][@xml:id="id6"][position() = 1]][position() = 1]][position() = 1]]]]]] + + + omicron + 0 + @@ -17987,6 +21047,11 @@ //eta[contains(concat(@name,"$"),"ank$")]/iota[@number="another attribute value"][not(following-sibling::*)]/rho[@xml:lang="en-GB"][not(following-sibling::*)]//xi[@false][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[@xml:lang="en"]//pi[contains(@desciption,"s-")][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[contains(@desciption,"en")][@xml:lang="en-US"][following-sibling::*[position()=1]][following-sibling::nu[@xml:id="id3"][preceding-sibling::*[position() = 2]]//pi[not(child::node())][following-sibling::eta[not(following-sibling::*)]/xi[@xml:id="id4"]/tau[@xml:lang="nb"][following-sibling::sigma[contains(@att,"e")][@xml:lang="en-GB"][following-sibling::upsilon[@att][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/tau[not(following-sibling::*)]//omicron[starts-with(@data,"_blank")][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::phi)]//epsilon[@or][not(preceding-sibling::*)][following-sibling::tau[@desciption][@xml:id="id8"][preceding-sibling::*[position() = 1]]]][position() = 1]]]]] + + + delta + 0 + @@ -18029,6 +21094,11 @@ //tau[@and][@xml:lang="nb"][@xml:id="id1"]/pi[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[starts-with(@attribute,"tru")][@xml:lang="en"][@xml:id="id4"][not(child::node())][following-sibling::kappa[starts-with(concat(@or,"-"),"solid 1px green-")][not(following-sibling::kappa)]/iota[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::gamma[contains(concat(@false,"$"),"value$")][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::*[position()=3]][following-sibling::delta[@xml:lang="nb"][@xml:id="id7"][following-sibling::chi[@xml:lang="no"][@xml:id="id8"][preceding-sibling::*[position() = 3]][following-sibling::theta[@attribute="content"]/lambda[@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@name="this.nodeValue"][@xml:lang="en"][following-sibling::*[position()=3]][following-sibling::kappa[following-sibling::beta[starts-with(concat(@attribute,"-"),"100%-")][@xml:id="id11"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@attrib][@xml:lang="no-nb"][@xml:id="id12"][preceding-sibling::*[position() = 5]][not(following-sibling::*)][position() = 1]][position() = 1]]]]]]][position() = 1]][position() = 1]]] + + + pi + 1 + @@ -18057,6 +21127,11 @@ //xi[@xml:id="id1"]/omega[@attribute][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::chi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::*[preceding-sibling::*[position() = 2]][following-sibling::alpha[@xml:id="id2"][not(child::node())][following-sibling::zeta[@xml:lang="nb"][not(following-sibling::*)]//pi[contains(concat(@false,"$"),"false$")][@xml:lang="en-US"]/alpha[contains(@content,"his.nodeV")][@xml:id="id3"][not(following-sibling::*)]/gamma[@xml:lang="en-US"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::pi[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]] + + + omega + 0 + @@ -18078,6 +21153,11 @@ //upsilon[@xml:lang="nb"]//pi[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//theta[starts-with(concat(@src,"-"),"content-")][@xml:lang="no"][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::nu[contains(concat(@string,"$"),"ibute value$")][@xml:lang="en-US"][not(following-sibling::*)]//chi[@xml:lang="en-US"]/gamma[not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@xml:lang="nb"][@xml:id="id6"]/iota[@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]/iota[@string="100%"][following-sibling::*[position()=6]][not(child::node())][following-sibling::xi[starts-with(concat(@number,"-"),"false-")][@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(preceding-sibling::xi)][following-sibling::sigma[@and][@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::rho[contains(@attribute,"0")][not(child::node())][following-sibling::kappa[starts-with(@att,"at")][not(child::node())][following-sibling::eta[@false][@xml:lang="en-GB"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::tau[@delete="false"][@xml:lang="en"][not(following-sibling::*)]/nu[@false][@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][not(preceding-sibling::nu or following-sibling::nu)][position() = 1]]][position() = 1]][position() = 1]]]]]]]][position() = 1]] + + + beta + 0 + @@ -18115,6 +21195,11 @@ //beta//omicron[not(child::node())][following-sibling::gamma[@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]//sigma[starts-with(@name,"at")][@xml:lang="no-nb"][following-sibling::*[position()=4]][following-sibling::iota[starts-with(concat(@title,"-"),"solid 1px green-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::iota[contains(@src,"odeValue")][@xml:lang="nb"][preceding-sibling::*[position() = 3]][following-sibling::rho[contains(@data,"eValue")][@xml:id="id2"][not(following-sibling::*)]/kappa[contains(concat(@class,"$"),"alse$")][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::eta[starts-with(@desciption,"attribu")][@xml:id="id4"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + omicron + 0 + @@ -18135,6 +21220,11 @@ //zeta[@xml:id="id1"]/eta[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[starts-with(concat(@title,"-"),"_blank-")][@xml:lang="en-GB"][following-sibling::mu[@attrib][@xml:id="id3"][following-sibling::mu[@string][not(following-sibling::*)]/lambda[@xml:lang="en-GB"][@xml:id="id4"][following-sibling::phi[contains(@object,"k")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]] + + + iota + 0 + @@ -18152,6 +21242,11 @@ //chi[@xml:lang="no-nb"]/rho[@xml:lang="no-nb"][following-sibling::*[position()=1]][not(following-sibling::rho)][following-sibling::mu[contains(concat(@insert,"$"),"eValue$")][@xml:lang="no-nb"]//kappa[contains(concat(@false,"$"),"attribute$")][following-sibling::*[position()=2]][following-sibling::sigma[starts-with(concat(@abort,"-"),"attribute-")][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[not(following-sibling::*)]//zeta[@xml:lang="nb"][not(following-sibling::*)]/upsilon[not(child::node())][following-sibling::sigma[starts-with(concat(@delete,"-"),"solid 1px green-")][@xml:lang="en-GB"][@xml:id="id1"][not(child::node())][following-sibling::psi[@desciption][@xml:id="id2"][preceding-sibling::*[position() = 2]]/xi[@string][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::upsilon[@or="attribute value"][@xml:id="id4"]//gamma[starts-with(@title,"this.")][@xml:lang="nb"][not(following-sibling::*)][position() = 1]]]]][position() = 1]]] + + + rho + 0 + @@ -18178,6 +21273,11 @@ //gamma[contains(concat(@object,"$"),"nodeValue$")][@xml:id="id1"]/phi[contains(@title,"thi")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[contains(@number,"ue")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//alpha[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::eta[@insert][preceding-sibling::*[position() = 1]][following-sibling::rho[@abort][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//beta[@desciption][following-sibling::*[position()=4]][following-sibling::psi[starts-with(concat(@false,"-"),"solid 1px green-")][@xml:id="id5"][following-sibling::zeta[starts-with(concat(@name,"-"),"100%-")][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[@and="content"][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::epsilon[starts-with(@desciption,"this-is-att-value")][@xml:lang="en"][not(following-sibling::*)]/alpha[@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@content][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/theta[contains(concat(@delete,"$"),"false$")][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 1]]/gamma[contains(concat(@true,"$"),"100%$")][@xml:lang="en"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]]]]][position() = 1]]] + + + phi + 0 + @@ -18207,6 +21307,11 @@ //gamma[contains(concat(@class,"$"),"ue$")][@xml:lang="en"]/psi[@name][@xml:id="id1"][not(preceding-sibling::*)]/mu[not(preceding-sibling::*)][not(following-sibling::*)]//psi[starts-with(concat(@attribute,"-"),"false-")][@xml:lang="no"][not(following-sibling::*)]/omicron[starts-with(concat(@src,"-"),"content-")][not(preceding-sibling::*)][following-sibling::epsilon[contains(concat(@class,"$"),"ent$")][@xml:id="id2"]//eta[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::zeta[@false="_blank"][@xml:lang="no"][preceding-sibling::*[position() = 1]]/epsilon[not(preceding-sibling::*)][following-sibling::epsilon[@xml:lang="nb"][not(child::node())][following-sibling::upsilon[@attribute]/lambda[@att][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[contains(@src,"89")][preceding-sibling::*[position() = 1]]/theta/chi[@xml:lang="en-GB"][not(following-sibling::*)]]][position() = 1]]][position() = 1]] + + + omicron + 0 + @@ -18238,6 +21343,11 @@ //phi[@desciption]//tau[@attribute="solid 1px green"][@xml:id="id1"][following-sibling::theta[@attr][preceding-sibling::*[position() = 1]][following-sibling::chi[starts-with(@name,"this-is-att-v")][@xml:lang="en-US"][following-sibling::xi[@xml:id="id2"][not(child::node())][following-sibling::theta[starts-with(@desciption,"_bla")][@xml:id="id3"][not(following-sibling::*)]//alpha[@object][@xml:id="id4"][not(preceding-sibling::*)][position() = 1]]]][position() = 1]] + + + tau + 0 + @@ -18254,6 +21364,11 @@ //iota[@xml:id="id1"]//xi[contains(@insert,"e")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[not(following-sibling::*)]//delta[@xml:lang="nb"][not(child::node())][following-sibling::pi[following-sibling::beta[starts-with(concat(@false,"-"),"true-")][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/beta[starts-with(@data,"another attr")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[@xml:lang="en-US"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -18273,6 +21388,11 @@ //theta[@abort][@xml:lang="en-US"][@xml:id="id1"]//delta[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::epsilon[@title="true"][@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]/lambda[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::mu[@xml:lang="no"][@xml:id="id5"][following-sibling::epsilon[@xml:lang="no"][position() = 1]]]][position() = 1]] + + + delta + 0 + @@ -18289,6 +21409,11 @@ //delta[contains(concat(@insert,"$"),"att-value$")][@xml:lang="en-GB"]//omicron[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id1"][preceding-sibling::*[position() = 1]]//theta[starts-with(@object,"t")][@xml:id="id2"][not(following-sibling::*)]//xi[starts-with(@content,"100%")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::omega[starts-with(@object,"another attribu")][@xml:id="id3"][not(child::node())][following-sibling::nu[@xml:lang="no"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]][position() = 1]]] + + + omicron + 0 + @@ -18307,6 +21432,11 @@ //rho[@xml:id="id1"]/omicron[@xml:lang="en"][@xml:id="id2"][following-sibling::theta[@title="solid 1px green"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::omicron)]//psi[contains(concat(@false,"$"),"e$")][@xml:lang="nb"][@xml:id="id4"]/phi[@or][@xml:lang="en-US"][not(following-sibling::*)]//kappa[starts-with(@class,"12")][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[@xml:lang="no-nb"][not(preceding-sibling::*)]/theta[contains(concat(@att,"$"),"rue$")][@xml:id="id5"][not(preceding-sibling::*)]/theta[@insert][@xml:lang="en-US"][not(preceding-sibling::*)]/rho[contains(concat(@attribute,"$"),"lank$")][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::sigma[@xml:id="id6"][not(child::node())][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id7"]//delta//psi[@xml:id="id8"][not(child::node())][following-sibling::kappa[@attr][@xml:lang="no"][@xml:id="id9"]//eta[@attrib="100%"][@xml:lang="en-GB"][@xml:id="id10"]/tau[starts-with(@number,"_blank")][@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]] + + + omicron + 0 + @@ -18347,6 +21477,11 @@ //xi[@xml:lang="en-US"]//omega[contains(concat(@object,"$"),"123456789$")][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@xml:lang="en-GB"][following-sibling::*[position()=2]][following-sibling::rho[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@attr][@xml:id="id1"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/lambda[starts-with(@number,"this.nodeValu")][@xml:id="id2"][not(following-sibling::*)]//omicron[contains(concat(@class,"$"),"0%$")][not(following-sibling::*)]//mu[contains(concat(@data,"$"),"te$")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::mu[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 1]]/rho[starts-with(concat(@attrib,"-"),"123456789-")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@false="attribute value"][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@attrib="this-is-att-value"][@xml:id="id7"]//theta[not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@abort][preceding-sibling::*[position() = 1]][following-sibling::delta[contains(@title,"ibute-")][@xml:lang="en-GB"]/epsilon[starts-with(@and,"tr")][@xml:lang="en-US"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + omega + 0 + @@ -18379,6 +21514,11 @@ //pi[contains(concat(@class,"$"),"true$")]/tau//gamma[contains(@object,"ibute")][@xml:id="id1"][not(preceding-sibling::*)]//pi//*[@or="true"][@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]//theta[starts-with(@or,"fa")][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:id="id4"][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::mu[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]/tau[contains(@or,"lank")][@xml:id="id6"][not(preceding-sibling::*)][position() = 1]][position() = 1]] + + + iota + 0 + @@ -18403,6 +21543,11 @@ //nu[contains(@or,"00%")][@xml:id="id1"]//xi[@xml:lang="en-US"]//gamma[@title][@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]/chi[starts-with(concat(@data,"-"),"attribute-")][@xml:id="id3"][not(preceding-sibling::*)]//alpha[contains(concat(@attribute,"$"),"x green$")][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[starts-with(concat(@attr,"-"),"solid 1px green-")]//zeta[starts-with(@desciption,"this.node")][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::zeta)]/psi[@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]//omicron[contains(concat(@desciption,"$"),"0%$")][@xml:id="id7"][not(preceding-sibling::*)]/iota[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::theta[starts-with(concat(@number,"-"),"123456789-")][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::chi[@content="attribute"][@xml:lang="no"][@xml:id="id9"][following-sibling::iota[@xml:id="id10"][preceding-sibling::*[position() = 4]][following-sibling::beta[contains(concat(@src,"$"),"ttribute$")][@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 5]]//upsilon[starts-with(@src,"a")][@xml:lang="nb"][@xml:id="id12"]//eta[starts-with(concat(@class,"-"),"123456789-")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[@xml:id="id13"][not(preceding-sibling::*)]/xi[@xml:id="id14"][not(preceding-sibling::*)]//omicron[@data][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -18443,6 +21588,11 @@ //tau[@att][@xml:lang="no-nb"][@xml:id="id1"]/omega[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]//eta[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)]//delta[@number][@xml:lang="en-US"][following-sibling::beta[@string="_blank"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[contains(@object,"e")][@xml:lang="en-GB"][not(preceding-sibling::*)]/eta[contains(concat(@object,"$"),"attribute$")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[starts-with(concat(@number,"-"),"true-")][not(following-sibling::*)]//alpha[@xml:id="id4"][following-sibling::upsilon[@abort="false"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@xml:id="id5"][following-sibling::gamma[@title][@xml:id="id6"][following-sibling::sigma[contains(concat(@desciption,"$"),"e$")][@xml:lang="no"][preceding-sibling::*[position() = 2]]/epsilon[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[not(following-sibling::*)]/gamma[not(preceding-sibling::*)][following-sibling::alpha[contains(@and,"%")][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::alpha)]/eta[not(preceding-sibling::*)]//theta[starts-with(concat(@number,"-"),"solid 1px green-")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::theta)]][position() = 1]]]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -18480,6 +21630,11 @@ //eta[starts-with(concat(@false,"-"),"content-")][@xml:lang="no"]/omicron[contains(@class,"tri")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:id="id1"][following-sibling::zeta[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::eta[starts-with(@class,"co")][@xml:lang="nb"][@xml:id="id3"][following-sibling::tau[contains(@class,"ute-")][preceding-sibling::*[position() = 4]]/iota[@insert="this.nodeValue"][following-sibling::eta[starts-with(concat(@title,"-"),"attribute value-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(@false,"3456789")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]//epsilon[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]/pi[starts-with(concat(@abort,"-"),"attribute value-")][@xml:lang="no"][position() = 1]]]]]]] + + + omicron + 0 + @@ -18502,6 +21657,11 @@ //alpha[starts-with(concat(@or,"-"),"true-")][@xml:id="id1"]/xi[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(@attribute,"1234567")]//zeta[@src="content"][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::epsilon[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::pi[@true][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][following-sibling::psi[@class][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::psi[contains(concat(@data,"$"),"23456789$")]/alpha[@xml:lang="en"][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[starts-with(@att,"12345678")][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id5"]/upsilon[@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][not(preceding-sibling::upsilon or following-sibling::upsilon)]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -18526,6 +21686,11 @@ //rho//tau[contains(@content,"this")][@xml:id="id1"][not(following-sibling::*)]//kappa[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=5]][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id3"][not(child::node())][following-sibling::rho[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::omega[@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::theta[preceding-sibling::*[position() = 4]][not(preceding-sibling::theta)][not(child::node())][following-sibling::sigma[contains(concat(@true,"$"),"%$")][@xml:id="id5"][not(following-sibling::*)][position() = 1]]]]][position() = 1]] + + + lambda + 0 + @@ -18547,6 +21712,11 @@ //tau[contains(concat(@insert,"$"),"eValue$")][@xml:id="id1"]/mu[@number="solid 1px green"][@xml:id="id2"]/gamma[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::sigma[preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::alpha[starts-with(concat(@or,"-"),"this.nodeValue-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[starts-with(concat(@and,"-"),"another attribute value-")][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]]]] + + + gamma + 0 + @@ -18562,6 +21732,11 @@ //omicron[@xml:id="id1"]//*[contains(@desciption,"this-is-att")][@xml:lang="en"][not(preceding-sibling::*)]//phi[starts-with(concat(@data,"-"),"attribute value-")][@xml:id="id2"][not(preceding-sibling::*)]/delta[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en"][@xml:id="id3"]/xi[contains(concat(@number,"$"),"ank$")][not(preceding-sibling::*)][not(following-sibling::*)]//phi[not(preceding-sibling::*)]//iota[starts-with(concat(@number,"-"),"this.nodeValue-")][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@abort="attribute value"][@xml:lang="no"][following-sibling::upsilon[@name][preceding-sibling::*[position() = 1]]//omega[@token][@xml:lang="no-nb"][@xml:id="id4"]//phi[@xml:lang="en"][@xml:id="id5"][following-sibling::epsilon[contains(@content,"se")][@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[not(following-sibling::*)]/sigma[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[starts-with(@or,"at")][@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[contains(@object,"i")][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]] + + + delta + 0 + @@ -18597,6 +21772,11 @@ //chi[@attribute][@xml:id="id1"]//upsilon[@xml:id="id2"][not(preceding-sibling::*)]/rho[@xml:id="id3"][following-sibling::*[@xml:lang="no"][following-sibling::kappa[@xml:id="id4"]/tau[@xml:lang="en-GB"][not(preceding-sibling::*)]//pi[@attrib][@xml:id="id5"][not(preceding-sibling::*)]][position() = 1]] + + + rho + 0 + @@ -18615,6 +21795,11 @@ //rho//omega//nu[@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)]//omega[starts-with(concat(@attr,"-"),"another attribute value-")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::mu[@desciption][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[starts-with(concat(@number,"-"),"content-")][@xml:lang="en-GB"][not(preceding-sibling::*)][position() = 1]] + + + omega + 1 + @@ -18632,6 +21817,11 @@ //gamma[@title][@xml:id="id1"]//pi[not(child::node())][following-sibling::xi[@xml:lang="en-GB"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@token][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::sigma[@xml:lang="no-nb"]/xi[contains(@number,"lue")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//delta[@xml:lang="en-GB"][not(preceding-sibling::*)]][position() = 1]]][position() = 1]] + + + pi + 0 + @@ -18650,6 +21840,11 @@ //delta[starts-with(concat(@desciption,"-"),"true-")][@xml:lang="nb"][@xml:id="id1"]//sigma[@name="true"][@xml:lang="en"][not(preceding-sibling::*)]//upsilon[@attr][@xml:lang="nb"]/iota[@att][@xml:lang="en"][not(preceding-sibling::*)]/beta[@true][@xml:id="id2"]//upsilon[@insert][not(preceding-sibling::*)][following-sibling::mu[starts-with(concat(@att,"-"),"attribute value-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::beta[@xml:id="id3"][not(child::node())][following-sibling::sigma[starts-with(concat(@title,"-"),"content-")][preceding-sibling::*[position() = 3]]//chi[@attribute][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:id="id6"][following-sibling::eta[@delete][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::pi[@xml:id="id8"][not(following-sibling::*)]//zeta[@xml:lang="no-nb"][not(following-sibling::*)]/delta[@xml:lang="no"]/alpha[@xml:lang="en-US"][@xml:id="id9"][not(preceding-sibling::*)]/delta[starts-with(concat(@class,"-"),"_blank-")][not(preceding-sibling::*)]//xi[not(preceding-sibling::*)]/nu[@src][@xml:lang="en"][not(preceding-sibling::nu)][following-sibling::alpha[@xml:lang="no"][not(child::node())][following-sibling::omega[@src][@xml:lang="no"][@xml:id="id10"][not(child::node())][following-sibling::tau[starts-with(concat(@number,"-"),"123456789-")][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]] + + + upsilon + 1 + @@ -18693,6 +21888,11 @@ //chi[@xml:id="id1"]//tau[@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]/delta[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@attribute][@xml:id="id4"][not(following-sibling::*)]//epsilon[@attribute][@xml:lang="en-US"][following-sibling::*[position()=1]][following-sibling::rho[@and][@xml:lang="en-US"][not(following-sibling::*)]//alpha[@false][@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::alpha[@xml:id="id5"][not(following-sibling::*)]/omicron[@xml:lang="en-US"][@xml:id="id6"][following-sibling::xi[@xml:lang="en"][not(following-sibling::*)]/epsilon[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]/delta[starts-with(concat(@or,"-"),"false-")][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id8"][following-sibling::pi[contains(@and,"ute")][@xml:lang="en"][@xml:id="id9"][position() = 1]][position() = 1]][position() = 1]]]]] + + + delta + 0 + @@ -18723,6 +21923,11 @@ //mu[starts-with(@abort,"1")]//*[@delete="100%"][@xml:lang="en"][following-sibling::omicron[@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::mu[@xml:lang="nb"]/kappa[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)]//chi[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]] + + + any + 0 + @@ -18739,6 +21944,11 @@ //eta[contains(concat(@class,"$"),"100%$")][@xml:lang="nb"]//delta[starts-with(@or,"another attribute val")][@xml:id="id1"][not(preceding-sibling::delta)]/nu[contains(@false,"6789")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]//pi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[contains(@abort,"t")][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::psi[not(following-sibling::*)]/tau[@xml:id="id4"][not(child::node())][following-sibling::nu[contains(@token,"e")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[@content][@xml:id="id6"]//pi[contains(concat(@object,"$"),"23456789$")][@xml:lang="no-nb"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@false][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::psi[not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::rho[@xml:id="id9"][preceding-sibling::*[position() = 3]]/xi[@attribute][@xml:lang="no"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::iota[contains(@src,"nk")][@xml:lang="no-nb"][not(child::node())][following-sibling::delta[starts-with(concat(@content,"-"),"100%-")][preceding-sibling::*[position() = 2]]//iota[@number][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + pi + 0 + @@ -18773,6 +21983,11 @@ //nu/sigma[starts-with(@number,"attribu")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::kappa[contains(@src,"en")][not(following-sibling::*)]//zeta[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[@attrib][@xml:id="id2"][not(following-sibling::*)]//theta//chi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::kappa[@title][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="no"][@xml:id="id4"][following-sibling::lambda[@object][@xml:lang="en"][@xml:id="id5"][not(following-sibling::*)]//chi[starts-with(@object,"_b")][@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]/chi[@xml:id="id7"][not(following-sibling::*)]//phi[not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -18801,6 +22016,11 @@ //alpha[contains(concat(@attrib,"$"),"89$")][@xml:id="id1"]//phi[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:lang="en"][not(following-sibling::*)]/kappa[contains(@abort,"eValue")][@xml:lang="no"][not(preceding-sibling::*)]//upsilon[@attr="this.nodeValue"][not(child::node())][following-sibling::sigma//omega[@class][@xml:lang="en"][following-sibling::phi[@xml:id="id2"]/gamma[contains(concat(@abort,"$"),"eValue$")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::zeta[starts-with(@attr,"1")][@xml:id="id4"][preceding-sibling::*[position() = 1]]/psi[starts-with(concat(@insert,"-"),"_blank-")][@xml:lang="no-nb"][@xml:id="id5"]//zeta[@attrib][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/omega[@true="content"]/alpha[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@data][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[@xml:id="id6"][not(following-sibling::*)]//rho[contains(concat(@att,"$"),"ue$")][@xml:id="id7"][not(preceding-sibling::*)]//*[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + upsilon + 0 + @@ -18836,6 +22056,11 @@ //phi[@xml:lang="en-GB"]//delta[@src="123456789"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[contains(@string,"ue")][@xml:lang="en-GB"][@xml:id="id1"][not(child::node())][following-sibling::chi[@xml:id="id2"][following-sibling::chi[@token="attribute-value"][@xml:lang="en"][preceding-sibling::*[position() = 2]]//alpha[contains(@or,"ute value")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::tau[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(following-sibling::omega)]/theta[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@delete][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::phi[@xml:id="id6"][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + nu + 0 + @@ -18859,6 +22084,11 @@ //zeta[@token="attribute"][@xml:lang="no"]/chi[@object][not(following-sibling::*)]/pi[@xml:id="id1"][not(child::node())][following-sibling::psi[contains(concat(@abort,"$"),"x green$")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/*[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[contains(@insert,"e")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[@src][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="en-US"][not(following-sibling::*)]/pi[@attr][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -18883,6 +22113,11 @@ //zeta/psi[contains(@data,"nt")][not(preceding-sibling::*)][not(following-sibling::*)]//omega[@xml:id="id1"][following-sibling::beta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@xml:lang="no"][not(preceding-sibling::*)]//delta[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::psi[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:lang="en"][not(following-sibling::*)]//sigma[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi/pi[@xml:lang="nb"][@xml:id="id5"]/alpha[starts-with(@data,"att")][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[starts-with(@object,"tr")][@xml:lang="no"]//xi[@false="attribute"][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@string]//phi[contains(@or,"nt")][not(preceding-sibling::*)][not(following-sibling::*)]//xi[starts-with(concat(@string,"-"),"100%-")][@xml:id="id7"][not(following-sibling::*)]/nu[@data="attribute-value"][@xml:lang="en-GB"][@xml:id="id8"]/eta[starts-with(concat(@desciption,"-"),"content-")][@xml:lang="no-nb"][not(following-sibling::*)]/beta[starts-with(@string,"f")][@xml:id="id9"]/omega[not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:id="id10"][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + omega + 0 + @@ -18928,6 +22163,11 @@ //epsilon[starts-with(concat(@desciption,"-"),"false-")][@xml:lang="en-US"]/iota[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::upsilon[starts-with(concat(@attrib,"-"),"false-")][@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(preceding-sibling::upsilon)]//zeta[@xml:lang="nb"][@xml:id="id3"][not(child::node())][following-sibling::eta[@xml:lang="en-US"]/iota[@xml:lang="no"][not(preceding-sibling::*)]//kappa[contains(concat(@title,"$"),"k$")][not(preceding-sibling::*)][following-sibling::gamma[@object][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::mu[@xml:id="id5"][following-sibling::xi[@xml:id="id6"][not(following-sibling::*)]/rho[@false][following-sibling::theta[starts-with(@attr,"attribut")][@xml:lang="en-GB"][not(following-sibling::*)]/*[@xml:lang="en"][not(following-sibling::*)]//nu[contains(concat(@delete,"$"),"nk$")][@xml:lang="en"][@xml:id="id7"][following-sibling::iota[starts-with(concat(@att,"-"),"attribute-")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@or="attribute-value"][@xml:lang="no"][not(following-sibling::*)][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]]] + + + iota + 1 + @@ -18960,6 +22200,11 @@ //tau[@xml:lang="no"]/mu[@title][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[contains(concat(@false,"$"),"ue$")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::theta[@attrib="false"][@xml:lang="en-US"][preceding-sibling::*[position() = 2]]/omicron[contains(concat(@insert,"$"),"deValue$")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[@xml:lang="nb"][not(child::node())][following-sibling::iota[contains(@desciption,"ut")][@xml:id="id5"][preceding-sibling::*[position() = 3]]//sigma[contains(@src,"e")][@xml:id="id6"]/beta[starts-with(concat(@false,"-"),"true-")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[starts-with(@att,"fal")][@xml:id="id8"][not(preceding-sibling::eta)][not(child::node())][following-sibling::xi[@xml:lang="no"][preceding-sibling::*[position() = 2]][following-sibling::mu[preceding-sibling::*[position() = 3]][following-sibling::nu[@xml:lang="en-GB"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@xml:id="id9"]//omicron[@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@title][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -18990,6 +22235,11 @@ //rho[@xml:lang="no"][@xml:id="id1"]//iota[@data][not(preceding-sibling::*)]//upsilon[@attrib][not(child::node())][following-sibling::lambda[@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]/psi[contains(concat(@delete,"$"),"nk$")][@xml:lang="no-nb"][not(following-sibling::*)]/zeta[@or][@xml:lang="en-US"][@xml:id="id3"][not(child::node())][following-sibling::xi[contains(@abort,"ue")][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::gamma[starts-with(@false,"conten")][@xml:id="id5"][not(following-sibling::*)]/psi[starts-with(concat(@or,"-"),"100%-")][@xml:id="id6"][not(following-sibling::*)]/pi[@xml:id="id7"]/phi[starts-with(@insert,"false")][not(child::node())][following-sibling::tau[@data][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/gamma[@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[contains(concat(@att,"$"),"tribute-value$")][@xml:lang="nb"][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//beta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[starts-with(concat(@desciption,"-"),"attribute value-")][@xml:id="id9"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:lang="no"][@xml:id="id10"][not(following-sibling::rho)]//beta[@xml:lang="nb"]/zeta[@xml:lang="no-nb"][@xml:id="id11"][not(following-sibling::*)]//upsilon[@true="true"][@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]]]]][position() = 1]]]] + + + upsilon + 0 + @@ -19033,6 +22283,11 @@ //rho//rho[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::nu[@class][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[not(preceding-sibling::*)][not(following-sibling::*)]/xi[starts-with(@abort,"attribu")][@xml:lang="en-GB"][@xml:id="id3"]//theta[@xml:id="id4"][not(child::node())][following-sibling::nu[starts-with(@delete,"another attrib")][@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@class][@xml:id="id6"][following-sibling::iota[@attrib][@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[@xml:id="id8"]//gamma[contains(concat(@attrib,"$"),"lue$")][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[not(child::node())][following-sibling::*[@or][@xml:id="id10"][following-sibling::psi[@xml:lang="nb"][not(following-sibling::*)]/gamma[@content][@xml:lang="no-nb"][not(following-sibling::*)]//lambda[@xml:id="id11"][not(child::node())][following-sibling::gamma[@xml:id="id12"]/mu[@xml:id="id13"][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + rho + 1 + @@ -19070,6 +22325,11 @@ //phi[@xml:lang="en-US"]/psi[contains(concat(@src,"$"),"value$")][@xml:id="id1"]//zeta[not(child::node())][following-sibling::pi[starts-with(@abort,"this-is-att-va")][@xml:id="id2"]//sigma[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 2]]//eta[contains(@attrib,"e")][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@true][@xml:lang="no"][following-sibling::kappa[contains(concat(@desciption,"$"),"0%$")][@xml:id="id6"][not(child::node())][following-sibling::omicron[starts-with(@attrib,"attribute-v")]/*[@and][not(preceding-sibling::any)][following-sibling::omicron[contains(@number,"ribute-value")][@xml:lang="nb"][following-sibling::eta[@xml:lang="nb"][@xml:id="id7"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -19098,6 +22358,11 @@ //rho[@object="false"]/phi[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::*[@xml:id="id2"][not(following-sibling::*)]//nu[@title="attribute value"][@xml:lang="no"]/upsilon[starts-with(@desciption,"solid ")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[@attrib][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[starts-with(@true,"1")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="en"][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 2]][position() = 1]]]]] + + + phi + 0 + @@ -19118,6 +22383,11 @@ //zeta[@xml:id="id1"]/omega[not(child::node())][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omega[starts-with(concat(@title,"-"),"false-")]/delta[@true="true"]//zeta[contains(concat(@object,"$"),"nk$")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]] + + + omega + 0 + @@ -19135,6 +22405,11 @@ //kappa[@xml:lang="no-nb"]//*[@xml:lang="no-nb"][@xml:id="id1"][not(following-sibling::*)]/xi[@xml:lang="no-nb"][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::chi[@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::lambda[@insert]//mu[@title][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::psi[@xml:lang="en-GB"][@xml:id="id5"][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"]/delta[starts-with(@src,"t")][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)]]][position() = 1]][position() = 1]]]] + + + xi + 0 + @@ -19157,6 +22432,11 @@ //epsilon[@or][@xml:lang="no-nb"]/eta[@false][following-sibling::mu[@false="another attribute value"][@xml:lang="en"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[@object="this-is-att-value"][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[@xml:lang="nb"][not(child::node())][following-sibling::mu[preceding-sibling::*[position() = 1]]/pi[starts-with(concat(@delete,"-"),"content-")][@xml:lang="no"]]][position() = 1]] + + + eta + 0 + @@ -19176,6 +22456,11 @@ //omega[contains(@attribute,"u")][@xml:lang="en-US"]/zeta[@object="100%"][@xml:id="id1"][not(preceding-sibling::*)]//eta[@xml:id="id2"][not(following-sibling::*)]//upsilon[starts-with(concat(@token,"-"),"solid 1px green-")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@insert][following-sibling::*[position()=1]][following-sibling::tau[contains(@string,"bute")][preceding-sibling::*[position() = 1]]/omega[starts-with(concat(@and,"-"),"this.nodeValue-")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[starts-with(concat(@content,"-"),"content-")][@xml:id="id6"][preceding-sibling::*[position() = 1]]//omicron[starts-with(@insert,"_bl")][@xml:lang="no"]//zeta[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id8"][following-sibling::*[position()=2]][not(preceding-sibling::alpha)][following-sibling::psi[@xml:lang="no"][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::nu[@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//alpha[@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::beta[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[@xml:lang="en"][@xml:id="id12"][not(preceding-sibling::*)]/epsilon[contains(@true,"Value")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[@true][@xml:lang="no-nb"][@xml:id="id13"][not(child::node())][following-sibling::tau[@xml:id="id14"][not(following-sibling::*)][position() = 1]]]]][position() = 1]]]] + + + iota + 0 + @@ -19215,6 +22500,11 @@ //xi[@true]//xi[not(preceding-sibling::*)][following-sibling::upsilon[contains(@or,"tent")][preceding-sibling::*[position() = 1]]/kappa[@attrib][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@name][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::xi[contains(@abort,"23456789")][@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 2]][following-sibling::alpha[following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]//beta[@object][@xml:lang="en-US"][not(preceding-sibling::*)]/phi[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(preceding-sibling::phi)][not(child::node())][following-sibling::gamma[starts-with(concat(@attribute,"-"),"this-")][following-sibling::theta[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + xi + 1 + @@ -19238,6 +22528,11 @@ //lambda[contains(concat(@attr,"$"),"ontent$")][@xml:lang="no-nb"][@xml:id="id1"]/pi[@xml:lang="en-US"][@xml:id="id2"]//sigma[starts-with(concat(@true,"-"),"attribute-")][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::psi[starts-with(concat(@src,"-"),"_blank-")][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[starts-with(@name,"_b")][not(following-sibling::*)]//theta[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::chi[@attrib="attribute-value"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/zeta[contains(concat(@object,"$"),"rue$")][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[starts-with(@false,"tru")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]]/*[@xml:lang="no-nb"][not(preceding-sibling::*)]/epsilon[@xml:lang="no"][not(following-sibling::*)]/tau[@abort][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[contains(concat(@insert,"$"),"is-att-value$")][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[@attrib="false"][@xml:id="id9"][not(following-sibling::*)]/psi[@abort][@xml:lang="no-nb"][not(preceding-sibling::*)]]]]]]][position() = 1]] + + + delta + 0 + @@ -19273,6 +22568,11 @@ //sigma/lambda[not(preceding-sibling::*)]//delta[@true][not(child::node())][following-sibling::delta[starts-with(concat(@desciption,"-"),"attribute-")][following-sibling::*[position()=2]][following-sibling::pi[@delete="123456789"][@xml:lang="no"][@xml:id="id1"][following-sibling::zeta[contains(concat(@or,"$"),"6789$")]//gamma[@xml:id="id2"][following-sibling::pi[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//lambda[@xml:id="id4"]/zeta[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::kappa[not(child::node())][following-sibling::epsilon[@abort][@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 2]]/alpha[@false][@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]//zeta[contains(@desciption,"t")][@xml:id="id8"][position() = 1]]][position() = 1]]][position() = 1]]] + + + delta + 0 + @@ -19301,6 +22601,11 @@ //lambda[@xml:lang="no"]//gamma[not(preceding-sibling::*)]//chi[contains(@or,"ue")][not(child::node())][following-sibling::sigma[@xml:lang="en"]/iota[@xml:id="id1"][not(child::node())][following-sibling::eta[starts-with(@object,"solid 1px ")][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]]]] + + + chi + 0 + @@ -19317,6 +22622,11 @@ //beta[@xml:lang="en-GB"]//beta[contains(@content,"ten")][@xml:lang="no"][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[contains(@delete,"_bl")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/psi[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)]//delta[starts-with(concat(@title,"-"),"another attribute value-")][not(preceding-sibling::*)]/alpha[@attrib][@xml:id="id3"][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::epsilon)]//omicron[contains(concat(@attribute,"$"),"s-is-att-value$")][@xml:id="id6"][following-sibling::tau[@xml:id="id7"][not(following-sibling::*)]/xi[@object="false"][@xml:lang="en-US"][@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@number][preceding-sibling::*[position() = 1]][following-sibling::gamma[contains(concat(@attrib,"$"),"ue$")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]//eta[@number][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[not(following-sibling::*)]//epsilon[starts-with(@name,"con")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="no"][following-sibling::zeta[starts-with(@token,"con")][@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//upsilon[contains(@class,"lue")][@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::kappa[@xml:lang="no"][@xml:id="id11"]//mu/tau[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 1 + @@ -19359,6 +22669,11 @@ //*[@xml:lang="en-US"]//sigma[starts-with(concat(@name,"-"),"_blank-")][@xml:id="id1"][following-sibling::delta[starts-with(@false,"1")][not(following-sibling::*)]/delta[starts-with(@delete,"attr")][not(preceding-sibling::*)][not(following-sibling::*)]/pi[starts-with(concat(@class,"-"),"attribute-")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::eta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[@abort][not(preceding-sibling::*)][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 1]]/lambda[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="nb"][preceding-sibling::*[position() = 1]]//kappa[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::kappa or following-sibling::kappa)]//mu[contains(@abort,"green")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id6"]][position() = 1]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -19390,6 +22705,11 @@ //eta[@xml:lang="nb"]//pi[@abort][@xml:lang="en-US"]//*[starts-with(@string,"att")][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::iota[@class][@xml:id="id1"][not(following-sibling::*)]//rho[not(preceding-sibling::*)][not(following-sibling::*)]//beta[@xml:lang="en-US"][not(following-sibling::*)]//*[@xml:id="id2"]//beta[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::gamma[starts-with(concat(@src,"-"),"_blank-")][preceding-sibling::*[position() = 1]][following-sibling::epsilon[@object][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]/kappa[starts-with(@content,"at")][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[contains(@att,"lid 1px g")][preceding-sibling::*[position() = 1]]/delta[@xml:lang="en-US"][@xml:id="id4"][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//iota[@attribute="attribute"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::upsilon[starts-with(@false,"attribute-v")][@xml:id="id6"][following-sibling::kappa[contains(@delete,"od")][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]]]]]][position() = 1]] + + + delta + 0 + @@ -19425,6 +22745,11 @@ //phi/beta[contains(@and,"e")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@abort="attribute value"][@xml:lang="no-nb"][@xml:id="id1"][not(following-sibling::*)]//omicron[@content][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[contains(concat(@title,"$"),"lue$")][@xml:lang="en-US"][not(following-sibling::*)]//omega[starts-with(@token,"123")][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[starts-with(concat(@and,"-"),"false-")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::nu[starts-with(@title,"attri")][@xml:lang="nb"][@xml:id="id5"]/kappa[starts-with(@token,"this-is-at")][@xml:lang="en"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::tau[@string]//psi[@desciption][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//psi[@content][not(following-sibling::*)]//zeta[@attr][not(preceding-sibling::*)]/mu[@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::psi[@string="true"][@xml:lang="no"][@xml:id="id9"]//gamma[@title="attribute"][@xml:id="id10"][following-sibling::delta[position() = 1]]][position() = 1]]]]][position() = 1]] + + + beta + 0 + @@ -19460,6 +22785,11 @@ //psi[@xml:id="id1"]/tau[@or][@xml:id="id2"][not(following-sibling::*)]/xi[contains(concat(@or,"$"),"6789$")][not(preceding-sibling::*)]/lambda[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@content][not(following-sibling::*)]/delta[@insert][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[starts-with(concat(@class,"-"),"false-")][@xml:id="id4"][preceding-sibling::*[position() = 1]]//pi[@xml:lang="en"][@xml:id="id5"][following-sibling::theta[contains(@string,"te-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]/delta[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)]//sigma[@xml:lang="no"][not(preceding-sibling::*)]/omega[@xml:lang="en"][@xml:id="id7"]/pi[contains(concat(@token,"$"),"e$")][@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)][position() = 1]]] + + + delta + 0 + @@ -19490,6 +22820,11 @@ //eta[starts-with(concat(@abort,"-"),"another attribute value-")][@xml:lang="nb"]//tau[@xml:id="id1"][not(preceding-sibling::*)]//beta[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::phi[@xml:id="id2"][following-sibling::omicron[contains(concat(@attribute,"$"),"e$")][@xml:id="id3"][not(child::node())][following-sibling::pi[@xml:lang="en"][preceding-sibling::*[position() = 3]][following-sibling::pi[@number][@xml:lang="nb"][preceding-sibling::*[position() = 4]]]][position() = 1]]] + + + beta + 0 + @@ -19506,6 +22841,11 @@ //upsilon[starts-with(@delete,"solid 1px gre")][@xml:id="id1"]/beta/upsilon[not(child::node())][following-sibling::gamma[contains(concat(@false,"$"),"ute-value$")][@xml:lang="no"][not(following-sibling::*)]//mu[not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::omicron[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::epsilon[@object][@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::chi[@class="this-is-att-value"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/pi[contains(concat(@token,"$"),"other attribute value$")][@xml:lang="en"][not(preceding-sibling::*)]//lambda[@xml:id="id2"][not(preceding-sibling::*)]//tau[@xml:id="id3"]/pi[starts-with(@data,"_blank")][not(child::node())][following-sibling::pi[starts-with(@name,"anot")][@xml:lang="no-nb"]//eta[@xml:lang="en-GB"][not(following-sibling::*)]//phi[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + upsilon + 1 + @@ -19537,6 +22877,11 @@ //eta[@or][@xml:lang="en-US"]/iota[@token][following-sibling::tau[@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[contains(@token,"other ")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/kappa[@xml:lang="no-nb"]//xi[@xml:lang="en"][not(preceding-sibling::*)]/tau[@xml:lang="en-GB"][@xml:id="id1"][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[@token="100%"][following-sibling::theta[@xml:id="id2"][not(following-sibling::*)]/chi[@xml:id="id3"][not(child::node())][following-sibling::iota[contains(concat(@false,"$"),"odeValue$")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(preceding-sibling::lambda)]/delta[contains(concat(@abort,"$"),"other attribute value$")][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@attribute="another attribute value"][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 1]]/lambda[@attribute][@xml:lang="no"][not(following-sibling::*)]//*[@xml:lang="en-US"][@xml:id="id7"][not(child::node())][following-sibling::sigma[not(following-sibling::*)]/epsilon[not(preceding-sibling::*)]/theta[starts-with(@abort,"an")][@xml:id="id8"][not(following-sibling::*)]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -19575,6 +22920,11 @@ //epsilon[@xml:lang="no-nb"]//xi[@xml:lang="en-US"][not(preceding-sibling::*)]/gamma[@attr][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:id="id1"]/psi[contains(@attribute,"this.n")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[contains(@attribute,"attribu")][@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::beta[@xml:lang="en-US"][@xml:id="id3"][following-sibling::upsilon[@xml:id="id4"][following-sibling::gamma[starts-with(@title,"10")][not(child::node())][following-sibling::nu//beta[starts-with(@delete,"solid 1p")][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:id="id5"]/rho[not(child::node())][following-sibling::omega[@title][following-sibling::omicron[starts-with(concat(@src,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 2]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + gamma + 0 + @@ -19602,6 +22952,11 @@ //delta[starts-with(concat(@title,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id1"]//theta[@xml:lang="en"][@xml:id="id2"][following-sibling::lambda[starts-with(concat(@token,"-"),"true-")][following-sibling::*[position()=2]][following-sibling::upsilon[@xml:lang="en"][preceding-sibling::*[position() = 2]][following-sibling::delta[@true][not(following-sibling::*)]/*[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::sigma[@xml:id="id3"][not(child::node())][following-sibling::delta[starts-with(@content,"anothe")][@xml:id="id4"][not(following-sibling::*)]//lambda[not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]]/rho[starts-with(@desciption,"this.nodeVa")][@xml:id="id6"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -19624,6 +22979,11 @@ //iota[@xml:lang="no-nb"]//*[starts-with(concat(@insert,"-"),"_blank-")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::eta[@xml:id="id1"]/beta[starts-with(concat(@abort,"-"),"false-")][@xml:lang="nb"][@xml:id="id2"][following-sibling::nu[starts-with(concat(@object,"-"),"_blank-")][@xml:lang="no"][not(following-sibling::*)]/gamma[starts-with(concat(@att,"-"),"attribute-")][@xml:lang="en"][following-sibling::psi[contains(concat(@title,"$")," green$")][@xml:id="id3"][following-sibling::*[position()=3]][following-sibling::kappa[@object][preceding-sibling::*[position() = 2]][following-sibling::gamma[@att="attribute"][@xml:id="id4"][not(child::node())][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]//xi[starts-with(@class,"cont")][@xml:id="id6"][not(preceding-sibling::*)]//pi[@token][@xml:lang="en"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::epsilon[contains(concat(@attr,"$"),"0%$")][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]]/gamma[@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::gamma[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::chi[@token][@xml:id="id11"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::phi[@object="attribute value"][not(following-sibling::*)]/sigma[@xml:lang="en"][not(preceding-sibling::*)]]]]]]]][position() = 1]][position() = 1]]][position() = 1]] + + + any + 0 + @@ -19659,6 +23019,11 @@ //chi[contains(concat(@insert,"$"),"ank$")][@xml:lang="no"]//omicron[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)]//mu[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=9]][following-sibling::*[@xml:id="id3"][following-sibling::rho[@xml:lang="no-nb"][@xml:id="id4"][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][following-sibling::beta[starts-with(@title,"fa")][following-sibling::*[preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::phi[@name="true"][@xml:lang="no-nb"][not(child::node())][following-sibling::zeta[starts-with(concat(@number,"-"),"this-")][@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 7]][following-sibling::phi[@xml:lang="en-GB"][@xml:id="id6"][not(child::node())][following-sibling::upsilon//mu[following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:id="id7"]//kappa[not(following-sibling::*)]/delta[@xml:id="id8"][following-sibling::gamma[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::kappa[@xml:id="id10"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -19689,6 +23054,11 @@ //theta[@xml:lang="no-nb"][@xml:id="id1"]/iota[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::mu[preceding-sibling::*[position() = 1]][following-sibling::pi[contains(concat(@desciption,"$"),"e$")][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::upsilon[starts-with(concat(@att,"-"),"attribute value-")][@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]//delta[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::eta[following-sibling::nu[starts-with(concat(@insert,"-"),"this-")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/phi[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -19708,6 +23078,11 @@ //alpha[@content="content"][@xml:id="id1"]/delta[@token="attribute"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/sigma[@class][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[starts-with(@title,"solid 1px gre")][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa[@xml:lang="en"][@xml:id="id4"]//alpha[@abort="another attribute value"][@xml:id="id5"]/eta[starts-with(@abort,"another attribute ")][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::*[position()=9]][following-sibling::rho[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=8]][following-sibling::*[contains(concat(@token,"$"),"ank$")][@xml:lang="en"][@xml:id="id7"][not(child::node())][following-sibling::chi[@xml:id="id8"][preceding-sibling::*[position() = 3]][following-sibling::epsilon[@xml:id="id9"][not(child::node())][following-sibling::pi[@xml:id="id10"][preceding-sibling::*[position() = 5]][following-sibling::tau[@name][@xml:lang="en"][preceding-sibling::*[position() = 6]][not(child::node())][following-sibling::upsilon[contains(concat(@object,"$"),"e$")][@xml:lang="no"][@xml:id="id11"][following-sibling::*[position()=2]][following-sibling::epsilon[preceding-sibling::*[position() = 8]][following-sibling::*[position()=1]][following-sibling::lambda[starts-with(@data,"attribute-")][preceding-sibling::*[position() = 9]]//eta[@xml:lang="en-US"][not(preceding-sibling::*)]/psi[@xml:lang="en"][@xml:id="id12"][not(preceding-sibling::*)][not(following-sibling::*)]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]] + + + delta + 0 + @@ -19742,6 +23117,11 @@ //xi[contains(concat(@data,"$"),"k$")][@xml:lang="en"]/omicron[contains(concat(@or,"$"),"lse$")][@xml:lang="en-US"][not(following-sibling::*)]//phi[contains(concat(@object,"$"),"00%$")][@xml:lang="en-US"][@xml:id="id1"][not(child::node())][following-sibling::psi[@insert="true"][not(child::node())][following-sibling::epsilon[starts-with(concat(@false,"-"),"attribute value-")][@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]/sigma[@xml:id="id3"][not(following-sibling::*)]/delta[not(preceding-sibling::*)][not(following-sibling::*)]/omega[starts-with(@false,"tr")][@xml:lang="en-US"][not(preceding-sibling::*)]/delta[starts-with(@and,"123456789")][not(following-sibling::*)][position() = 1]][position() = 1]] + + + phi + 0 + @@ -19764,6 +23144,11 @@ //omega[@xml:lang="no"][@xml:id="id1"]//*[@attribute][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::zeta[@xml:id="id2"][preceding-sibling::*[position() = 1]]//lambda[@content="attribute"][not(child::node())][following-sibling::mu[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/kappa[@class="attribute-value"][not(following-sibling::*)][not(preceding-sibling::kappa)]//lambda[starts-with(@token,"a")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::zeta[@or][@xml:lang="en-US"][not(following-sibling::*)]/alpha[@xml:id="id5"][not(child::node())][following-sibling::pi[@xml:lang="en-GB"]//alpha[starts-with(@false,"at")][@xml:id="id6"]//eta[starts-with(@content,"so")][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::eta/sigma[@xml:lang="en-GB"][@xml:id="id8"][not(child::node())][following-sibling::alpha[starts-with(@false,"attribute-")][@xml:lang="no-nb"]//lambda[@false][not(following-sibling::*)]/pi[@false="_blank"][not(preceding-sibling::*)]//upsilon[not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + any + 0 + @@ -19800,6 +23185,11 @@ //kappa[@xml:lang="en-GB"][@xml:id="id1"]//gamma[@xml:lang="en-GB"][not(child::node())][following-sibling::*//gamma[@xml:id="id2"][following-sibling::delta[@object][not(preceding-sibling::delta)]//omega[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(preceding-sibling::epsilon)]//rho[@xml:lang="no-nb"]/kappa[@xml:lang="en-GB"]/kappa[not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@class="this.nodeValue"][@xml:id="id6"][preceding-sibling::*[position() = 1]]/tau[@xml:lang="no-nb"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:lang="en-GB"][not(following-sibling::*)]//nu[@xml:lang="nb"][not(preceding-sibling::*)]/phi[@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@true][@xml:id="id9"]/alpha[@xml:id="id10"][not(child::node())][following-sibling::mu[@src="attribute value"][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::mu)]//nu[starts-with(concat(@object,"-"),"true-")][not(preceding-sibling::*)][not(child::node())][following-sibling::*[starts-with(concat(@true,"-"),"true-")][@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[starts-with(@token,"_bla")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]]]]] + + + gamma + 0 + @@ -19843,6 +23233,11 @@ //alpha[@xml:lang="no-nb"][@xml:id="id1"]/delta[@false][@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]//nu[contains(@number,"0")][@xml:id="id3"][not(preceding-sibling::*)][not(preceding-sibling::nu)]/upsilon[starts-with(@src,"ano")][@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::theta[@xml:lang="en"][@xml:id="id5"][not(following-sibling::*)]//xi[contains(concat(@attrib,"$"),"se$")][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="no"][not(following-sibling::*)]//rho[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::rho)]//phi[@src][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[starts-with(concat(@content,"-"),"attribute value-")][@xml:lang="nb"][not(following-sibling::*)]//psi[@attribute][@xml:lang="en"][not(preceding-sibling::*)]/upsilon[contains(@insert,"nother attri")]//delta[@number]/psi[@true="this-is-att-value"][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(preceding-sibling::psi)][following-sibling::tau[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::alpha[@content="false"][not(child::node())][following-sibling::beta[contains(concat(@content,"$"),"false$")][@xml:lang="nb"]//delta[@xml:lang="no-nb"][@xml:id="id10"]//iota[@xml:lang="no"][@xml:id="id11"][not(preceding-sibling::*)]//gamma[@src][@xml:id="id12"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + upsilon + 0 + @@ -19884,6 +23279,11 @@ //mu[@xml:lang="no-nb"][@xml:id="id1"]//tau[@xml:id="id2"][not(following-sibling::*)]//omicron[@xml:lang="en-US"][@xml:id="id3"][following-sibling::delta[@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[contains(concat(@att,"$")," value$")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/theta[contains(@abort,"1px green")][not(preceding-sibling::*)]/zeta[@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::upsilon[@attr][@xml:lang="no"]/epsilon[contains(concat(@object,"$"),"ttribute value$")][@xml:lang="nb"][@xml:id="id6"]//omega[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::omega)][not(child::node())][following-sibling::beta[@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::omicron[@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/rho[@xml:id="id10"]//psi[@attr][@xml:lang="en-GB"][@xml:id="id11"][not(following-sibling::psi)][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id12"][preceding-sibling::*[position() = 1]]//pi[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@xml:lang="en-GB"][not(following-sibling::*)]/xi[@xml:lang="en-US"][not(preceding-sibling::*)]/kappa[@xml:lang="en-US"][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id13"]/zeta[contains(concat(@number,"$"),"ribute-value$")][not(preceding-sibling::*)]//omicron[@xml:lang="en"][@xml:id="id14"][not(preceding-sibling::*)][following-sibling::iota[contains(concat(@attrib,"$"),"-value$")][@xml:lang="no"][@xml:id="id15"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[@xml:lang="no"][@xml:id="id16"]][position() = 1]]]][position() = 1]]]][position() = 1]][position() = 1]] + + + omicron + 0 + @@ -19929,6 +23329,11 @@ //phi//zeta[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//alpha[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[@xml:lang="en-US"][@xml:id="id1"]/epsilon[@token="this.nodeValue"][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::kappa[@data][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//mu[@string="false"][@xml:lang="nb"][not(preceding-sibling::*)]//epsilon[not(preceding-sibling::*)][not(following-sibling::*)]//pi[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::iota[starts-with(@content,"123")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/sigma[not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en-US"][not(following-sibling::*)]]]]][position() = 1]] + + + zeta + 0 + @@ -19960,6 +23365,11 @@ //alpha[@xml:lang="no-nb"][@xml:id="id1"]/omega[contains(@content,"%")][@xml:lang="en-US"]//psi[@insert][not(preceding-sibling::*)][not(following-sibling::*)]/*[not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@content][@xml:lang="en"]//sigma[not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@xml:lang="no-nb"][following-sibling::xi[starts-with(@false,"12")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]] + + + omicron + 0 + @@ -19981,6 +23391,11 @@ //psi[contains(@src,"n")]//gamma[@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]//beta[@xml:id="id2"][not(preceding-sibling::*)]//sigma[contains(concat(@false,"$"),"rue$")][@xml:lang="no-nb"][not(preceding-sibling::*)]/xi[contains(concat(@number,"$")," 1px green$")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]/pi[contains(concat(@src,"$"),"ontent$")][not(child::node())][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::rho[starts-with(@attr,"tr")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/zeta[contains(@attribute,"e")][@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[starts-with(concat(@desciption,"-"),"true-")][@xml:lang="en"][not(following-sibling::*)]//xi[@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@insert="this.nodeValue"][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//omega[starts-with(concat(@delete,"-"),"solid 1px green-")]/psi[contains(@or,"te value")][@xml:lang="en-GB"][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::phi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(following-sibling::phi)][not(child::node())][following-sibling::theta[@false="solid 1px green"][following-sibling::eta[preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:lang="en-GB"][preceding-sibling::*[position() = 4]]/alpha[@xml:id="id9"]][position() = 1]]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -20023,6 +23438,11 @@ //phi[contains(concat(@object,"$"),"9$")][@xml:id="id1"]/xi[following-sibling::*[position()=1]][following-sibling::omicron[preceding-sibling::*[position() = 1]]//lambda[not(preceding-sibling::*)][not(child::node())][following-sibling::beta[starts-with(concat(@attribute,"-"),"_blank-")][following-sibling::chi[@xml:id="id2"][following-sibling::sigma[@and][@xml:lang="en"][@xml:id="id3"]/eta[contains(@false,"tr")][@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]/iota[starts-with(concat(@abort,"-"),"solid 1px green-")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@content="content"][not(preceding-sibling::*)]//mu[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="nb"][@xml:id="id7"][not(following-sibling::*)]//mu[@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::mu[contains(@insert,"another")]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + xi + 0 + @@ -20051,6 +23471,11 @@ //chi[starts-with(@true,"this.nod")]//sigma[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@insert][@xml:lang="no-nb"][not(child::node())][following-sibling::phi[@title][@xml:lang="en-GB"][following-sibling::pi[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::lambda[starts-with(@data,"_")][@xml:lang="en-GB"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]//iota[@xml:lang="en"][@xml:id="id3"]//lambda[contains(concat(@att,"$"),"100%$")][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -20072,6 +23497,11 @@ //*[@xml:lang="no"]/kappa[starts-with(concat(@title,"-"),"100%-")][@xml:lang="en"][not(child::node())][following-sibling::omicron[starts-with(@attribute,"solid ")][@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]]//alpha[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@attr="false"][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//upsilon[not(preceding-sibling::*)][following-sibling::gamma[contains(@attribute,"ank")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]] + + + kappa + 0 + @@ -20089,6 +23519,11 @@ //lambda[contains(@att,"e")][@xml:lang="en-GB"]//kappa[@object="solid 1px green"][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::lambda[contains(@string,"her attri")][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::rho[@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[starts-with(concat(@true,"-"),"123456789-")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/alpha//zeta[following-sibling::*[position()=1]][following-sibling::*[@data][preceding-sibling::*[position() = 1]]//xi[contains(concat(@abort,"$"),"green$")][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[starts-with(concat(@title,"-"),"123456789-")][@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/psi[contains(@delete,"e")][@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)]/epsilon[@string][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@xml:id="id7"][not(following-sibling::*)]//delta[contains(concat(@abort,"$"),"nother attribute value$")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[@xml:id="id8"][not(following-sibling::*)]/lambda[@xml:lang="nb"][@xml:id="id9"][following-sibling::gamma[@desciption][@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]]/rho[contains(@and,"100")]]][position() = 1]]]][position() = 1]]] + + + kappa + 0 + @@ -20126,6 +23561,11 @@ //eta[starts-with(@src,"solid ")][@xml:lang="en-US"]//chi[@xml:id="id1"]//rho[@xml:lang="en-US"][following-sibling::delta[starts-with(@string,"attribut")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::sigma[following-sibling::phi//omicron[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::gamma[not(child::node())][following-sibling::omega[contains(concat(@attr,"$"),"e$")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omega[@class][not(following-sibling::*)]/eta//iota[@xml:lang="no-nb"][not(child::node())][following-sibling::omega[contains(concat(@delete,"$"),"56789$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:lang="en-US"][not(preceding-sibling::*)]//delta[@src][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@delete][following-sibling::mu[@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@attr="123456789"][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]]//delta[contains(concat(@and,"$"),"value$")][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@number][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@string][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + rho + 0 + @@ -20164,6 +23604,11 @@ //lambda[@xml:lang="en-US"]/kappa[not(following-sibling::*)]//eta[contains(@abort,"789")][not(preceding-sibling::*)][not(following-sibling::*)]//psi[contains(concat(@or,"$"),"te$")]/phi[not(preceding-sibling::*)]//*[@or="solid 1px green"][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:id="id2"]//omega[starts-with(concat(@delete,"-"),"attribute-")][@xml:lang="en-GB"][following-sibling::mu[@xml:lang="no"][not(following-sibling::*)]/omega[contains(concat(@title,"$"),"ribute value$")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="no"][not(child::node())][following-sibling::nu[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:id="id5"][not(following-sibling::*)]/pi[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[not(preceding-sibling::xi)]]][position() = 1]]] + + + omega + 0 + @@ -20196,6 +23641,11 @@ //omicron[@xml:lang="no"][@xml:id="id1"]//omicron[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::omicron or following-sibling::omicron)]//zeta[starts-with(concat(@src,"-"),"false-")][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[starts-with(concat(@abort,"-"),"123456789-")][not(following-sibling::*)]/iota[following-sibling::kappa[contains(concat(@or,"$"),"ttribute-value$")][@xml:id="id4"][preceding-sibling::*[position() = 1]]/gamma[@true][not(following-sibling::*)]//sigma[@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::rho[@xml:lang="en-US"]//nu[@xml:lang="en"][not(following-sibling::*)]//epsilon[@name][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[starts-with(concat(@data,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)]//xi[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[contains(@number,"00%")][@xml:lang="en-GB"][following-sibling::omicron[contains(@true,"d 1px ")][@xml:id="id8"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -20229,6 +23679,11 @@ //theta[@attr][@xml:lang="en-US"][@xml:id="id1"]//epsilon[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::nu[contains(@attr,"-")][preceding-sibling::*[position() = 2]]/epsilon[not(preceding-sibling::*)]//nu[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[@abort][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[@and][@xml:lang="no"]//alpha[starts-with(@desciption,"att")][@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]] + + + epsilon + 0 + @@ -20249,6 +23704,11 @@ //iota[contains(concat(@or,"$"),"0%$")][@xml:lang="en-GB"][@xml:id="id1"]/upsilon[@data][not(preceding-sibling::*)][following-sibling::eta[starts-with(@attribute,"th")]//xi[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::rho[@and][@xml:id="id4"][following-sibling::delta[starts-with(concat(@abort,"-"),"100%-")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/eta[@xml:lang="en"][following-sibling::iota[following-sibling::nu[preceding-sibling::*[position() = 2]][not(following-sibling::*)]/lambda[contains(concat(@string,"$"),"0%$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@string][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[starts-with(concat(@string,"-"),"another attribute value-")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::rho[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]/chi[not(preceding-sibling::*)][not(child::node())][following-sibling::rho[starts-with(concat(@content,"-"),"100%-")][@xml:lang="no"]//mu[@xml:lang="en-GB"][not(following-sibling::*)]/pi[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[starts-with(@false,"t")][@xml:lang="nb"][not(following-sibling::*)]//rho[@xml:lang="en-US"][not(child::node())][following-sibling::theta[not(following-sibling::*)]/beta[@desciption][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]] + + + upsilon + 0 + @@ -20290,6 +23750,11 @@ //lambda[@xml:lang="no"][@xml:id="id1"]//tau[contains(@delete,"5678")][@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]//gamma[@xml:lang="en"][not(following-sibling::*)]//nu[@xml:id="id3"][following-sibling::*[position()=2]][following-sibling::sigma[@xml:lang="en-US"][@xml:id="id4"][following-sibling::alpha[@src="content"][@xml:id="id5"]/lambda[not(child::node())][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::nu[starts-with(concat(@title,"-"),"another attribute value-")][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::*[starts-with(@delete,"t")][not(child::node())][following-sibling::lambda[@xml:id="id7"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::xi[starts-with(@src,"_blank")][@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//upsilon[contains(concat(@delete,"$"),"ontent$")][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[contains(@content,"9")][@xml:id="id10"][preceding-sibling::*[position() = 2]]//xi[contains(@abort,"ue")][@xml:lang="no"][@xml:id="id11"][following-sibling::*[position()=4]][not(child::node())][following-sibling::psi[starts-with(concat(@content,"-"),"solid 1px green-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::pi[contains(@delete,"green")][@xml:id="id12"][following-sibling::*[position()=2]][following-sibling::phi[@xml:id="id13"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::pi[contains(@data,"_")]]]][position() = 1]]][position() = 1]]][position() = 1]]]]][position() = 1]]] + + + nu + 0 + @@ -20323,6 +23788,11 @@ //tau[@xml:lang="no-nb"]/eta[@data][@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)]//lambda[@xml:lang="nb"][not(following-sibling::*)]//iota[not(following-sibling::*)]//kappa[@or][@xml:id="id2"][not(child::node())][following-sibling::rho[@name="another attribute value"][@xml:lang="no"]/delta[starts-with(concat(@class,"-"),"false-")][@xml:lang="en"][not(preceding-sibling::*)]/eta[@src="another attribute value"][@xml:id="id3"][following-sibling::nu[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[starts-with(@content,"at")][@xml:lang="en-GB"][@xml:id="id4"]//lambda[starts-with(concat(@att,"-"),"this.nodeValue-")][@xml:lang="nb"][not(preceding-sibling::*)]//beta[@insert="attribute value"][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[@xml:lang="no"][following-sibling::theta[starts-with(@or,"attribu")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@class][@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[starts-with(concat(@att,"-"),"123456789-")][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@xml:lang="no"][following-sibling::upsilon[@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 2]][following-sibling::epsilon[@or][not(child::node())][following-sibling::omega[@xml:id="id8"][preceding-sibling::*[position() = 4]][not(preceding-sibling::omega)]/iota[@xml:lang="nb"][@xml:id="id9"][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]]] + + + kappa + 0 + @@ -20367,6 +23837,11 @@ //eta/iota[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(preceding-sibling::iota)]//theta[contains(concat(@true,"$"),"en$")][@xml:lang="no-nb"][not(following-sibling::*)]//delta[contains(concat(@number,"$"),"blank$")][@xml:lang="en"][@xml:id="id2"]/eta[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[starts-with(concat(@title,"-"),"solid 1px green-")][@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::*[starts-with(@content,"anoth")][@xml:lang="en-US"][@xml:id="id5"][not(child::node())][following-sibling::gamma[@and="another attribute value"][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[@class="this-is-att-value"][@xml:id="id6"][not(preceding-sibling::*)]//theta[contains(@title,"%")][@xml:lang="no-nb"][not(child::node())][following-sibling::pi[@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::psi[contains(@delete,"tru")][following-sibling::*[position()=2]][following-sibling::kappa[@att="another attribute value"][preceding-sibling::*[position() = 3]][following-sibling::alpha[@xml:lang="no-nb"]//gamma]]][position() = 1]]][position() = 1]] + + + rho + 0 + @@ -20397,6 +23872,11 @@ //sigma[contains(concat(@attribute,"$"),"bute value$")][@xml:id="id1"]//epsilon[contains(concat(@false,"$"),"e$")][@xml:lang="nb"][@xml:id="id2"]/alpha[following-sibling::*[@attribute][not(child::node())][following-sibling::*[@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omega/theta[not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id4"][not(child::node())][following-sibling::zeta[@attribute]//xi[starts-with(@name,"this-is-at")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@false][@xml:lang="en-US"][not(child::node())][following-sibling::epsilon[@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@name][@xml:id="id7"]//gamma[following-sibling::lambda[@xml:lang="nb"]/mu[starts-with(concat(@and,"-"),"false-")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="no-nb"]//lambda[@xml:lang="nb"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[contains(@and,"e")][following-sibling::gamma[@insert][@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]][position() = 1]][position() = 1]]]]]][position() = 1]]] + + + alpha + 0 + @@ -20435,6 +23915,11 @@ //beta[contains(concat(@desciption,"$"),"e$")][@xml:lang="en"][@xml:id="id1"]/theta[contains(concat(@desciption,"$"),"23456789$")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]/psi[starts-with(@data,"fal")][@xml:lang="en-GB"][@xml:id="id3"]/iota[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::omicron[starts-with(@false,"attribut")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]/xi[@token="attribute"][@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)][position() = 1]] + + + iota + 0 + @@ -20452,6 +23937,11 @@ //iota[starts-with(concat(@and,"-"),"solid 1px green-")]//psi//theta[not(preceding-sibling::*)][following-sibling::alpha[@desciption="_blank"][following-sibling::*[position()=2]][following-sibling::sigma[@xml:lang="en-GB"][following-sibling::kappa[contains(concat(@true,"$"),"en$")][@xml:lang="no"][@xml:id="id1"]//pi[@class="solid 1px green"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::pi)]//upsilon[starts-with(concat(@token,"-"),"123456789-")][@xml:lang="no"][not(following-sibling::*)]//phi[@insert][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::kappa[contains(concat(@delete,"$"),"alue$")][@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::*[@xml:lang="no-nb"][not(preceding-sibling::any)]//rho[@false][following-sibling::chi[contains(concat(@attrib,"$"),"lid 1px green$")][@xml:lang="en-US"][following-sibling::*[position()=3]][following-sibling::epsilon[@xml:lang="no"][preceding-sibling::*[position() = 2]][following-sibling::beta[@xml:lang="en"][@xml:id="id5"][not(child::node())][following-sibling::omicron[contains(concat(@attr,"$")," value$")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -20481,6 +23971,11 @@ //xi[@attrib="attribute-value"][@xml:lang="no-nb"]/beta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]][following-sibling::mu[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::upsilon[@att][not(child::node())][following-sibling::beta[@true="123456789"][@xml:lang="nb"]/eta[not(preceding-sibling::*)][not(following-sibling::*)]//theta[starts-with(concat(@class,"-"),"attribute value-")][@xml:lang="no-nb"][not(child::node())][following-sibling::*[@xml:lang="en-GB"][not(following-sibling::*)]/*[starts-with(@token,"solid ")][not(following-sibling::*)]/tau[contains(concat(@class,"$"),"_blank$")][@xml:lang="en-GB"][@xml:id="id1"][following-sibling::eta[starts-with(@token,"t")][@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//theta[@or][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[not(following-sibling::*)]//rho[@and="attribute value"][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[not(following-sibling::*)]/omicron[starts-with(concat(@string,"-"),"content-")][@xml:lang="nb"][not(preceding-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + beta + 0 + @@ -20514,6 +24009,11 @@ //upsilon[@xml:lang="en"][@xml:id="id1"]//lambda[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[contains(@insert,"is-is-att-value")][@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)][not(preceding-sibling::xi)]/omega[@xml:id="id3"][not(following-sibling::*)]//alpha[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[contains(@token,"%")][not(preceding-sibling::*)][not(following-sibling::*)]] + + + lambda + 0 + @@ -20531,6 +24031,11 @@ //psi[@xml:id="id1"]//iota[contains(@object,"%")][not(preceding-sibling::*)][not(child::node())][following-sibling::*[contains(concat(@attrib,"$"),"value$")][@xml:id="id2"]/phi[contains(@attrib,"ent")][@xml:lang="en"]/eta[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@xml:lang="no-nb"][not(child::node())][following-sibling::xi[@xml:lang="nb"][not(following-sibling::*)]/delta[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="en-US"][@xml:id="id4"][following-sibling::omicron[contains(@name,"9")][@xml:lang="nb"]//epsilon[@number][@xml:id="id5"][not(child::node())][following-sibling::zeta[@true][@xml:lang="en-GB"][following-sibling::*[position()=7]][not(child::node())][following-sibling::theta[starts-with(concat(@insert,"-"),"true-")][preceding-sibling::*[position() = 2]][following-sibling::*[position()=6]][following-sibling::eta[@attrib="false"][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=5]][following-sibling::omicron[starts-with(concat(@content,"-"),"attribute-")][@xml:id="id7"][not(child::node())][following-sibling::zeta[@xml:id="id8"][not(child::node())][following-sibling::gamma[@desciption="true"][@xml:id="id9"][preceding-sibling::*[position() = 6]][following-sibling::kappa[@xml:id="id10"][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][not(following-sibling::*)]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -20562,6 +24067,11 @@ //sigma[@xml:lang="en-US"]/zeta[@xml:lang="en"][not(child::node())][following-sibling::theta[@token][@xml:lang="nb"][not(preceding-sibling::theta or following-sibling::theta)][not(child::node())][following-sibling::psi[contains(@token,"ribu")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::epsilon[@xml:id="id1"][preceding-sibling::*[position() = 3]][following-sibling::upsilon[@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::chi[contains(concat(@or,"$"),"blank$")][@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 5]][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]] + + + zeta + 0 + @@ -20577,6 +24087,11 @@ //omega[@xml:lang="en-GB"]/psi[@xml:id="id1"][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@xml:lang="nb"][not(following-sibling::*)]/rho[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[starts-with(@insert,"thi")][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::alpha[not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -20594,6 +24109,11 @@ //xi[contains(@attr,"tru")][@xml:lang="en-US"][@xml:id="id1"]/theta[not(following-sibling::*)]//omega[contains(@object,"this")][@xml:id="id2"][not(preceding-sibling::*)]/zeta[contains(concat(@title,"$"),"nk$")][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::iota[@xml:lang="no-nb"][not(following-sibling::*)]//pi[@xml:id="id4"][not(child::node())][following-sibling::nu[@attrib][@xml:lang="nb"][@xml:id="id5"][following-sibling::omega[contains(@and,"e")][@xml:lang="en"][following-sibling::iota[@xml:lang="en-GB"][not(following-sibling::*)]//beta[@xml:lang="no"][following-sibling::sigma[contains(concat(@false,"$"),"k$")][not(child::node())][following-sibling::sigma[@string="attribute-value"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@or="attribute"][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/iota[starts-with(@name,"attrib")][@xml:id="id8"][not(child::node())][following-sibling::theta[@content][@xml:id="id9"]]][position() = 1]]]]]]]] + + + zeta + 0 + @@ -20623,6 +24143,11 @@ //sigma[@token]//eta[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[@number][@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//omicron[@data][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::lambda[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::tau[not(following-sibling::*)]/lambda[@xml:id="id4"][not(preceding-sibling::*)]/mu[starts-with(@title,"s")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omicron[@src][@xml:lang="no"][not(child::node())][following-sibling::psi[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:lang="no-nb"][not(following-sibling::*)]/beta[contains(concat(@token,"$"),"r attribute value$")][@xml:lang="no-nb"][not(preceding-sibling::*)]//chi[@token][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@title="false"][@xml:lang="en-US"][@xml:id="id7"]//lambda[@desciption][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:lang="en-US"][not(following-sibling::*)]//iota/mu[@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:id="id9"][not(child::node())][following-sibling::gamma[contains(concat(@string,"$"),"tent$")][@xml:lang="nb"][@xml:id="id10"]/lambda[@desciption][@xml:lang="en"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::xi[@xml:id="id12"][preceding-sibling::*[position() = 1]][not(following-sibling::xi)][following-sibling::theta[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id13"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]]] + + + eta + 0 + @@ -20668,6 +24193,11 @@ //omicron[@xml:id="id1"]/phi[contains(concat(@title,"$"),"1px green$")][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]//tau[@xml:id="id3"][not(child::node())][following-sibling::delta[@true="true"][not(following-sibling::*)]//epsilon[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@xml:lang="no"][following-sibling::psi[@number][@xml:lang="nb"][following-sibling::gamma[following-sibling::zeta[contains(concat(@object,"$"),"%$")][@xml:lang="nb"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[starts-with(@att,"f")][not(preceding-sibling::sigma)]]]]][position() = 1]] + + + tau + 0 + @@ -20689,6 +24219,11 @@ //sigma[@xml:lang="no"]//lambda[following-sibling::*[position()=1]][following-sibling::phi[@content="this.nodeValue"][@xml:lang="no-nb"][@xml:id="id1"][not(following-sibling::*)]//theta[@abort][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@data][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[starts-with(concat(@number,"-"),"true-")][@xml:id="id3"][not(following-sibling::zeta)][not(child::node())][following-sibling::beta[@xml:id="id4"][not(following-sibling::*)]/rho[@xml:lang="nb"]//zeta[@content="attribute"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::beta[contains(concat(@attribute,"$"),"n$")][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]//sigma[contains(concat(@class,"$"),"789$")][@xml:lang="en-US"]/eta[@number][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:id="id8"][preceding-sibling::*[position() = 1]]/omicron[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::iota[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//theta[@xml:lang="en-US"][position() = 1]][position() = 1]]]]][position() = 1]] + + + lambda + 0 + @@ -20721,6 +24256,11 @@ //nu[@xml:lang="no-nb"][@xml:id="id1"]//omega[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@delete][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]]/lambda[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@xml:id="id3"][not(child::node())][following-sibling::alpha[@title][@xml:lang="no"][@xml:id="id4"]//delta[not(preceding-sibling::*)][not(following-sibling::*)]//eta[@att][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[not(preceding-sibling::*)]//psi[@and="false"][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@attribute][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::nu[starts-with(concat(@token,"-"),"123456789-")][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::delta[following-sibling::mu[@data="another attribute value"]//omega[@data][@xml:lang="en-US"][not(preceding-sibling::*)]][position() = 1]]]]] + + + any + 0 + @@ -20754,6 +24294,11 @@ //kappa//kappa[contains(concat(@false,"$"),"tent$")][@xml:id="id1"][not(child::node())][following-sibling::iota[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@att]//sigma[@xml:lang="en"][@xml:id="id2"][not(child::node())][following-sibling::delta[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[contains(concat(@name,"$"),"ue$")][not(preceding-sibling::*)][following-sibling::lambda[starts-with(concat(@token,"-"),"100%-")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::upsilon[starts-with(@attr,"solid 1px gr")][@xml:lang="en-US"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + kappa + 1 + @@ -20774,6 +24319,11 @@ //chi[starts-with(concat(@name,"-"),"solid 1px green-")]/xi[@xml:id="id1"][not(following-sibling::*)]//tau[@xml:lang="en-US"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[contains(@and,"00%")][@xml:id="id3"]/beta[@xml:id="id4"][following-sibling::gamma[@xml:lang="en"][@xml:id="id5"][following-sibling::epsilon[@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[starts-with(concat(@attr,"-"),"true-")][@xml:lang="no"][not(preceding-sibling::nu)][following-sibling::eta[contains(@content,"een")][@xml:lang="no"][preceding-sibling::*[position() = 1]]/iota[@xml:lang="no"][following-sibling::*[position()=1]][following-sibling::iota[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/theta[@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::sigma[@desciption="true"][@xml:id="id8"]//kappa[contains(@insert,"ri")][not(preceding-sibling::*)][following-sibling::omega[starts-with(concat(@false,"-"),"true-")]//mu[contains(@false,"ru")][@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::omicron[@xml:lang="nb"][@xml:id="id9"][not(child::node())][following-sibling::iota[@xml:lang="nb"][not(following-sibling::*)]//alpha[@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[contains(@src,"nt")][preceding-sibling::*[position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + tau + 0 + @@ -20810,6 +24360,11 @@ //beta[@xml:id="id1"]//iota[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]/iota[@xml:lang="no-nb"][not(preceding-sibling::*)]//epsilon[@xml:lang="en"][not(preceding-sibling::*)]/lambda[not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)]//delta[@false][@xml:lang="no-nb"] + + + delta + 0 + @@ -20830,6 +24385,11 @@ //nu[@xml:id="id1"]/beta[starts-with(@attrib,"solid 1px gr")][following-sibling::tau[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::psi[@string][@xml:lang="no-nb"][@xml:id="id3"][not(child::node())][following-sibling::alpha[@delete][@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 4]]][position() = 1]][position() = 1]]] + + + beta + 0 + @@ -20844,6 +24404,11 @@ //iota[contains(concat(@token,"$"),"false$")][@xml:lang="en"][@xml:id="id1"]/lambda[@number="true"][@xml:id="id2"]/upsilon[@token][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[@xml:lang="nb"][not(following-sibling::*)]/eta[not(preceding-sibling::*)][following-sibling::nu[starts-with(concat(@object,"-"),"solid 1px green-")][@xml:id="id3"][preceding-sibling::*[position() = 1]]/nu[@src][not(following-sibling::*)]/tau[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[not(following-sibling::*)]//tau[starts-with(@false,"th")]//mu[starts-with(@delete,"a")][@xml:lang="nb"][@xml:id="id5"]//lambda[starts-with(concat(@and,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)]/nu[contains(concat(@string,"$"),"tent$")][@xml:lang="no"][not(preceding-sibling::*)]//chi[position() = 1]][position() = 1]][position() = 1]] + + + upsilon + 0 + @@ -20875,6 +24440,11 @@ //mu//lambda[starts-with(@attr,"100")][@xml:lang="no-nb"][@xml:id="id1"]/chi[@xml:id="id2"][not(child::node())][following-sibling::beta[@delete="true"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@src="solid 1px green"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::sigma[not(child::node())][following-sibling::rho[starts-with(@attribute,"attribu")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[starts-with(@abort,"this.nodeV")][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[contains(concat(@attrib,"$"),"lue$")]/chi[@abort="false"][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::nu[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::mu[@xml:id="id6"]/beta[following-sibling::kappa[starts-with(concat(@object,"-"),"this-")][@xml:lang="en-US"][@xml:id="id7"][not(child::node())][following-sibling::rho[@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::sigma[@title][@xml:id="id9"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//xi[@false][not(preceding-sibling::*)][following-sibling::pi[@xml:id="id10"][preceding-sibling::*[position() = 1]]//nu[starts-with(@attribute,"conte")][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::psi[starts-with(concat(@number,"-"),"true-")][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@true="123456789"][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::rho[@xml:lang="en-US"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]]][position() = 1]]]]]]][position() = 1]][position() = 1]]][position() = 1]]] + + + chi + 0 + @@ -20912,6 +24482,11 @@ //xi[@attrib]//delta[@xml:lang="no-nb"][not(preceding-sibling::*)]/gamma[not(following-sibling::*)]//beta[contains(concat(@title,"$"),"odeValue$")][@xml:id="id1"]/omega[contains(@true,"ribute value")][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id2"]/chi[@xml:lang="en"][not(following-sibling::*)][not(parent::*/*[position()=2])]/rho[@insert][@xml:lang="no"][following-sibling::iota[following-sibling::upsilon[starts-with(@abort,"this.nodeVal")][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]]] + + + rho + 0 + @@ -20936,6 +24511,11 @@ //mu//epsilon[@attrib="123456789"][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 1]]/gamma[@xml:id="id2"][not(child::node())][following-sibling::rho[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::kappa[@xml:lang="no"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::zeta[contains(@and,"123456")][@xml:lang="en-US"][following-sibling::chi[contains(concat(@or,"$"),"odeValue$")][preceding-sibling::*[position() = 5]]/lambda[starts-with(@object,"1")][@xml:id="id5"][not(following-sibling::*)]/theta[not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + epsilon + 0 + @@ -20959,6 +24539,11 @@ //sigma[@xml:id="id1"]/gamma[@xml:lang="en-US"][following-sibling::*[position()=1]][following-sibling::nu//alpha[@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=3]][not(child::node())][following-sibling::tau[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[not(child::node())][following-sibling::gamma/kappa[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[not(child::node())][following-sibling::xi[@xml:lang="en-US"][@xml:id="id3"]//beta[@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[starts-with(@string,"fal")][@xml:lang="en"][following-sibling::*[position()=3]][not(child::node())][following-sibling::epsilon[contains(@name,"eVal")][@xml:lang="en-GB"][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[not(child::node())][following-sibling::iota[@delete][@xml:lang="en-US"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//eta[not(preceding-sibling::*)][following-sibling::eta[@number][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//gamma[contains(@token,"ank")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)]//omega[not(following-sibling::*)]/delta[@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]]][position() = 1]] + + + gamma + 0 + @@ -20996,6 +24581,11 @@ //alpha[@xml:id="id1"]//epsilon[not(preceding-sibling::*)][following-sibling::pi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omicron[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[not(child::node())][following-sibling::epsilon[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::tau[@xml:lang="nb"][preceding-sibling::*[position() = 2]]//iota[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::iota[@token="100%"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[@xml:id="id5"][preceding-sibling::*[position() = 2]][position() = 1]]][position() = 1]]]] + + + epsilon + 0 + @@ -21017,6 +24607,11 @@ //omicron[@number]/tau[@xml:lang="en-GB"][not(preceding-sibling::*)][not(preceding-sibling::tau or following-sibling::tau)][following-sibling::iota[starts-with(concat(@class,"-"),"true-")][preceding-sibling::*[position() = 1]][following-sibling::nu[@xml:id="id1"][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 3]][following-sibling::pi[contains(@desciption,"0")][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/sigma[@token][following-sibling::eta[contains(concat(@object,"$"),"her attribute value$")][@xml:lang="en-US"][@xml:id="id2"]//rho[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)]//*[contains(concat(@att,"$"),"ute value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@desciption]]]]]][position() = 1]] + + + tau + 0 + @@ -21039,6 +24634,11 @@ //delta[contains(concat(@class,"$"),"9$")][@xml:lang="nb"]/mu[@xml:lang="no"][not(preceding-sibling::*)]/phi[starts-with(concat(@string,"-"),"attribute-")][@xml:lang="no"][@xml:id="id1"][not(child::node())][following-sibling::theta[contains(concat(@class,"$"),"tribute value$")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::mu[following-sibling::phi[@delete][@xml:id="id4"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::chi[@xml:lang="no"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]//chi[@class="solid 1px green"][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]/zeta[@object="_blank"][@xml:lang="en-GB"]/*[not(preceding-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -21064,6 +24664,11 @@ //theta[@xml:lang="nb"]/kappa[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[contains(@number,"his-is-at")][not(following-sibling::*)]//epsilon[@attrib][@xml:id="id2"][not(following-sibling::*)]//tau[@number][@xml:lang="en"][not(following-sibling::*)]//beta[starts-with(concat(@attr,"-"),"123456789-")][@xml:id="id3"][not(following-sibling::*)]//kappa[@xml:id="id4"][not(child::node())][following-sibling::epsilon[starts-with(@abort,"solid 1px gr")][@xml:id="id5"][not(child::node())][following-sibling::beta[not(following-sibling::*)]//nu/iota[not(preceding-sibling::*)]/eta[starts-with(concat(@data,"-"),"100%-")][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@attr][@xml:lang="no"][not(child::node())][following-sibling::omega[contains(@false,"tent")][preceding-sibling::*[position() = 2]]//upsilon[starts-with(@insert,"false")][@xml:lang="en-US"]//lambda[@attribute][@xml:lang="no-nb"][@xml:id="id6"][not(child::node())][following-sibling::kappa[@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][following-sibling::zeta[starts-with(concat(@true,"-"),"content-")][@xml:id="id8"][following-sibling::*[position()=4]][following-sibling::pi[preceding-sibling::*[position() = 3]][following-sibling::omega[starts-with(@attribute,"so")][not(child::node())][following-sibling::sigma[@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::psi[@xml:lang="en-GB"][preceding-sibling::*[position() = 6]][not(following-sibling::*)]/beta[@xml:lang="en"]/psi[@xml:lang="nb"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]]]] + + + kappa + 1 + @@ -21108,6 +24713,11 @@ //omega/epsilon[@insert][not(child::node())][following-sibling::zeta[starts-with(concat(@string,"-"),"attribute value-")][@xml:id="id1"][not(child::node())][following-sibling::gamma[starts-with(@false,"this-is-att-")][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/pi[not(preceding-sibling::*)][following-sibling::phi[@content][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[contains(@true," 1px green")][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 3]]//zeta[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)]//iota[contains(@token,"se")][@xml:id="id8"][not(child::node())][following-sibling::xi[starts-with(concat(@insert,"-"),"another attribute value-")][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[contains(@object,"te")][@xml:id="id10"][not(child::node())][following-sibling::psi[@xml:lang="nb"][following-sibling::nu[contains(concat(@content,"$"),"ute$")][@xml:lang="no-nb"][following-sibling::nu[starts-with(@string,"solid 1px gre")][@xml:lang="en-GB"][@xml:id="id11"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]]]] + + + epsilon + 0 + @@ -21136,6 +24746,11 @@ //*[@string]/chi//mu[@name][@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[contains(@desciption,"b")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::tau[contains(concat(@att,"$"),"true$")][following-sibling::upsilon[contains(@attr,"nk")][@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::xi[contains(concat(@class,"$"),"se$")][@xml:lang="en-GB"][following-sibling::*[@xml:id="id4"][preceding-sibling::*[position() = 4]]/lambda[@xml:lang="en"][@xml:id="id5"]//beta[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@delete][following-sibling::psi[@xml:lang="no-nb"][@xml:id="id7"]/psi[@xml:id="id8"][not(preceding-sibling::*)]]][position() = 1]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -21162,6 +24777,11 @@ //upsilon[@xml:lang="en"][@xml:id="id1"]/theta[contains(concat(@data,"$"),"e$")][not(preceding-sibling::*)][following-sibling::rho[@xml:lang="nb"][preceding-sibling::*[position() = 1]]//tau[@token][@xml:lang="no"][following-sibling::iota[@xml:lang="en-US"][@xml:id="id2"][following-sibling::tau[@attr][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//eta[@xml:lang="no"][following-sibling::*[position()=3]][not(child::node())][following-sibling::lambda[starts-with(concat(@abort,"-"),"this-")][@xml:lang="nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::alpha)][following-sibling::delta[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 3]]//omega/*[starts-with(@false,"so")][not(preceding-sibling::*)][following-sibling::iota[@xml:id="id5"][not(child::node())][following-sibling::alpha[@attr="attribute-value"][@xml:id="id6"][following-sibling::pi[starts-with(concat(@attr,"-"),"another attribute value-")][preceding-sibling::*[position() = 3]][following-sibling::omega/zeta[@xml:lang="no-nb"][not(preceding-sibling::*)]//lambda[@and][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]]]][position() = 1]]]] + + + theta + 0 + @@ -21196,6 +24816,11 @@ //epsilon[starts-with(concat(@attr,"-"),"this-")][@xml:lang="no-nb"]//sigma[@delete="solid 1px green"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[contains(concat(@title,"$"),"e$")][@xml:id="id2"][not(following-sibling::*)]//chi[starts-with(concat(@class,"-"),"this-")]//chi[contains(@token,"12")][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[contains(concat(@string,"$"),"te value$")][@xml:lang="no"][not(preceding-sibling::*)]/omega[@and][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omega[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::alpha[not(following-sibling::*)]//lambda[@object][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)]][position() = 1]] + + + omega + 0 + @@ -21222,6 +24847,11 @@ //omega[@xml:lang="no"]//iota[@xml:lang="en"][@xml:id="id1"]//nu[@xml:lang="nb"]//nu[@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::nu[@xml:lang="no-nb"][@xml:id="id2"][following-sibling::epsilon[preceding-sibling::*[position() = 2]]//lambda[not(child::node())][following-sibling::beta[@true="attribute"][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@xml:lang="en-GB"]/sigma[starts-with(concat(@string,"-"),"attribute-")][@xml:lang="en"]/psi[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[contains(concat(@attr,"$"),"ue$")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/epsilon[starts-with(concat(@data,"-"),"solid 1px green-")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + nu + 1 + @@ -21251,6 +24881,11 @@ //xi/beta[@number][@xml:id="id1"][not(child::node())][following-sibling::theta[@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@and][@xml:id="id3"][not(following-sibling::*)][not(preceding-sibling::alpha)]//delta[following-sibling::*[position()=1]][following-sibling::delta[contains(concat(@token,"$"),"t$")][@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)]/alpha[following-sibling::*[position()=1]][following-sibling::pi[@string][preceding-sibling::*[position() = 1]]//mu[@class="123456789"][@xml:lang="en"][@xml:id="id5"]][position() = 1]]]] + + + beta + 0 + @@ -21271,6 +24906,11 @@ //phi[@xml:lang="no"]/psi[not(preceding-sibling::*)][not(child::node())][following-sibling::tau[starts-with(concat(@content,"-"),"100%-")]//gamma[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]/chi[@and][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::pi[position() = 1]]][position() = 1]] + + + psi + 0 + @@ -21288,6 +24928,11 @@ //sigma/zeta[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[@class="100%"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id3"][not(following-sibling::*)]//iota[@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::rho[@xml:lang="en"][@xml:id="id5"]//zeta[@abort="attribute"][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[starts-with(concat(@true,"-"),"attribute-")][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//alpha[@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@xml:lang="en"][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id8"]//omicron[starts-with(@name,"attribute-value")][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[contains(@number,"tent")][@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(@att,"ibute valu")][@xml:lang="en-US"][not(child::node())][following-sibling::gamma[contains(concat(@object,"$"),"te value$")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -21317,6 +24962,11 @@ //mu[@object="100%"][@xml:lang="no-nb"]//psi[@name][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)]//iota[following-sibling::kappa[@src][following-sibling::mu[following-sibling::*[position()=5]][following-sibling::upsilon[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::chi[following-sibling::iota[@xml:lang="nb"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::eta[@xml:lang="en"][preceding-sibling::*[position() = 6]][following-sibling::chi[starts-with(@attrib,"123")][@xml:lang="no"][preceding-sibling::*[position() = 7]]/omega[@or][@xml:lang="en-GB"][following-sibling::*[position()=2]][following-sibling::mu[@delete][following-sibling::*[position()=1]][following-sibling::kappa[contains(concat(@object,"$"),"%$")][@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]//alpha[@xml:lang="en"][@xml:id="id3"]//eta[@desciption][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(concat(@false,"-"),"true-")][preceding-sibling::*[position() = 1]]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]] + + + iota + 0 + @@ -21345,6 +24995,11 @@ //nu[@and][@xml:lang="en-GB"]//nu[@xml:id="id1"][not(child::node())][following-sibling::eta[@insert][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[starts-with(@abort,"solid 1px ")][@xml:id="id2"][preceding-sibling::*[position() = 2]]/xi[@xml:lang="en-GB"][not(following-sibling::*)]/psi[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::psi)]//mu[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[following-sibling::*[position()=3]][not(child::node())][following-sibling::delta[not(child::node())][following-sibling::xi[@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::theta[preceding-sibling::*[position() = 4]][not(following-sibling::*)]//eta[not(following-sibling::*)]/beta[contains(concat(@data,"$"),"alse$")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]/lambda[@attribute="true"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::beta[@xml:lang="en-US"][@xml:id="id8"][position() = 1]][position() = 1]]]]]][position() = 1]]] + + + nu + 1 + @@ -21375,6 +25030,11 @@ //theta[@xml:lang="nb"][@xml:id="id1"]/epsilon[@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]/phi[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::phi)]/upsilon[@and="this.nodeValue"][@xml:lang="no-nb"][not(following-sibling::*)]//mu[starts-with(@object,"attri")][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::psi[@xml:lang="no-nb"][not(following-sibling::*)]//phi[@string][not(following-sibling::*)]/alpha[starts-with(concat(@name,"-"),"content-")][not(following-sibling::*)]/delta[@title][@xml:lang="no"][following-sibling::*[@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@false][preceding-sibling::*[position() = 2]]/psi[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::delta[starts-with(@attribute,"t")][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//mu[@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[contains(concat(@abort,"$"),"this.nodeValue$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + mu + 0 + @@ -21408,6 +25068,11 @@ //lambda[contains(@desciption,"als")]/zeta[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)]//beta[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::rho[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[starts-with(concat(@and,"-"),"another attribute value-")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[starts-with(@object,"attr")][@xml:lang="en-GB"][@xml:id="id3"]/epsilon[@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[contains(concat(@abort,"$"),"e$")][@xml:id="id5"][not(following-sibling::*)][position() = 1]][position() = 1]] + + + beta + 0 + @@ -21428,6 +25093,11 @@ //eta[contains(concat(@name,"$"),"en$")][@xml:lang="no-nb"]/lambda[starts-with(@abort,"attrib")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@and="attribute value"][@xml:id="id2"][not(following-sibling::*)]/eta[contains(@class,"ribute-value")][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:id="id3"]//zeta[contains(concat(@or,"$"),"alue$")][not(preceding-sibling::*)]//nu[contains(concat(@delete,"$"),"00%$")][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@attr]/omicron[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::phi[@xml:id="id4"][preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]] + + + lambda + 0 + @@ -21450,6 +25120,11 @@ //nu[@object][@xml:lang="en-GB"]/iota[starts-with(@desciption,"sol")][@xml:lang="no"][@xml:id="id1"]//iota[contains(@delete,"lan")][@xml:lang="nb"][not(child::node())][following-sibling::kappa[@true]/phi[not(preceding-sibling::*)]/zeta[starts-with(concat(@true,"-"),"true-")][@xml:lang="no-nb"][not(preceding-sibling::*)]//omega[contains(@insert,"lue")][@xml:id="id2"][not(following-sibling::*)]/lambda[contains(concat(@object,"$"),"ntent$")][@xml:lang="no"][not(preceding-sibling::lambda)]/kappa[@object][@xml:id="id3"]] + + + iota + 1 + @@ -21473,6 +25148,11 @@ //epsilon[@xml:lang="en-US"]//tau[starts-with(@content,"content")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@xml:lang="en"][@xml:id="id1"]/*[@token][@xml:lang="en-US"][following-sibling::lambda[@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=7]][not(child::node())][following-sibling::*[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::alpha[contains(concat(@src,"$"),"lse$")][@xml:lang="en"][not(child::node())][following-sibling::gamma[@content][@xml:id="id3"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::beta[@attrib][@xml:lang="no"][not(child::node())][following-sibling::delta[@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 7]][following-sibling::sigma[@token][not(following-sibling::*)]//kappa[@or="this.nodeValue"][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/*[contains(@data,"lse")][@xml:lang="nb"]/chi[@xml:lang="no"][@xml:id="id6"][following-sibling::gamma[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[starts-with(@object,"thi")][not(child::node())][following-sibling::lambda[@xml:lang="nb"][not(following-sibling::*)]/gamma[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]]]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + any + 0 + @@ -21506,6 +25186,11 @@ //iota[contains(@or,"node")][@xml:lang="en-US"]/epsilon[@false][not(following-sibling::*)]/chi[starts-with(concat(@abort,"-"),"false-")][not(preceding-sibling::*)][not(following-sibling::*)]/phi[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::rho[starts-with(@desciption,"attribute ")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::pi[not(child::node())][following-sibling::phi[@number]/iota[@delete][not(preceding-sibling::*)]/gamma[starts-with(concat(@insert,"-"),"this.nodeValue-")][@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:id="id2"]/chi[contains(concat(@name,"$"),"ontent$")][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[contains(concat(@class,"$"),"e value$")][@xml:id="id3"]//beta[@true="attribute"][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]/eta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron]][position() = 1]]]]] + + + phi + 0 + @@ -21536,6 +25221,11 @@ //iota[@xml:lang="en-GB"]/kappa[contains(@abort,"alue")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[starts-with(concat(@attribute,"-"),"attribute value-")][not(child::node())][following-sibling::theta[@string="attribute value"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="en-GB"][not(following-sibling::*)]//psi[not(preceding-sibling::*)][not(following-sibling::*)]/alpha[@xml:id="id4"][following-sibling::eta[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//nu[contains(concat(@att,"$"),"e$")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="no"][@xml:id="id6"]/gamma[@xml:id="id7"][not(preceding-sibling::*)]/rho[@or][@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[preceding-sibling::*[position() = 1]]/lambda[not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@content="attribute"][@xml:id="id9"][not(following-sibling::*)]//rho[starts-with(@string,"attribute value")][@xml:lang="no"][not(following-sibling::*)][not(following-sibling::rho)]/psi[@attrib][@xml:lang="no-nb"][@xml:id="id10"][not(child::node())][following-sibling::zeta[@delete="this-is-att-value"][@xml:lang="en-GB"][not(child::node())][following-sibling::omega[starts-with(@src,"attribute va")][@xml:id="id11"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -21575,6 +25265,11 @@ //psi[@xml:lang="en"]/*[@xml:lang="en-GB"][not(following-sibling::*)]/*[contains(concat(@string,"$"),"false$")][@xml:lang="en"][not(preceding-sibling::*)]/omega[@att="this.nodeValue"][following-sibling::*[position()=1]][following-sibling::delta[starts-with(@attrib,"tr")][@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[@xml:lang="no"][not(preceding-sibling::*)]//tau[contains(concat(@name,"$"),"ue$")][@xml:id="id2"][not(preceding-sibling::*)]/rho[@or][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[not(preceding-sibling::*)][following-sibling::theta[@attr][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/*[starts-with(concat(@class,"-"),"solid 1px green-")][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[not(following-sibling::*)]//*[starts-with(@data,"10")][@xml:lang="nb"][not(following-sibling::*)]/kappa[@title="100%"][following-sibling::alpha[starts-with(concat(@delete,"-"),"this.nodeValue-")][@xml:id="id3"][following-sibling::alpha[@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::mu[@insert][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//lambda[@delete="another attribute value"][@xml:lang="en-GB"][following-sibling::zeta[starts-with(@or,"attrib")][@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]][position() = 1]]]][position() = 1]]][position() = 1]] + + + omega + 0 + @@ -21613,6 +25308,11 @@ //chi[@xml:id="id1"]//iota[@xml:lang="en"][not(child::node())][following-sibling::gamma[@object][@xml:id="id2"][following-sibling::beta[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//theta[@name="attribute value"][@xml:id="id4"][following-sibling::delta[@name][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu/iota[@insert][@xml:lang="no-nb"][@xml:id="id6"][not(following-sibling::*)]//mu[contains(@data,"t-v")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::gamma[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//theta[not(preceding-sibling::*)][following-sibling::epsilon[contains(concat(@desciption,"$"),"value$")][following-sibling::zeta//psi[not(child::node())][following-sibling::zeta[contains(concat(@desciption,"$"),"ute value$")][@xml:lang="no"]/iota[@xml:lang="en-US"][@xml:id="id7"][not(following-sibling::*)]//lambda[contains(concat(@insert,"$"),"r attribute value$")][not(preceding-sibling::*)]//iota[@title][@xml:lang="no-nb"][@xml:id="id8"][not(preceding-sibling::*)]/gamma[@name][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"][following-sibling::alpha[not(following-sibling::*)]//chi[@number="solid 1px green"][@xml:lang="nb"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -21655,6 +25355,11 @@ //chi[@xml:id="id1"]/eta[contains(@or,"d 1px ")][@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::theta[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::psi[@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::xi[starts-with(@data,"tr")][@xml:id="id5"][following-sibling::omega[@attribute][@xml:id="id6"][following-sibling::lambda[@xml:lang="no"][preceding-sibling::*[position() = 5]][not(following-sibling::*)]/eta[@xml:lang="en-US"]//delta[@xml:lang="en-GB"][following-sibling::alpha[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[@attribute][not(preceding-sibling::*)][not(following-sibling::*)]/theta[following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[starts-with(concat(@false,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:id="id8"]/xi[not(preceding-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]] + + + eta + 0 + @@ -21683,6 +25388,11 @@ //mu[@object][@xml:lang="en"]/*[@attrib][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::chi[@src="false"][following-sibling::sigma[following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[preceding-sibling::*[position() = 3]][not(following-sibling::*)]//omega[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 1]][following-sibling::eta[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -21702,6 +25412,11 @@ //omega[@xml:lang="en"]/lambda[contains(@and,"deValue")][following-sibling::psi[@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omega[@xml:lang="nb"][following-sibling::iota[@xml:lang="en"][preceding-sibling::*[position() = 1]]/pi[starts-with(@name,"attribu")][not(child::node())][following-sibling::*[@xml:lang="en-US"][not(child::node())][following-sibling::epsilon[not(preceding-sibling::epsilon or following-sibling::epsilon)][not(child::node())][following-sibling::gamma[@string="solid 1px green"][@xml:id="id2"][not(following-sibling::*)]/phi[starts-with(@true,"this.nod")][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//omicron[@or][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@xml:lang="no"][@xml:id="id5"][position() = 1]][position() = 1]]]]] + + + lambda + 0 + @@ -21727,6 +25442,11 @@ //epsilon[@xml:lang="no-nb"]//epsilon[contains(concat(@and,"$"),"x green$")][@xml:lang="no-nb"][not(preceding-sibling::*)]//omega[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[starts-with(concat(@class,"-"),"another attribute value-")][not(following-sibling::*)]/tau[contains(concat(@name,"$"),"r attribute value$")][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="nb"][not(following-sibling::*)]//chi[position() = 1]]] + + + omega + 0 + @@ -21745,6 +25465,11 @@ //chi[@xml:id="id1"]//psi[@insert="123456789"][not(preceding-sibling::*)][following-sibling::theta[@xml:id="id2"]//delta[starts-with(concat(@token,"-"),"attribute-")][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[starts-with(@attr,"fal")][not(preceding-sibling::*)]/psi/rho[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="no-nb"]/beta[starts-with(concat(@true,"-"),"content-")][@xml:lang="en-US"][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::sigma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@name][@xml:lang="en"]//theta[starts-with(concat(@and,"-"),"this.nodeValue-")][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[starts-with(@false,"attr")][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::eta[contains(concat(@and,"$"),"value$")][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::alpha[@data][not(following-sibling::*)]]]]][position() = 1]]]] + + + psi + 0 + @@ -21778,6 +25503,11 @@ //lambda[@xml:lang="en"]/alpha[@number][@xml:id="id1"][following-sibling::beta[contains(concat(@att,"$"),"23456789$")][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]//*[@xml:id="id3"][not(preceding-sibling::*)][not(preceding-sibling::any)][not(child::node())][following-sibling::*[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[not(preceding-sibling::*)][not(preceding-sibling::nu)][not(child::node())][following-sibling::iota[not(child::node())][following-sibling::rho[@xml:id="id5"][following-sibling::gamma[@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/kappa[@class="attribute-value"][@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)]/gamma[@xml:id="id8"][following-sibling::pi[starts-with(@name,"t")][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@name][@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 2]]]]][position() = 1]]]][position() = 1]] + + + alpha + 0 + @@ -21803,6 +25533,11 @@ //beta[@xml:lang="no"]//delta[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omicron[@xml:id="id1"][preceding-sibling::*[position() = 1]]//lambda[@number="attribute-value"][following-sibling::*[position()=3]][following-sibling::tau[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[@data][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 3]]/psi[@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[starts-with(concat(@class,"-"),"solid 1px green-")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::iota[@attribute][@xml:id="id6"][not(child::node())][following-sibling::pi[@xml:lang="en-GB"][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + delta + 0 + @@ -21826,6 +25561,11 @@ //pi[contains(concat(@false,"$"),"56789$")][@xml:lang="en-US"][@xml:id="id1"]//epsilon[starts-with(@number,"_blank")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::xi[@xml:id="id2"][following-sibling::alpha[@xml:id="id3"]/phi[@and][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::gamma[@xml:lang="nb"][not(following-sibling::*)]/rho[@xml:lang="en-US"][@xml:id="id4"]/zeta[@attribute]//theta[@delete][not(preceding-sibling::*)]/theta[@insert][following-sibling::*[position()=3]][following-sibling::omicron[@object="content"][@xml:lang="en"][@xml:id="id5"][following-sibling::lambda[@xml:id="id6"][not(child::node())][following-sibling::iota[@xml:lang="en-GB"]//omicron[@attribute="solid 1px green"][@xml:id="id7"][following-sibling::iota[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]]//*[following-sibling::alpha[starts-with(@att,"_blank")][@xml:id="id9"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@src][@xml:id="id10"][preceding-sibling::*[position() = 2]]/psi[@xml:id="id11"][not(following-sibling::*)]//beta[@object][@xml:id="id12"][not(preceding-sibling::*)]//psi[@attribute][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[starts-with(concat(@true,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id13"][position() = 1]][position() = 1]]]]][position() = 1]]]]]] + + + epsilon + 0 + @@ -21866,6 +25606,11 @@ //kappa[@xml:lang="en"][@xml:id="id1"]//alpha[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="no"][following-sibling::rho[@xml:lang="en-US"][following-sibling::zeta[@xml:lang="no"][preceding-sibling::*[position() = 3]][following-sibling::pi[preceding-sibling::*[position() = 4]][not(following-sibling::*)]//zeta[@att][@xml:lang="no-nb"][not(following-sibling::*)]/rho[@delete][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::lambda[contains(@title,"rue")][@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//sigma[@delete][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[@attr="solid 1px green"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[following-sibling::kappa[preceding-sibling::*[position() = 3]][not(following-sibling::*)]//omega[@and][@xml:id="id5"][not(preceding-sibling::*)]/iota[@attribute="attribute-value"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -21895,6 +25640,11 @@ //xi[@xml:id="id1"]//zeta[@xml:id="id2"][not(child::node())][following-sibling::*[@xml:lang="en-US"][not(following-sibling::*)]//upsilon[not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::zeta[starts-with(concat(@true,"-"),"content-")][@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]/lambda[contains(concat(@attr,"$"),"ue$")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@attr][@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::*[@number][@xml:lang="nb"][not(following-sibling::*)][not(following-sibling::any)]//omega[@insert="123456789"][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[@true][following-sibling::alpha[@xml:lang="en"][@xml:id="id7"][not(following-sibling::*)]/chi[@xml:id="id8"][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -21923,6 +25673,11 @@ //psi[@xml:lang="no"]/zeta[@xml:lang="nb"][not(preceding-sibling::*)]//pi[starts-with(@title,"fals")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[not(preceding-sibling::psi)][not(child::node())][following-sibling::zeta[contains(@class,"bla")][@xml:id="id1"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//sigma[@attr="attribute-value"][@xml:id="id2"][following-sibling::lambda[@attrib][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[starts-with(concat(@title,"-"),"123456789-")][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::eta[starts-with(concat(@data,"-"),"100%-")][@xml:id="id4"][not(child::node())][following-sibling::*[@and][@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::epsilon[@title][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::theta[@attribute="attribute value"][@xml:lang="nb"][@xml:id="id6"]//kappa[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::tau[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 2]]/delta[@src][@xml:lang="nb"][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::*[contains(concat(@number,"$"),"ute$")][@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en"]/alpha[@delete][not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::alpha)]][position() = 1]]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]] + + + pi + 0 + @@ -21957,6 +25712,11 @@ //psi//*[not(preceding-sibling::*)][not(preceding-sibling::any)][following-sibling::omega[@xml:lang="nb"][@xml:id="id1"]//omega[starts-with(concat(@and,"-"),"content-")][@xml:lang="nb"][@xml:id="id2"][following-sibling::tau[@xml:lang="en"][@xml:id="id3"][following-sibling::delta[contains(@true,"ue")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//gamma[@object="attribute value"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::eta[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omega[@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::kappa[preceding-sibling::*[position() = 5]][not(following-sibling::*)]/zeta[@xml:lang="en-GB"][@xml:id="id6"][following-sibling::psi[contains(concat(@att,"$"),"se$")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:lang="en-US"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::pi[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 3]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + any + 0 + @@ -21984,6 +25744,11 @@ //*[@xml:lang="nb"]//upsilon[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[starts-with(concat(@title,"-"),"this-")][@xml:lang="en"][@xml:id="id1"][not(following-sibling::*)]//upsilon[starts-with(@name,"this-is-att-val")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[starts-with(concat(@number,"-"),"false-")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//alpha[@xml:lang="en"][not(child::node())][following-sibling::tau[starts-with(concat(@token,"-"),"solid 1px green-")][@xml:lang="nb"]//omicron[following-sibling::psi[@number][@xml:lang="en-GB"]][position() = 1]]] + + + upsilon + 1 + @@ -22005,6 +25770,11 @@ //zeta[@xml:lang="en-GB"]/sigma[@delete="this.nodeValue"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@src][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[contains(@title,"true")]/omega[@xml:lang="en"][not(following-sibling::*)]//zeta[@content="100%"][@xml:id="id2"][not(preceding-sibling::*)]/iota[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="no-nb"][not(following-sibling::*)]/upsilon[contains(concat(@false,"$"),"ent$")][not(following-sibling::*)][not(preceding-sibling::upsilon)]/*[@true][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]] + + + rho + 0 + @@ -22031,6 +25801,11 @@ //eta[@xml:lang="no-nb"][@xml:id="id1"]/*[starts-with(concat(@abort,"-"),"content-")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omega[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::omega)]//iota[@xml:id="id4"][following-sibling::*[position()=4]][following-sibling::upsilon[@string][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::delta[following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[starts-with(concat(@src,"-"),"solid 1px green-")][following-sibling::mu[@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/nu[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/theta[starts-with(concat(@attribute,"-"),"another attribute value-")][@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::xi[@abort][@xml:lang="en"][preceding-sibling::*[position() = 1]]/sigma[@true][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::zeta[@title][@xml:lang="nb"][@xml:id="id8"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@xml:lang="nb"][@xml:id="id9"][not(following-sibling::*)]//alpha[contains(@attrib,"olid")][@xml:id="id10"][not(preceding-sibling::*)][not(preceding-sibling::alpha)][not(child::node())][following-sibling::tau[not(following-sibling::*)]/omicron[@content][@xml:lang="en-GB"]//phi[starts-with(@class,"_blan")][@xml:lang="no"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@string][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + any + 0 + @@ -22069,6 +25844,11 @@ //lambda[starts-with(@string,"tr")][@xml:lang="en-US"][@xml:id="id1"]/eta[not(following-sibling::*)]/alpha[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::beta[@xml:id="id2"][not(following-sibling::*)]//lambda[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[contains(@true,"l")][@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]] + + + alpha + 0 + @@ -22086,6 +25866,11 @@ //delta[@delete][@xml:lang="no-nb"]//alpha[@xml:id="id1"]//psi[@xml:id="id2"][not(following-sibling::*)]//delta[starts-with(@desciption,"this-is-att-valu")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::tau[contains(concat(@number,"$"),"ttribute$")][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::rho[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::phi[@class][preceding-sibling::*[position() = 3]][not(following-sibling::*)]]]] + + + delta + 1 + @@ -22103,6 +25888,11 @@ //chi[contains(concat(@string,"$"),"23456789$")]//phi[@xml:lang="en-US"][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//omicron[starts-with(concat(@false,"-"),"_blank-")][@xml:id="id3"][following-sibling::pi[@token="123456789"][@xml:lang="en"][not(child::node())][following-sibling::lambda[@attribute][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::omega[contains(concat(@or,"$"),"false$")][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::chi[@xml:id="id6"]//epsilon[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[contains(@and,"true")][@xml:lang="en"][preceding-sibling::*[position() = 1]]//kappa[@xml:id="id8"][not(preceding-sibling::*)]/mu[@attrib][not(preceding-sibling::*)]/mu[@class][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[starts-with(concat(@number,"-"),"100%-")][not(following-sibling::*)][position() = 1]][position() = 1]]]]]] + + + phi + 0 + @@ -22131,6 +25921,11 @@ //alpha//rho[@xml:id="id1"][not(preceding-sibling::*)]//xi[@xml:id="id2"]//zeta[@xml:lang="en-US"][@xml:id="id3"][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::pi[@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/omega[not(preceding-sibling::*)]/pi[@xml:id="id6"]//omicron[@xml:lang="no-nb"]//psi[@abort="this-is-att-value"][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::gamma[contains(concat(@class,"$"),"%$")][@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[contains(concat(@title,"$"),"123456789$")][@xml:id="id9"]/gamma[@xml:lang="en"][@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -22160,6 +25955,11 @@ //rho//tau[starts-with(@content,"s")]//*[@xml:id="id1"][not(preceding-sibling::*)]//epsilon[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[contains(concat(@true,"$"),"k$")][@xml:lang="no"][@xml:id="id2"]//eta[@xml:lang="en-GB"][not(preceding-sibling::*)]/xi[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/zeta[@content][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::omicron[contains(concat(@true,"$"),"ue$")][@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::tau[preceding-sibling::*[position() = 2]][following-sibling::gamma[contains(concat(@attribute,"$"),"alue$")][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[@att="solid 1px green"][@xml:id="id5"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::nu[@xml:id="id6"][not(following-sibling::*)]/beta[starts-with(concat(@delete,"-"),"this.nodeValue-")][@xml:lang="en-US"][@xml:id="id7"]/delta[@delete][@xml:id="id8"][not(preceding-sibling::delta)][following-sibling::nu[not(child::node())][following-sibling::sigma[@xml:lang="en-US"][following-sibling::theta[contains(concat(@string,"$"),"e$")][@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::beta[not(following-sibling::*)]/zeta[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]]]] + + + epsilon + 0 + @@ -22199,6 +25999,11 @@ //eta[@xml:id="id1"]//sigma[@insert="this-is-att-value"][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@xml:lang="no"][following-sibling::gamma[@xml:lang="no"][@xml:id="id2"][following-sibling::mu//iota/beta[@true="_blank"][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::sigma[@or][preceding-sibling::*[position() = 1]][following-sibling::xi[not(following-sibling::*)]//nu[@false][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@string="content"][@xml:lang="en-GB"]/zeta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:id="id5"][preceding-sibling::*[position() = 1]]/nu[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[contains(@class,"co")][not(preceding-sibling::*)][not(preceding-sibling::nu)][not(child::node())][following-sibling::beta[@xml:id="id7"][following-sibling::iota[contains(@and,"ribute")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]/omicron[@attrib="solid 1px green"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[@title][@xml:lang="nb"][preceding-sibling::*[position() = 1]]//zeta[following-sibling::pi[@token="100%"][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[contains(concat(@and,"$"),"tent$")][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@desciption][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[contains(concat(@delete,"$"),"ue$")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]][position() = 1]] + + + upsilon + 0 + @@ -22242,6 +26047,11 @@ //psi[@xml:id="id1"]//xi[starts-with(concat(@object,"-"),"true-")][@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::tau[contains(@content,"k")][preceding-sibling::*[position() = 1]][following-sibling::chi[not(following-sibling::*)]//upsilon[@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::epsilon[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[starts-with(@string,"this-is-a")][@xml:id="id4"][not(child::node())][following-sibling::psi[contains(@object,"value")][@xml:lang="nb"][not(following-sibling::*)]/zeta[not(child::node())][following-sibling::omicron[contains(concat(@insert,"$"),"tent$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]]]]] + + + xi + 0 + @@ -22263,6 +26073,11 @@ //omega/tau[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]]/nu[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[contains(concat(@src,"$"),"9$")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::eta[@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]//rho[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@attribute="this.nodeValue"][@xml:lang="nb"][not(following-sibling::*)][position() = 1]][position() = 1]] + + + tau + 0 + @@ -22285,6 +26100,11 @@ //psi[@xml:id="id1"]//alpha[@xml:lang="en-GB"]//gamma[@xml:lang="no-nb"][not(following-sibling::*)]/sigma[starts-with(@object,"solid 1px gr")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[contains(concat(@attrib,"$"),"Value$")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[contains(concat(@attribute,"$"),"false$")][@xml:id="id3"]//*[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]//beta[not(preceding-sibling::*)][following-sibling::phi[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[@xml:lang="nb"][preceding-sibling::*[position() = 2]][following-sibling::xi[@class="100%"][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(preceding-sibling::xi)]//*[@xml:lang="en"][not(following-sibling::*)][position() = 1]][position() = 1]]]]] + + + sigma + 0 + @@ -22312,6 +26132,11 @@ //nu[@xml:id="id1"]/kappa[@xml:id="id2"]/phi[starts-with(concat(@token,"-"),"123456789-")][@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)]//omega[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@abort][not(following-sibling::*)]//*[@name][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(concat(@attr,"-"),"attribute value-")][not(following-sibling::*)]//rho[contains(@title,"0%")][@xml:lang="no"][following-sibling::phi[starts-with(@attr,"100%")][@xml:lang="nb"][following-sibling::beta/omicron[@xml:id="id5"][not(preceding-sibling::*)]/omega[contains(concat(@class,"$"),"true$")][@xml:id="id6"]//lambda[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::pi[starts-with(concat(@delete,"-"),"solid 1px green-")][@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::gamma[@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::kappa[@xml:lang="en"][following-sibling::kappa[contains(@desciption,"bl")]/alpha[starts-with(concat(@title,"-"),"attribute-")][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[@true="_blank"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(following-sibling::phi)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]]]] + + + omega + 0 + @@ -22347,6 +26172,11 @@ //kappa[@xml:id="id1"]//zeta[following-sibling::omega[not(following-sibling::*)]/eta[starts-with(concat(@data,"-"),"true-")][not(child::node())][following-sibling::theta[@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::gamma[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::delta[not(child::node())][following-sibling::psi[starts-with(concat(@or,"-"),"attribute value-")][@xml:lang="en-US"][preceding-sibling::*[position() = 4]]//sigma[@xml:id="id4"][not(child::node())][following-sibling::kappa[@insert][@xml:lang="en"][@xml:id="id5"][not(child::node())][following-sibling::mu[@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::iota[@xml:lang="no-nb"]//chi[not(preceding-sibling::*)]//sigma[starts-with(concat(@insert,"-"),"solid 1px green-")][@xml:lang="no"][following-sibling::eta[@or][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[contains(@false,"rue")][@xml:id="id8"][following-sibling::tau[starts-with(@or,"solid 1px ")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][not(following-sibling::*)]/iota[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="no"][@xml:id="id9"][not(following-sibling::*)][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]] + + + zeta + 0 + @@ -22381,6 +26211,11 @@ //alpha[contains(concat(@src,"$"),"e$")]/iota[@att][@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::theta[starts-with(@insert,"conte")][@xml:lang="nb"][@xml:id="id2"][following-sibling::delta[starts-with(@name,"this.nodeVa")][@xml:lang="en-US"][following-sibling::psi[starts-with(concat(@attrib,"-"),"content-")][@xml:lang="no"][following-sibling::*[position()=3]][following-sibling::epsilon[contains(concat(@insert,"$"),"ue$")][@xml:lang="no-nb"][@xml:id="id3"][not(child::node())][following-sibling::epsilon[@xml:id="id4"][not(child::node())][following-sibling::*[contains(@number,"en")][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + iota + 0 + @@ -22397,6 +26232,11 @@ //*[@xml:lang="nb"]//pi[starts-with(@data,"attribut")][@xml:id="id1"][following-sibling::omega[contains(@attribute,"ue")][@xml:lang="no-nb"][following-sibling::chi[@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 2]]/gamma[starts-with(concat(@or,"-"),"attribute value-")][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::phi[contains(@content,"fal")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//sigma[@xml:lang="en"]//kappa[@xml:id="id4"][following-sibling::omega[preceding-sibling::*[position() = 1]]//theta[@xml:lang="no-nb"][@xml:id="id5"][following-sibling::*[position()=3]][not(following-sibling::theta)][not(child::node())][following-sibling::epsilon[@delete][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::gamma[@abort][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::mu[@name][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//beta[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]][position() = 1]]]] + + + pi + 0 + @@ -22424,6 +26264,11 @@ //iota[@xml:lang="en-US"]//iota[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@delete][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@xml:lang="nb"][following-sibling::*[position()=1]][not(preceding-sibling::zeta)][not(child::node())][following-sibling::eta[@data][preceding-sibling::*[position() = 3]][not(preceding-sibling::eta)]//iota[contains(concat(@string,"$"),"content$")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::upsilon[following-sibling::*[position()=1]][following-sibling::upsilon[not(following-sibling::*)]//delta[@class="_blank"][following-sibling::*[position()=1]][following-sibling::zeta[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[contains(@token,"se")][@xml:id="id4"][not(preceding-sibling::*)]/nu[@number="another attribute value"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@xml:id="id6"][not(following-sibling::*)]/mu[starts-with(@number,"another attribute valu")][not(following-sibling::*)]/delta[starts-with(@abort,"fal")][@xml:lang="en"][not(child::node())][following-sibling::gamma[@xml:id="id7"][not(following-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 1 + @@ -22455,6 +26300,11 @@ //epsilon[@xml:lang="no-nb"][@xml:id="id1"]/sigma[@xml:lang="en-US"][not(following-sibling::*)]/xi[not(following-sibling::*)]//kappa[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/psi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@src="_blank"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::upsilon[@or][@xml:id="id4"][following-sibling::sigma[@class][@xml:id="id5"][preceding-sibling::*[position() = 2]]][position() = 1]]] + + + kappa + 0 + @@ -22478,6 +26328,11 @@ //epsilon[@xml:id="id1"]//phi[@xml:lang="en-US"][@xml:id="id2"][following-sibling::beta[preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::zeta[starts-with(@string,"solid 1px gr")][@xml:lang="no-nb"][following-sibling::omega[contains(concat(@object,"$"),"rue$")][@xml:id="id3"][not(child::node())][following-sibling::lambda[@name][@xml:lang="no"][not(following-sibling::*)]/gamma[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@title][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//chi[@xml:lang="no-nb"][not(child::node())][following-sibling::zeta[starts-with(@or,"t")][not(child::node())][following-sibling::iota[starts-with(concat(@string,"-"),"100%-")][@xml:lang="no"][@xml:id="id7"][not(child::node())][following-sibling::mu[@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//gamma[@xml:lang="en-US"][@xml:id="id9"][not(following-sibling::*)]//rho[@xml:lang="no-nb"][following-sibling::lambda[@xml:lang="nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::lambda[@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 2]]/upsilon[contains(concat(@content,"$"),"solid 1px green$")][@xml:lang="nb"][not(following-sibling::*)][not(preceding-sibling::upsilon)]//psi[contains(concat(@data,"$"),"id 1px green$")][not(preceding-sibling::*)][not(following-sibling::*)]/psi[contains(@attribute,"ttribute val")][not(preceding-sibling::*)]/upsilon[@class][@xml:lang="nb"][@xml:id="id12"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::gamma[@src][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:lang="en-GB"]//*[contains(@attrib,"ank")][@xml:lang="en-GB"][not(preceding-sibling::*)]][position() = 1]]]]][position() = 1]]]][position() = 1]][position() = 1]]]][position() = 1]] + + + phi + 0 + @@ -22519,6 +26374,11 @@ //chi[@xml:lang="en-US"]//tau[starts-with(concat(@attr,"-"),"this-")][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[contains(@class,"ute-value")][@xml:lang="en"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::psi[@xml:lang="en"][not(following-sibling::*)]//iota[@true][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@class="this.nodeValue"][@xml:lang="en"][not(following-sibling::*)]//theta[contains(concat(@attr,"$"),"100%$")][@xml:id="id3"]//rho[@xml:lang="en-US"][following-sibling::*[position()=4]][not(child::node())][following-sibling::omicron[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[@false][@xml:id="id5"][preceding-sibling::*[position() = 2]][following-sibling::phi[starts-with(@data,"attribute-value")][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[starts-with(@attr,"attribut")][@xml:lang="no"][preceding-sibling::*[position() = 4]]//nu[contains(concat(@class,"$"),"tribute-value$")][@xml:id="id6"][following-sibling::*[position()=3]][not(child::node())][following-sibling::theta[following-sibling::*[position()=2]][following-sibling::alpha[contains(@desciption,"value")][@xml:lang="en-GB"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::sigma[contains(concat(@data,"$"),"this-is-att-value$")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]]] + + + tau + 0 + @@ -22547,6 +26407,11 @@ //omega[@and][@xml:lang="en-GB"][@xml:id="id1"]/omega[contains(concat(@desciption,"$"),"ibute$")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[contains(concat(@object,"$"),"nother attribute value$")][@xml:id="id3"][not(preceding-sibling::*)]//epsilon[@and="123456789"][@xml:lang="en-US"][not(following-sibling::*)]//pi[contains(concat(@content,"$"),"reen$")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]//zeta[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::zeta[following-sibling::alpha[@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::nu[@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//tau[not(child::node())][following-sibling::tau[not(following-sibling::*)]/chi[starts-with(concat(@true,"-"),"123456789-")][@xml:lang="no"][not(preceding-sibling::*)][position() = 1]][position() = 1]]]] + + + zeta + 0 + @@ -22573,6 +26438,11 @@ //iota[starts-with(@att,"content")][@xml:id="id1"]//phi[@xml:id="id2"][not(following-sibling::*)]/theta[starts-with(@class,"_")][@xml:lang="en-US"][following-sibling::iota[contains(@abort,"234")][not(child::node())][following-sibling::psi[starts-with(concat(@abort,"-"),"content-")][@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::pi[@string][@xml:lang="en-US"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[contains(@attrib," 1px g")][preceding-sibling::*[position() = 4]]//tau[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::zeta[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omicron[not(following-sibling::*)][not(preceding-sibling::omicron)]//*[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)]//sigma[@content][not(following-sibling::*)]//phi[starts-with(@true,"123456789")][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@attr][@xml:lang="en-GB"][following-sibling::zeta[starts-with(concat(@token,"-"),"another attribute value-")][@xml:id="id8"][following-sibling::zeta[contains(@attr,"e")][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 4]][position() = 1]]]]]]]][position() = 1]]] + + + theta + 0 + @@ -22604,6 +26474,11 @@ //pi[contains(@attr,"ibute va")][@xml:id="id1"]//chi[@xml:id="id2"]//phi[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)]/lambda[@xml:lang="en-GB"]/kappa[not(preceding-sibling::*)]//*[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:lang="en-GB"][not(following-sibling::*)]//tau[@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:id="id7"][not(following-sibling::*)]][position() = 1]]] + + + any + 0 + @@ -22627,6 +26502,11 @@ //eta[@xml:lang="en-US"][@xml:id="id1"]//beta[starts-with(concat(@insert,"-"),"content-")][@xml:lang="en-US"][following-sibling::beta[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::delta[starts-with(@src,"cont")][@xml:id="id2"]/omega[not(preceding-sibling::*)][following-sibling::eta[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::rho[not(child::node())][following-sibling::nu[starts-with(@string,"10")][preceding-sibling::*[position() = 3]][following-sibling::pi[contains(@title,"x green")][not(following-sibling::*)]/chi[starts-with(@and,"attribut")][@xml:id="id4"][not(preceding-sibling::*)]/tau[not(child::node())][following-sibling::epsilon[@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::beta[starts-with(concat(@abort,"-"),"123456789-")][@xml:id="id6"]/rho[@xml:lang="en"][not(preceding-sibling::*)][position() = 1]]][position() = 1]]]]]]] + + + beta + 0 + @@ -22653,6 +26533,11 @@ //alpha[contains(concat(@abort,"$"),"te$")][@xml:lang="en-GB"][@xml:id="id1"]//lambda[contains(@src,"cont")][@xml:id="id2"]//omicron[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[starts-with(@attrib,"attr")][not(preceding-sibling::*)]/theta[following-sibling::nu[@string][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[@object][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[starts-with(concat(@content,"-"),"another attribute value-")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::tau)]//pi[@and="attribute-value"][not(child::node())][following-sibling::zeta[following-sibling::*[position()=3]][following-sibling::rho[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::rho[@delete][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::gamma[contains(@data,"bute value")][@xml:lang="no"]/tau[contains(concat(@src,"$"),"lue$")][not(preceding-sibling::*)][following-sibling::alpha[@xml:id="id6"][following-sibling::upsilon[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]] + + + theta + 0 + @@ -22684,6 +26569,11 @@ //psi[starts-with(concat(@att,"-"),"100%-")]//chi[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::alpha[preceding-sibling::*[position() = 2]]//phi[@title][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::phi[@insert][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]]][position() = 1]]] + + + chi + 0 + @@ -22701,6 +26591,11 @@ //*[@insert="_blank"]/epsilon[starts-with(@data,"this.")][@xml:id="id1"]/gamma[not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::phi[contains(concat(@desciption,"$"),"0%$")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::zeta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//*[@title][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@abort="another attribute value"][@xml:lang="nb"][@xml:id="id3"][not(child::node())][following-sibling::omicron[@token="attribute-value"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::rho[contains(concat(@title,"$"),"alse$")][@xml:id="id4"][preceding-sibling::*[position() = 3]]//omicron[@xml:id="id5"][not(child::node())][following-sibling::zeta[not(following-sibling::*)]//iota[@xml:lang="en-US"][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/xi[@xml:lang="en-GB"][@xml:id="id7"]//alpha[not(preceding-sibling::*)]//omicron[contains(@name,"e")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[not(following-sibling::*)]//omicron[@xml:id="id8"][not(following-sibling::*)]/alpha[not(child::node())][following-sibling::eta[starts-with(@string,"another at")][@xml:lang="en"][position() = 1]]]][position() = 1]]][position() = 1]]]][position() = 1]]] + + + gamma + 0 + @@ -22739,6 +26634,11 @@ //alpha[@xml:id="id1"]/theta[starts-with(@desciption,"attribut")][@xml:lang="no-nb"][not(following-sibling::*)]/alpha[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::rho[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::*[starts-with(@token,"attribute-val")][@xml:lang="no-nb"][@xml:id="id4"]/lambda[starts-with(@name,"another attr")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:id="id5"]//epsilon[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[starts-with(@src,"att")][@xml:lang="no"][@xml:id="id6"][following-sibling::xi[not(following-sibling::*)]/lambda[starts-with(concat(@true,"-"),"this-")][@xml:id="id7"][not(child::node())][following-sibling::*[@xml:id="id8"][not(child::node())][following-sibling::kappa[not(child::node())][following-sibling::theta[starts-with(@abort,"at")][@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 3]]/epsilon[@false][@xml:lang="en-GB"][@xml:id="id10"][not(preceding-sibling::*)]/chi[@xml:lang="nb"][@xml:id="id11"][not(following-sibling::*)][not(preceding-sibling::chi or following-sibling::chi)]//chi[@xml:id="id12"][not(following-sibling::*)]]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + alpha + 1 + @@ -22774,6 +26674,11 @@ //psi//epsilon[contains(@att,"alue")][@xml:lang="no"][not(following-sibling::*)]/zeta[contains(@object,"s-att-value")][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[following-sibling::pi[contains(concat(@number,"$"),"content$")][@xml:lang="nb"][@xml:id="id1"][not(child::node())][following-sibling::eta[starts-with(@delete,"this-is-att-valu")][@xml:lang="no"]//beta[not(following-sibling::*)]/lambda[@object][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::tau[@xml:id="id3"][not(child::node())][following-sibling::gamma[@insert="100%"][@xml:lang="nb"][not(child::node())][following-sibling::nu[@insert][@xml:id="id4"][preceding-sibling::*[position() = 4]][following-sibling::phi[starts-with(@token,"1234")][not(following-sibling::*)]][position() = 1]]][position() = 1]]][position() = 1]]]] + + + zeta + 0 + @@ -22798,6 +26703,11 @@ //alpha[@delete]//alpha[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)]//omega[@string][@xml:id="id2"][not(following-sibling::*)]/rho[starts-with(concat(@delete,"-"),"true-")][@xml:id="id3"]//chi[contains(@token,"tribu")][@xml:lang="nb"][@xml:id="id4"]//iota[@insert="true"][@xml:id="id5"][not(preceding-sibling::*)]//chi[@attrib="solid 1px green"][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@and][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@xml:lang="no-nb"][not(preceding-sibling::*)]//zeta[not(following-sibling::*)]/kappa[@content][not(preceding-sibling::*)]//rho[starts-with(concat(@object,"-"),"_blank-")][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:lang="no"][@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[starts-with(@desciption,"this.nodeV")][@xml:id="id7"][not(following-sibling::*)]/theta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:id="id8"]]][position() = 1]] + + + eta + 0 + @@ -22835,6 +26745,11 @@ //gamma[@xml:id="id1"]/upsilon[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[@xml:lang="no-nb"][not(following-sibling::*)]/delta[contains(concat(@attrib,"$"),"%$")][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id4"]//sigma[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][position() = 1]] + + + delta + 0 + @@ -22852,6 +26767,11 @@ //delta[starts-with(concat(@and,"-"),"another attribute value-")]/*[@attr][@xml:lang="en-US"][following-sibling::*[position()=2]][following-sibling::xi[contains(concat(@false,"$"),"k$")][@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/gamma[@xml:id="id3"]//zeta[starts-with(@title,"solid 1px gree")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]/rho[starts-with(@name,"1")][@xml:id="id5"][not(child::node())][following-sibling::rho[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[starts-with(@string,"a")][not(following-sibling::*)]//chi[starts-with(@class,"f")][following-sibling::kappa[@object][@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[@xml:lang="en-GB"][not(following-sibling::*)][not(preceding-sibling::epsilon)]//mu[@abort]//theta[starts-with(@class,"solid ")][@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@and][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[starts-with(@attribute,"this")][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::delta[starts-with(concat(@class,"-"),"_blank-")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//omicron[@xml:id="id11"][following-sibling::mu[starts-with(concat(@and,"-"),"100%-")][@xml:lang="en-US"]//theta[@string][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + any + 0 + @@ -22894,6 +26814,11 @@ //upsilon[@xml:lang="nb"]/beta[contains(concat(@delete,"$")," value$")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[contains(@attrib,"e")][@xml:lang="nb"][@xml:id="id2"][following-sibling::*[starts-with(concat(@true,"-"),"123456789-")][@xml:lang="no-nb"][@xml:id="id3"]/sigma[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::theta[contains(@abort,"56789")][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[@xml:lang="en"][@xml:id="id6"][not(child::node())][following-sibling::psi//eta[contains(concat(@abort,"$"),"e value$")][@xml:lang="no"][not(following-sibling::*)]//sigma[not(preceding-sibling::*)]/omega[@xml:lang="no"]/epsilon[@attrib][@xml:id="id7"][following-sibling::zeta[@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@or="another attribute value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/phi[starts-with(@true,"co")][@xml:lang="no-nb"][@xml:id="id8"][not(following-sibling::*)]/omega[contains(@object,"n")][@xml:lang="en"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -22925,6 +26850,11 @@ //psi[contains(@attr,"lue")][@xml:lang="no-nb"][@xml:id="id1"]//epsilon[@att="content"][@xml:lang="en"][following-sibling::beta[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@delete][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::kappa[following-sibling::omega[@xml:lang="en-GB"]]]] + + + epsilon + 0 + @@ -22940,6 +26870,11 @@ //chi[starts-with(@abort,"_")][@xml:lang="no-nb"]//omega/theta[@xml:id="id1"][following-sibling::pi[@xml:lang="nb"][following-sibling::*[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::iota[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/xi[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@name="false"][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)]//psi[starts-with(@true,"attribut")][@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::xi[@xml:id="id7"][preceding-sibling::*[position() = 1]]/kappa[@token="another attribute value"][@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]/gamma[@number][not(following-sibling::*)][not(following-sibling::gamma)]//theta[@xml:lang="en-GB"][@xml:id="id9"][not(child::node())][following-sibling::theta[@desciption][@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[contains(concat(@att,"$"),"ue$")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -22970,6 +26905,11 @@ //psi[@xml:id="id1"]//zeta[@xml:lang="en-GB"][following-sibling::lambda[@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::kappa[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//gamma[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]//zeta[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[starts-with(@or,"thi")][following-sibling::*[position()=3]][not(child::node())][following-sibling::lambda[contains(concat(@attrib,"$"),"attribute value$")][@xml:lang="en-US"][not(child::node())][following-sibling::omicron[starts-with(concat(@attrib,"-"),"true-")][@xml:lang="en-GB"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[starts-with(@attrib,"this-is-at")][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 3]]/pi[contains(concat(@attribute,"$"),"attribute value$")][@xml:id="id7"]/omicron[@false][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[@xml:lang="en-US"][@xml:id="id8"][not(following-sibling::*)]//rho[@xml:id="id9"][not(preceding-sibling::*)]/iota[@true="solid 1px green"][@xml:id="id10"][not(following-sibling::*)]//gamma[@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@number][not(following-sibling::*)]/kappa[following-sibling::*[position()=3]][following-sibling::xi[preceding-sibling::*[position() = 1]][following-sibling::xi[contains(@class,"ank")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][preceding-sibling::xi[1]][following-sibling::pi[contains(@content,"solid")][@xml:id="id12"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]] + + + zeta + 0 + @@ -23011,6 +26951,11 @@ //theta[@xml:id="id1"]//nu[@xml:lang="no"][not(following-sibling::*)]/psi[starts-with(concat(@class,"-"),"solid 1px green-")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[@attribute="attribute"][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//gamma[@xml:lang="en-GB"]//alpha/zeta[@class][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[contains(@attrib,"ont")][not(preceding-sibling::*)]//psi[@attrib][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::chi[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/pi[contains(@attribute,"id 1px g")][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]]//epsilon[starts-with(@number,"attri")][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@xml:lang="en-US"][@xml:id="id8"][following-sibling::*[position()=2]][following-sibling::epsilon[contains(concat(@attrib,"$"),"te value$")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id9"][not(following-sibling::*)]/eta[@xml:id="id10"][not(preceding-sibling::*)][following-sibling::upsilon[contains(concat(@true,"$"),"true$")][@xml:id="id11"][not(child::node())][following-sibling::pi[@xml:id="id12"][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[not(following-sibling::*)]//omicron[@xml:id="id13"][following-sibling::gamma[@xml:lang="en-GB"][following-sibling::theta[@xml:id="id14"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]]]][position() = 1]]] + + + psi + 0 + @@ -23053,6 +26998,11 @@ //phi/*[@xml:lang="nb"][@xml:id="id1"][following-sibling::lambda[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::psi[@xml:lang="nb"][@xml:id="id3"]/phi[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::beta[@object="true"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[following-sibling::*[position()=1]][not(preceding-sibling::xi)][following-sibling::lambda[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@title][@xml:id="id7"][not(preceding-sibling::*)]//sigma[@xml:lang="no"][@xml:id="id8"][not(following-sibling::*)]//theta[@xml:id="id9"][following-sibling::mu[@xml:lang="no-nb"][@xml:id="id10"]//alpha[@xml:id="id11"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id12"][following-sibling::phi[starts-with(concat(@class,"-"),"another attribute value-")][position() = 1]][position() = 1]]]][position() = 1]]]] + + + any + 0 + @@ -23082,6 +27032,11 @@ //lambda[starts-with(concat(@name,"-"),"attribute value-")][@xml:id="id1"]//rho[contains(concat(@attrib,"$"),"se$")][@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]//upsilon[@xml:id="id3"][not(child::node())][following-sibling::sigma[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id4"]/beta[not(preceding-sibling::*)]/tau[@xml:lang="en-GB"][not(preceding-sibling::*)]/upsilon[@xml:id="id5"][following-sibling::*[position()=2]][following-sibling::kappa[starts-with(concat(@attr,"-"),"this-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/lambda[contains(concat(@class,"$"),"e$")][@xml:id="id6"][not(preceding-sibling::*)]//upsilon[@or][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(concat(@title,"-"),"100%-")][@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)]/eta[@xml:lang="no"][following-sibling::psi[starts-with(concat(@data,"-"),"false-")][@xml:id="id8"][not(child::node())][following-sibling::*[starts-with(@content,"12345")][@xml:id="id9"][not(following-sibling::*)]/xi[contains(@src,"e")][@xml:lang="nb"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::sigma[@src][@xml:lang="en-US"][@xml:id="id11"][not(following-sibling::*)]//alpha[starts-with(@name,"att")][@xml:lang="nb"][@xml:id="id12"][following-sibling::mu[@xml:id="id13"]/eta[@xml:lang="no-nb"][@xml:id="id14"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]]]] + + + upsilon + 0 + @@ -23122,6 +27077,11 @@ //gamma[starts-with(@name,"attribu")][@xml:lang="nb"]//delta[starts-with(@src,"another attribu")][not(preceding-sibling::*)][not(following-sibling::*)]/xi[following-sibling::chi[starts-with(concat(@insert,"-"),"attribute-")][@xml:id="id1"][not(child::node())][following-sibling::nu[@attribute="attribute-value"][@xml:lang="no"][not(following-sibling::*)]/zeta[@insert][@xml:lang="no-nb"][not(following-sibling::*)]/eta[not(child::node())][following-sibling::phi[@or="content"][@xml:lang="en-GB"][@xml:id="id2"][following-sibling::lambda[contains(@number,"bute value")][preceding-sibling::*[position() = 2]]/epsilon[starts-with(@and,"solid 1px g")][not(preceding-sibling::*)][following-sibling::iota[contains(concat(@string,"$"),"%$")][@xml:lang="no-nb"]][position() = 1]]]]] + + + xi + 0 + @@ -23145,6 +27105,11 @@ //iota/kappa[@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::lambda[@xml:id="id2"][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::*[@xml:id="id3"][preceding-sibling::*[position() = 3]]/kappa[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)]//phi[contains(concat(@class,"$"),"another attribute value$")][@xml:lang="en"][not(preceding-sibling::*)]//sigma[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]] + + + kappa + 0 + @@ -23164,6 +27129,11 @@ //rho[starts-with(@src,"fals")][@xml:id="id1"]//nu[starts-with(concat(@att,"-"),"_blank-")][@xml:lang="no"][not(following-sibling::*)]/gamma[@token][not(preceding-sibling::*)][following-sibling::zeta[contains(concat(@attr,"$"),"value$")][preceding-sibling::*[position() = 1]][not(following-sibling::zeta)]/nu[@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//alpha[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[not(child::node())][following-sibling::kappa[contains(@true,"Value")][@xml:lang="no"][@xml:id="id4"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + gamma + 0 + @@ -23186,6 +27156,11 @@ //beta[contains(concat(@false,"$"),"this.nodeValue$")]//epsilon[contains(concat(@string,"$"),"123456789$")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[starts-with(concat(@true,"-"),"true-")][not(child::node())][following-sibling::mu[not(following-sibling::*)]//pi[@true="_blank"][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::omicron//iota[@abort="content"][@xml:lang="no-nb"]/chi[@xml:lang="no-nb"][not(child::node())][following-sibling::theta[@and][@xml:lang="no"][not(preceding-sibling::theta)]/chi[@xml:lang="en"][not(following-sibling::*)]//chi[@xml:lang="en-GB"][@xml:id="id4"][following-sibling::sigma[@xml:id="id5"]/eta[@xml:lang="en"][not(following-sibling::*)]/chi[@attr][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::epsilon[@class][@xml:id="id7"][following-sibling::phi[contains(concat(@number,"$"),"se$")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/eta[@xml:lang="en-US"][@xml:id="id8"][not(preceding-sibling::*)]//zeta[contains(concat(@src,"$"),"ribute$")][@xml:lang="en-US"][not(preceding-sibling::*)]//iota[@name][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[starts-with(@attrib,"1234")][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@false][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(preceding-sibling::mu)]/iota[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + epsilon + 0 + @@ -23228,6 +27203,11 @@ //gamma[@abort="123456789"][@xml:lang="nb"][@xml:id="id1"]/kappa[starts-with(@name,"so")][@xml:id="id2"]/mu[@name][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:lang="en-US"][following-sibling::psi[contains(concat(@number,"$"),"ue$")][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::lambda[@string="_blank"][@xml:lang="nb"][preceding-sibling::*[position() = 3]][following-sibling::alpha[preceding-sibling::*[position() = 4]][not(following-sibling::*)]//delta[contains(concat(@abort,"$"),"t$")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[@false][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=7]][not(child::node())][following-sibling::upsilon[contains(@content,"nt")][@xml:lang="no-nb"][not(child::node())][following-sibling::pi[contains(@src,"e")][@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=5]][following-sibling::sigma[contains(concat(@number,"$"),"value$")][@xml:lang="en-GB"][following-sibling::kappa[@token][following-sibling::kappa[contains(concat(@true,"$"),"content$")][@xml:lang="en-US"][following-sibling::kappa[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][preceding-sibling::*[position() = 7]][following-sibling::*[position()=1]][following-sibling::kappa[starts-with(@src,"attribute value")][@xml:id="id6"][preceding-sibling::*[position() = 8]][not(following-sibling::*)]/pi[@token][@xml:id="id7"][not(preceding-sibling::*)]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -23256,6 +27236,11 @@ //tau[@xml:id="id1"]//gamma[not(preceding-sibling::*)]/alpha[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[contains(@title,"nk")][@xml:lang="no"]//psi[@xml:lang="no-nb"][@xml:id="id2"]//zeta[contains(@att,"ank")][@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@attr="123456789"][@xml:id="id4"][following-sibling::xi[contains(concat(@false,"$"),"_blank$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]] + + + alpha + 0 + @@ -23276,6 +27261,11 @@ //chi[@xml:lang="en-US"]/gamma[@attribute][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@attribute="content"][@xml:id="id2"]/upsilon[starts-with(concat(@desciption,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id3"][following-sibling::theta[@desciption="true"][@xml:lang="en-GB"][@xml:id="id4"][following-sibling::*[position()=3]][following-sibling::omicron[@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::xi[@attribute][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::psi[preceding-sibling::*[position() = 4]]/pi//psi[@name][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@xml:id="id7"]//mu[@attr][@xml:lang="en-US"][@xml:id="id8"][following-sibling::mu[@xml:lang="nb"][@xml:id="id9"][not(child::node())][following-sibling::kappa[@xml:lang="no"][@xml:id="id10"]]]]][position() = 1]][position() = 1]]][position() = 1]]] + + + gamma + 0 + @@ -23305,6 +27295,11 @@ //zeta[@token][@xml:id="id1"]/omega[@xml:lang="no-nb"][@xml:id="id2"]/nu[contains(@insert,"gre")][@xml:lang="no"][@xml:id="id3"]/upsilon[not(preceding-sibling::*)]/iota[@desciption][@xml:id="id4"]/alpha[@content][@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[@attrib][@xml:id="id6"][not(child::node())][following-sibling::xi[starts-with(@attr,"content")][@xml:lang="en"][@xml:id="id7"][following-sibling::iota[preceding-sibling::*[position() = 3]][not(following-sibling::*)]//pi[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::zeta[@true][@xml:lang="en-GB"][@xml:id="id9"][following-sibling::*[position()=2]][following-sibling::psi[@content][@xml:lang="no-nb"][not(child::node())][following-sibling::*[@xml:id="id10"][not(following-sibling::*)][not(following-sibling::any)]/alpha[@xml:lang="en-US"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[starts-with(concat(@content,"-"),"this.nodeValue-")][@xml:id="id12"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -23335,6 +27330,11 @@ //xi[@xml:id="id1"]/pi[@xml:lang="no"][@xml:id="id2"]//nu[@xml:lang="en"][not(child::node())][following-sibling::tau[contains(@name,"e value")][@xml:lang="en"][@xml:id="id3"][following-sibling::zeta[@desciption="this-is-att-value"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::tau[@xml:id="id5"][not(following-sibling::*)]//*[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@and][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[contains(concat(@true,"$"),"ibute$")][@xml:lang="en"][@xml:id="id8"][not(following-sibling::*)]/chi[@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::upsilon[starts-with(concat(@attrib,"-"),"_blank-")][@xml:lang="no-nb"][@xml:id="id10"][not(child::node())][following-sibling::tau[@object][preceding-sibling::*[position() = 2]]//mu[@token="this-is-att-value"][@xml:id="id11"][not(child::node())][following-sibling::*[@name="false"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@xml:lang="en"][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][following-sibling::phi[starts-with(@token,"this-is-att-valu")][@xml:lang="no"][@xml:id="id12"][not(following-sibling::*)]//tau[@data="attribute value"][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::delta[starts-with(concat(@delete,"-"),"another attribute value-")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::epsilon[@xml:lang="nb"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]] + + + nu + 0 + @@ -23372,6 +27372,11 @@ //mu[starts-with(concat(@content,"-"),"123456789-")][@xml:id="id1"]/tau[@desciption="attribute"][@xml:lang="en"][@xml:id="id2"]/zeta[contains(@abort,"89")][@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::xi[starts-with(@src,"12345")][@xml:lang="no-nb"][following-sibling::rho[starts-with(@class,"true")][@xml:id="id4"][preceding-sibling::*[position() = 2]]//epsilon[@abort][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::sigma[contains(@object,"0%")][@xml:id="id5"]/tau[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/zeta[not(preceding-sibling::*)][not(following-sibling::*)]//iota[not(following-sibling::*)]/iota[@xml:lang="nb"][not(child::node())][following-sibling::pi[not(child::node())][following-sibling::alpha[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::pi[@string="true"][@xml:lang="nb"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]/pi[contains(concat(@abort,"$"),"9$")][following-sibling::*[position()=2]][following-sibling::zeta[@xml:lang="nb"][following-sibling::iota//upsilon[@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]//nu[contains(concat(@src,"$"),"solid 1px green$")][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(@string,"00%")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + zeta + 0 + @@ -23412,6 +27417,11 @@ //phi[@xml:lang="en"][@xml:id="id1"]/rho[contains(concat(@true,"$"),"_blank$")][@xml:lang="nb"][not(preceding-sibling::*)]/omicron[contains(concat(@false,"$"),"tribute value$")][@xml:id="id2"][not(child::node())][following-sibling::chi[@number="solid 1px green"][not(following-sibling::*)]/omicron[not(preceding-sibling::*)][not(following-sibling::*)]//beta[@att="_blank"][@xml:lang="nb"][@xml:id="id3"]//omega[@xml:lang="no-nb"][following-sibling::chi[not(following-sibling::*)]//epsilon[@xml:lang="en-GB"][not(child::node())][following-sibling::nu[@desciption="this.nodeValue"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:lang="en-US"][preceding-sibling::*[position() = 2]]/mu[starts-with(concat(@object,"-"),"solid 1px green-")][@xml:lang="en-US"][not(following-sibling::*)][not(preceding-sibling::mu)]/chi[@abort="true"][@xml:lang="en"][@xml:id="id5"][not(child::node())][following-sibling::iota[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/gamma[@attribute="100%"]/omicron[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[@number="100%"][@xml:lang="en-US"][@xml:id="id8"][following-sibling::beta[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::tau[preceding-sibling::*[position() = 2]]//delta[@xml:id="id10"][not(child::node())][following-sibling::omicron[contains(concat(@object,"$"),"ttribute$")][@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//iota[contains(@title,"s")][@xml:id="id12"][not(following-sibling::*)]//xi[starts-with(concat(@desciption,"-"),"this-")][not(following-sibling::*)]//nu[@xml:lang="en"]][position() = 1]][position() = 1]]]]]][position() = 1]] + + + omicron + 0 + @@ -23458,6 +27468,11 @@ //chi[@xml:id="id1"]//psi[@attrib][not(following-sibling::*)]//mu[@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(concat(@name,"$"),"ntent$")][@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]//pi[@or]//iota[@true][@xml:lang="en"][not(child::node())][following-sibling::xi[@abort][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[contains(@false,"ibute-va")][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:id="id4"]//alpha[not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="no-nb"]//pi[@false="this.nodeValue"][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)]/sigma[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::eta[@attr="attribute value"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[not(child::node())][following-sibling::rho[@xml:id="id6"][not(following-sibling::*)]/omega[starts-with(concat(@false,"-"),"attribute value-")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[starts-with(@true,"this.no")]/rho[starts-with(@att,"_")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[contains(@object,"blan")][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[contains(@false,"reen")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[contains(concat(@title,"$"),"1px green$")][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + mu + 0 + @@ -23501,6 +27516,11 @@ //lambda[contains(concat(@desciption,"$"),"00%$")][@xml:id="id1"]/epsilon[@xml:lang="en-US"]//alpha[@xml:id="id2"][not(preceding-sibling::alpha)]//omicron[@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::omicron[contains(@object,"56")][not(child::node())][following-sibling::tau[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::gamma[@attribute][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//gamma[not(preceding-sibling::*)]//xi[@insert="_blank"][@xml:id="id5"][not(preceding-sibling::xi)][following-sibling::gamma[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::*[@xml:lang="en-GB"][following-sibling::rho[contains(@and,"t")][not(following-sibling::*)]]]][position() = 1]]][position() = 1]] + + + omicron + 0 + @@ -23525,6 +27545,11 @@ //lambda[@xml:lang="en-US"]//beta[@xml:lang="nb"]/lambda[@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]/nu[following-sibling::omega[@xml:lang="no-nb"][not(following-sibling::*)]/rho[@string][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]] + + + nu + 0 + @@ -23542,6 +27567,11 @@ //omega[starts-with(@token,"this-is-att-valu")][@xml:lang="no"]//mu[starts-with(@attrib,"solid 1px gr")][@xml:lang="en"][@xml:id="id1"][not(following-sibling::*)]//gamma[not(preceding-sibling::*)]/sigma[not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:lang="en"][@xml:id="id2"]//omega[starts-with(concat(@and,"-"),"attribute-")][not(preceding-sibling::*)]/epsilon[@xml:id="id3"][not(preceding-sibling::*)]//omicron[contains(@insert,"lue")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(preceding-sibling::delta)][following-sibling::lambda[preceding-sibling::*[position() = 1]]/theta[starts-with(@att,"attribu")][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[contains(@or,"789")][following-sibling::*[position()=1]][following-sibling::tau[@insert][@xml:lang="en"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//*[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]] + + + sigma + 0 + @@ -23573,6 +27603,11 @@ //omega[contains(@title,"ru")][@xml:id="id1"]//psi[@title][@xml:lang="en-GB"][not(following-sibling::*)]//alpha[not(child::node())][following-sibling::tau[@string][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[@title="content"][@xml:lang="nb"][@xml:id="id3"]/omicron[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/phi[@attr][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::zeta[@false][@xml:lang="nb"]//eta[@xml:id="id5"][not(preceding-sibling::*)]//mu[@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:id="id7"][preceding-sibling::*[position() = 1]]/delta[@xml:lang="no"][not(following-sibling::*)]//nu[contains(concat(@title,"$"),"this.nodeValue$")][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda//nu[@att][@xml:id="id9"][not(preceding-sibling::*)][position() = 1]][position() = 1]]] + + + alpha + 0 + @@ -23606,6 +27641,11 @@ //epsilon[@xml:id="id1"]//sigma[not(preceding-sibling::*)]//*[contains(concat(@attribute,"$"),"e$")][@xml:lang="nb"][@xml:id="id2"][not(following-sibling::*)]/zeta[not(preceding-sibling::*)]//iota[@xml:lang="en-GB"][following-sibling::xi[@xml:lang="nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][not(following-sibling::rho)]//rho[starts-with(@src,"attribu")][not(preceding-sibling::*)][following-sibling::*[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//upsilon[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::iota[@xml:id="id5"]/psi[@xml:id="id6"][following-sibling::mu[not(following-sibling::*)]//kappa[@src="attribute value"][@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::omicron[starts-with(concat(@false,"-"),"true-")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[not(child::node())][following-sibling::gamma[starts-with(@insert,"a")][@xml:id="id8"][not(following-sibling::*)]//zeta[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[starts-with(@attribute,"fal")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omicron[@xml:lang="no"][not(following-sibling::*)]/sigma[starts-with(@src,"another")][following-sibling::*[position()=1]][following-sibling::delta//phi[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]]]]] + + + iota + 0 + @@ -23650,6 +27690,11 @@ //delta[starts-with(@content,"_bl")]//eta[@xml:lang="nb"][following-sibling::*[position()=3]][following-sibling::lambda[@xml:id="id1"][following-sibling::*[position()=2]][following-sibling::kappa[starts-with(concat(@string,"-"),"false-")][@xml:id="id2"][following-sibling::xi[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/zeta[following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[contains(concat(@attr,"$"),"se$")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[starts-with(concat(@object,"-"),"content-")][@xml:lang="nb"][not(following-sibling::*)]/theta[not(preceding-sibling::*)][following-sibling::chi[@src][@xml:id="id5"]/kappa[@data][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@number][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::xi[@true][preceding-sibling::*[position() = 2]][not(preceding-sibling::xi)][following-sibling::upsilon[@xml:id="id7"][following-sibling::omicron[@xml:lang="nb"]/lambda[@xml:lang="en-GB"][@xml:id="id8"]/zeta[@xml:id="id9"]/epsilon[@xml:lang="no-nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[contains(concat(@title,"$"),"k$")][@xml:lang="en-US"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]]]]]] + + + eta + 0 + @@ -23685,6 +27730,11 @@ //chi[@string][@xml:lang="en"]/mu[starts-with(@and,"th")][@xml:lang="en-US"]/alpha[starts-with(@src,"1234567")][@xml:id="id1"][not(preceding-sibling::*)]/nu[@xml:lang="en"][@xml:id="id2"][following-sibling::upsilon[@content][@xml:id="id3"][following-sibling::tau[following-sibling::*[position()=1]][following-sibling::delta[@string][@xml:lang="en-US"][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -23702,6 +27752,11 @@ //phi[@xml:lang="en-US"][@xml:id="id1"]/kappa[@attribute="this.nodeValue"][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::epsilon[starts-with(concat(@att,"-"),"solid 1px green-")][@xml:id="id2"]/alpha[@xml:lang="no"][@xml:id="id3"][following-sibling::omicron[not(following-sibling::*)]//psi[@xml:id="id4"][not(preceding-sibling::*)]//theta[contains(@false,"nod")][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(@desciption,"00%")][@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/omega[starts-with(@att,"another")][@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[starts-with(@number,"1")][@xml:id="id7"][not(following-sibling::*)]//upsilon[contains(@token,"co")][@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::lambda[@false="content"][preceding-sibling::*[position() = 1]]/beta[@att][@xml:lang="en-US"][not(child::node())][following-sibling::beta[@xml:lang="no"][not(following-sibling::*)]//rho[contains(concat(@attribute,"$"),"ntent$")][@xml:lang="nb"]/*[@xml:lang="nb"][following-sibling::iota[@token="this.nodeValue"][preceding-sibling::*[position() = 1]]//omicron[@false="123456789"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[following-sibling::mu[contains(@true,"nt")][@xml:id="id9"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(preceding-sibling::mu)]/upsilon[@object][not(preceding-sibling::*)]/beta[contains(@and,"true")][@xml:lang="nb"][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]] + + + kappa + 0 + @@ -23745,6 +27800,11 @@ //mu[@xml:id="id1"]/lambda[@xml:id="id2"]//omega[contains(concat(@attribute,"$"),"23456789$")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::gamma[contains(concat(@attribute,"$"),"lank$")][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]]/chi[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[@attr][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]] + + + omega + 0 + @@ -23761,6 +27821,11 @@ //omega[@xml:lang="no"][@xml:id="id1"]//upsilon[@xml:lang="no"][not(preceding-sibling::*)]/beta[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id3"][following-sibling::delta[@content][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]]//mu[@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::mu[@token="true"][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@attrib][@xml:lang="no-nb"][@xml:id="id5"][not(following-sibling::*)]/omega[contains(concat(@title,"$"),"se$")][@xml:lang="en-US"][@xml:id="id6"]/xi[@xml:id="id7"]/theta[contains(concat(@attr,"$"),"lue$")][@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)]//sigma[@xml:lang="no-nb"][not(child::node())][following-sibling::lambda[@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::xi[@and][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/*[starts-with(@src,"true")][@xml:lang="en"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="en-GB"][@xml:id="id11"][not(preceding-sibling::phi or following-sibling::phi)]/zeta[not(preceding-sibling::*)]//xi[@xml:lang="en-US"][not(child::node())][following-sibling::gamma[@true="content"][@xml:lang="no-nb"][@xml:id="id12"][preceding-sibling::*[position() = 1]]//beta[@xml:lang="en-GB"][@xml:id="id13"]//chi[@xml:lang="en-US"][not(following-sibling::*)]]][position() = 1]][position() = 1]]]]] + + + upsilon + 1 + @@ -23802,6 +27867,11 @@ //theta[contains(concat(@insert,"$"),"attribute$")][@xml:lang="nb"][@xml:id="id1"]//kappa[not(following-sibling::*)]//theta[@xml:lang="en-US"]//chi[@xml:id="id2"]/*[@name][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::theta[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]//mu[not(child::node())][following-sibling::iota[@insert][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::kappa[contains(@insert,"al")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/pi[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@true][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::alpha[@xml:id="id7"]/chi[@xml:lang="no-nb"]//xi[@true][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]] + + + pi + 0 + @@ -23833,6 +27903,11 @@ //psi[@xml:lang="no-nb"]//mu[starts-with(concat(@content,"-"),"attribute value-")][not(preceding-sibling::*)][following-sibling::chi[@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[@class="attribute-value"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@xml:lang="en"][following-sibling::*[position()=3]][following-sibling::upsilon[following-sibling::*[position()=2]][not(child::node())][following-sibling::*[@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta//xi[@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="no-nb"][not(following-sibling::*)]/zeta[not(preceding-sibling::*)]/kappa[not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]]]] + + + mu + 0 + @@ -23860,6 +27935,11 @@ //lambda[@insert="content"]//omicron[@desciption][@xml:lang="en-GB"][@xml:id="id1"]/zeta[starts-with(concat(@delete,"-"),"true-")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(preceding-sibling::zeta)]//iota[@content][@xml:lang="nb"]/xi[contains(@token,"e")][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@number="_blank"][not(preceding-sibling::*)][not(parent::*/*[position()=2])]/gamma[starts-with(concat(@name,"-"),"true-")][@xml:lang="en"][not(preceding-sibling::*)]/zeta[@att="content"][@xml:lang="no-nb"][@xml:id="id3"]//omega[not(following-sibling::*)]/upsilon[contains(concat(@object,"$")," green$")][@xml:lang="en"][@xml:id="id4"]//*[starts-with(@src,"tr")][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(@and,"anot")][not(following-sibling::*)]//*[contains(@content,"tru")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[contains(concat(@token,"$"),"100%$")][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@data="attribute value"][@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[contains(concat(@insert,"$"),"lank$")][@xml:lang="no"][@xml:id="id9"]//delta[@xml:id="id10"][not(preceding-sibling::*)]/mu[contains(concat(@abort,"$"),"r attribute value$")][not(following-sibling::*)]/omicron[@delete="attribute-value"][@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::pi[contains(@true,"nodeValue")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]][position() = 1]] + + + any + 1 + @@ -23907,6 +27987,11 @@ //tau[@xml:lang="no"]/delta[not(preceding-sibling::*)][following-sibling::eta[contains(@abort," 1px gr")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[starts-with(@object,"1")][@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[contains(concat(@title,"$"),"te value$")][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@and][@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]/rho[contains(@attribute,"onten")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta/omicron[@delete="this-is-att-value"][following-sibling::*[position()=3]][following-sibling::omicron[@object="123456789"][@xml:lang="en"][@xml:id="id3"][following-sibling::epsilon[following-sibling::nu[starts-with(concat(@attrib,"-"),"false-")][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][not(preceding-sibling::nu)]//omicron[@xml:lang="en-GB"][@xml:id="id5"][position() = 1]]]]][position() = 1]][position() = 1]]] + + + delta + 0 + @@ -23936,6 +28021,11 @@ //omicron[@xml:id="id1"]/beta[not(preceding-sibling::*)][following-sibling::kappa[starts-with(@content,"this-is-att-v")][@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/alpha//alpha[not(following-sibling::*)]/eta[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@content][following-sibling::epsilon[@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[@xml:id="id5"][preceding-sibling::*[position() = 2]][position() = 1]][position() = 1]]] + + + beta + 0 + @@ -23957,6 +28047,11 @@ //phi//theta[starts-with(concat(@true,"-"),"content-")][not(child::node())][following-sibling::epsilon[@xml:id="id1"][not(child::node())][following-sibling::psi[not(child::node())][following-sibling::chi[starts-with(concat(@data,"-"),"another attribute value-")][@xml:lang="en-US"][@xml:id="id2"]//rho[@token][@xml:lang="en"]//omicron[@attribute="attribute"][not(following-sibling::*)]//chi[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::theta[contains(concat(@and,"$"),"ttribute value$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[@and][@xml:lang="no-nb"]/eta[@number="content"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::omega[contains(@abort,"nt")][preceding-sibling::*[position() = 1]]][position() = 1]]]][position() = 1]] + + + theta + 0 + @@ -23982,6 +28077,11 @@ //*[@xml:lang="en-GB"][@xml:id="id1"]//xi[starts-with(@content,"tru")][following-sibling::chi[@src][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[starts-with(@attribute,"solid 1")][@xml:lang="nb"][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::eta[starts-with(@or,"1234")][preceding-sibling::*[position() = 4]]//rho[@xml:lang="no-nb"][not(following-sibling::*)]//omega[starts-with(@or,"1234")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:id="id5"]]]][position() = 1]]] + + + xi + 0 + @@ -24001,6 +28101,11 @@ //gamma[@or="this-is-att-value"]//chi[@xml:lang="no"][following-sibling::lambda[@xml:lang="no-nb"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::gamma[@and="attribute"][@xml:lang="en"][@xml:id="id2"]/epsilon[following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[starts-with(@false,"f")][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[starts-with(concat(@abort,"-"),"false-")][not(child::node())][following-sibling::theta[contains(@name,"k")][@xml:id="id4"][not(following-sibling::*)]/chi[@xml:lang="no"][@xml:id="id5"][not(following-sibling::*)]//phi[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[@xml:id="id6"][not(child::node())][following-sibling::delta[@xml:id="id7"]/alpha[contains(@object,"r attribute ")][@xml:lang="no"][not(preceding-sibling::*)]/upsilon[@xml:lang="nb"][not(child::node())][following-sibling::alpha[@xml:id="id8"][preceding-sibling::*[position() = 1]]/pi[starts-with(@object,"thi")][not(following-sibling::*)]/delta[@xml:id="id9"][not(following-sibling::*)]/omega[@xml:id="id10"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]] + + + chi + 0 + @@ -24036,6 +28141,11 @@ //zeta[@xml:id="id1"]//phi[contains(concat(@attribute,"$"),"reen$")][@xml:lang="en-US"][not(child::node())][following-sibling::iota[@object][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::lambda[preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[starts-with(@token,"attribute-value")][@xml:id="id3"][not(following-sibling::*)]/rho[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)]//xi[not(child::node())][following-sibling::eta[@name][@xml:id="id6"][not(following-sibling::*)]/omicron[@class="attribute-value"][@xml:id="id7"][following-sibling::sigma[starts-with(@attrib,"attribute v")][@xml:lang="en-GB"][not(following-sibling::*)]//omicron[@xml:lang="en"]//upsilon[@abort][not(preceding-sibling::*)][following-sibling::omega[@number][@xml:lang="no"][@xml:id="id8"][following-sibling::nu[contains(concat(@src,"$"),"ibute value$")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//omega[@xml:lang="en-US"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(preceding-sibling::omega)][following-sibling::phi[@xml:lang="no-nb"][@xml:id="id10"][not(following-sibling::*)]//theta[starts-with(concat(@abort,"-"),"attribute-")][@xml:id="id11"]/delta[contains(@desciption,"lue")][not(following-sibling::*)]//omicron[@token][@xml:id="id12"][not(preceding-sibling::*)]/lambda[contains(@number,"reen")][@xml:lang="en-GB"][@xml:id="id13"][following-sibling::lambda[@att][@xml:id="id14"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::epsilon[@delete="solid 1px green"][@xml:lang="en-US"][@xml:id="id15"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/phi[contains(concat(@name,"$")," attribute value$")][@xml:lang="en-GB"][@xml:id="id16"][not(preceding-sibling::*)]]]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + phi + 0 + @@ -24080,6 +28190,11 @@ //lambda[@src]/nu[not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@attr,"$"),"00%$")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/phi[contains(concat(@string,"$"),"s.nodeValue$")][@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@false="_blank"][@xml:id="id2"][not(following-sibling::*)]//iota[@delete][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::xi[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:lang="nb"][not(following-sibling::*)]/delta[starts-with(concat(@object,"-"),"attribute-")][@xml:lang="nb"]/alpha[@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::gamma[preceding-sibling::*[position() = 1]]//xi[not(child::node())][following-sibling::iota[starts-with(@number,"this.n")][@xml:lang="no"][@xml:id="id7"][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]]] + + + nu + 0 + @@ -24108,6 +28223,11 @@ //iota[@xml:lang="en"][@xml:id="id1"]//psi[@false][@xml:id="id2"][not(preceding-sibling::*)]//sigma[@xml:id="id3"][not(child::node())][following-sibling::sigma[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omicron[contains(concat(@true,"$"),"r attribute value$")][not(child::node())][following-sibling::psi[starts-with(concat(@att,"-"),"attribute-")][@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omicron[@and][@xml:lang="en-US"][@xml:id="id6"][not(following-sibling::*)]//chi[@xml:lang="en-US"][not(following-sibling::*)]//epsilon[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@attribute][@xml:id="id8"][not(following-sibling::*)]//iota[contains(@title,"34")][@xml:lang="nb"][@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::phi[starts-with(concat(@attr,"-"),"123456789-")][@xml:lang="en"][@xml:id="id10"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -24133,6 +28253,11 @@ //omega/upsilon[@xml:lang="en"]//zeta[@false][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::nu[starts-with(concat(@content,"-"),"_blank-")][@xml:lang="en-GB"][@xml:id="id2"][following-sibling::mu[following-sibling::*[position()=5]][following-sibling::tau[contains(concat(@false,"$"),"lse$")][@xml:id="id3"][not(child::node())][following-sibling::epsilon[@number][following-sibling::*[position()=3]][not(child::node())][following-sibling::eta[starts-with(@abort,"this.node")][@xml:lang="nb"][@xml:id="id4"][following-sibling::*[position()=2]][following-sibling::iota[@xml:lang="no-nb"][preceding-sibling::*[position() = 6]][following-sibling::beta[@false="attribute value"][@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 7]][not(following-sibling::*)]]]]][position() = 1]]]] + + + zeta + 0 + @@ -24152,6 +28277,11 @@ //omega[@xml:lang="no-nb"][@xml:id="id1"]/chi[contains(@title,"b")][@xml:lang="en-US"][@xml:id="id2"][following-sibling::alpha[starts-with(concat(@token,"-"),"123456789-")][@xml:id="id3"]//eta[starts-with(concat(@abort,"-"),"solid 1px green-")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:lang="nb"][@xml:id="id5"]//*[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@object][@xml:lang="no-nb"][@xml:id="id6"]//nu[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[contains(concat(@false,"$"),"e value$")][preceding-sibling::*[position() = 1]][following-sibling::mu[@xml:lang="nb"][@xml:id="id7"][not(following-sibling::*)]//psi[starts-with(@desciption,"1")][following-sibling::pi[@data][@xml:lang="en-US"][@xml:id="id8"][following-sibling::beta[@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 2]]//lambda[@content][@xml:lang="en-GB"][not(preceding-sibling::*)]/lambda[@xml:lang="no-nb"][not(preceding-sibling::*)]]]][position() = 1]]][position() = 1]] + + + chi + 0 + @@ -24182,6 +28312,11 @@ //phi[@xml:lang="en-US"]//kappa[@xml:id="id1"][following-sibling::*[position()=2]][following-sibling::gamma[contains(concat(@src,"$"),"rue$")][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::phi//epsilon[@insert][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[contains(@src,"other")][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::beta[@desciption="this-is-att-value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau[not(preceding-sibling::*)][not(following-sibling::*)][not(parent::*/*[position()=2])]//pi[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::nu[starts-with(@number,"10")][preceding-sibling::*[position() = 1]]/lambda[contains(@content," value")][@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]][position() = 1]] + + + kappa + 0 + @@ -24205,6 +28340,11 @@ //beta[@attrib][@xml:lang="en-US"]//chi[@desciption][@xml:lang="no"][following-sibling::rho[starts-with(@attrib,"this")][@xml:id="id1"][preceding-sibling::*[position() = 1]]//sigma[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@true][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[@delete="attribute value"][@xml:lang="en-GB"][not(preceding-sibling::*)]//omicron[@object="another attribute value"][@xml:lang="en-GB"]/lambda[contains(concat(@token,"$"),"value$")][@xml:lang="en-US"][not(preceding-sibling::*)]//iota[starts-with(concat(@true,"-"),"attribute-")][@xml:id="id3"][following-sibling::lambda[@xml:lang="en-GB"][following-sibling::delta[@data][@xml:id="id4"][preceding-sibling::*[position() = 2]]//chi[@delete="attribute value"][@xml:lang="en-GB"][@xml:id="id5"]/pi[starts-with(concat(@abort,"-"),"true-")][not(following-sibling::*)]//kappa[@xml:lang="nb"][not(following-sibling::*)]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -24236,6 +28376,11 @@ //alpha[@xml:id="id1"]//iota[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::lambda[contains(concat(@number,"$"),"e$")][@xml:lang="en-GB"][@xml:id="id2"]//sigma[contains(concat(@class,"$"),"ue$")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][following-sibling::pi[preceding-sibling::*[position() = 2]][following-sibling::*[position()=4]][not(child::node())][following-sibling::zeta[starts-with(@data,"th")][@xml:id="id4"][not(child::node())][following-sibling::lambda[starts-with(@title,"this.nodeValu")][@xml:id="id5"][not(child::node())][following-sibling::beta[@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 5]][following-sibling::xi[@xml:id="id7"][not(following-sibling::*)]][position() = 1]][position() = 1]]]][position() = 1]]] + + + iota + 0 + @@ -24255,6 +28400,11 @@ //delta[@false][@xml:id="id1"]/chi[@true][@xml:lang="en-GB"]//rho[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[not(preceding-sibling::*)][not(following-sibling::tau)]/sigma[contains(@token,"ribut")][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[contains(concat(@name,"$"),"ue$")][@xml:id="id3"]//phi[@xml:id="id4"][not(child::node())][following-sibling::omicron[@xml:id="id5"][not(following-sibling::*)]/delta[@token][@xml:lang="no"]/sigma[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@xml:id="id7"][not(child::node())][following-sibling::sigma[starts-with(concat(@delete,"-"),"true-")][@xml:id="id8"][not(following-sibling::*)]//lambda[@name][@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::iota[contains(@and,"t")][preceding-sibling::*[position() = 1]]/chi[@xml:lang="en-US"][@xml:id="id10"][following-sibling::epsilon[@xml:lang="en"][@xml:id="id11"][not(following-sibling::*)]//omega[@object][not(preceding-sibling::*)][following-sibling::omicron[@xml:id="id12"][preceding-sibling::*[position() = 1]]/phi[@attrib][@xml:lang="en-US"][@xml:id="id13"]//*[contains(@and,"ue")][not(preceding-sibling::*)][not(following-sibling::*)]/*[not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -24298,6 +28448,11 @@ //kappa[@xml:lang="en"]/zeta[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::omicron[starts-with(@false,"this")][following-sibling::gamma[not(following-sibling::*)]//epsilon[@xml:lang="no"]/nu[@xml:lang="nb"][@xml:id="id2"][not(child::node())][following-sibling::*[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)]/lambda[contains(concat(@object,"$"),"e value$")][not(preceding-sibling::*)]//*[starts-with(concat(@attr,"-"),"_blank-")][@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::chi[starts-with(@or,"solid 1px")][@xml:lang="no"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]] + + + zeta + 0 + @@ -24322,6 +28477,11 @@ //omega[contains(concat(@src,"$"),"9$")][@xml:id="id1"]/zeta[@xml:id="id2"][not(child::node())][following-sibling::rho[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:lang="no-nb"][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id4"]//tau[@xml:lang="nb"][@xml:id="id5"]//iota[starts-with(@content,"this")][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[contains(@delete,"00%")][@xml:id="id7"][not(child::node())][following-sibling::zeta[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/nu[@xml:lang="en"][@xml:id="id8"][not(following-sibling::*)]/kappa[@attribute][@xml:id="id9"][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][not(following-sibling::*)]/nu[@xml:lang="en-GB"][@xml:id="id10"]//psi[starts-with(@abort,"so")][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::psi[contains(concat(@true,"$"),"00%$")][@xml:id="id12"][following-sibling::*[position()=2]][not(child::node())][following-sibling::eta[@xml:id="id13"][not(child::node())][following-sibling::nu[@or="attribute value"][@xml:lang="en"]][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -24353,6 +28513,11 @@ //beta[contains(concat(@attr,"$"),"00%$")][@xml:lang="no-nb"]/tau[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::tau)]//tau[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@xml:lang="no"][not(child::node())][following-sibling::tau[@title][@xml:lang="nb"]//delta[starts-with(concat(@name,"-"),"this.nodeValue-")][@xml:lang="no"][not(child::node())][following-sibling::theta[not(following-sibling::*)][position() = 1]]] + + + theta + 0 + @@ -24373,6 +28538,11 @@ //xi[@token="content"][@xml:id="id1"]//chi[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:lang="en"][@xml:id="id3"]/delta[contains(@attr,"9")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::upsilon[contains(@number,"s")][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::gamma[starts-with(concat(@attr,"-"),"attribute value-")][not(child::node())][following-sibling::tau[starts-with(concat(@title,"-"),"100%-")][preceding-sibling::*[position() = 3]][position() = 1]][position() = 1]][position() = 1]] + + + delta + 0 + @@ -24390,6 +28560,11 @@ //kappa[@xml:lang="no-nb"][@xml:id="id1"]/theta[starts-with(@false,"attribute")][@xml:lang="no-nb"][not(following-sibling::*)]/beta[not(child::node())][following-sibling::pi[not(child::node())][following-sibling::alpha[starts-with(@att,"at")][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/tau[@xml:lang="no-nb"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[starts-with(@content,"_blan")][@xml:lang="en"][not(following-sibling::*)]//iota[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]/rho[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[contains(@data,"ttribute value")][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@xml:lang="en"][@xml:id="id5"][following-sibling::*[position()=3]][not(child::node())][following-sibling::alpha[starts-with(concat(@data,"-"),"123456789-")][@xml:lang="nb"][@xml:id="id6"][following-sibling::omicron[@attribute][@xml:lang="no"][@xml:id="id7"][not(child::node())][following-sibling::zeta[starts-with(@true,"co")][@xml:lang="no-nb"][@xml:id="id8"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]] + + + beta + 0 + @@ -24417,6 +28592,11 @@ //sigma[@content][@xml:lang="no-nb"]/iota[starts-with(@true,"this-is-att-va")][@xml:id="id1"][following-sibling::phi[contains(concat(@true,"$"),"alue$")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::pi[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::omicron[@src][@xml:id="id3"][following-sibling::mu[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 5]]/delta[@data="another attribute value"][following-sibling::*[position()=1]][following-sibling::mu[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + iota + 0 + @@ -24438,6 +28618,11 @@ //mu//beta//zeta[starts-with(@number,"12345678")][not(preceding-sibling::*)]//omega[@xml:lang="no"][not(following-sibling::*)]/pi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::upsilon[contains(concat(@attrib,"$"),"lue$")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[contains(concat(@attrib,"$"),"blank$")][preceding-sibling::*[position() = 2]]]] + + + pi + 0 + @@ -24456,6 +28641,11 @@ //theta[@false="solid 1px green"][@xml:lang="nb"]/lambda[starts-with(concat(@desciption,"-"),"123456789-")][@xml:id="id1"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::theta)]//kappa[starts-with(concat(@attrib,"-"),"content-")]//tau[contains(@class,"alse")][@xml:lang="no-nb"][@xml:id="id3"][following-sibling::omega[@xml:id="id4"][not(child::node())][following-sibling::*[@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omicron[@class][not(child::node())][following-sibling::omicron[contains(@attrib,"te")][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 4]]/phi[@string][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[@xml:id="id9"][not(preceding-sibling::*)][following-sibling::mu[contains(concat(@string,"$"),"this-is-att-value$")][preceding-sibling::*[position() = 1]]][position() = 1]][position() = 1]]]]]] + + + lambda + 0 + @@ -24481,6 +28671,11 @@ //omega[@xml:lang="nb"]//upsilon[@xml:lang="en-GB"][following-sibling::*[position()=2]][not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][not(child::node())][following-sibling::rho[starts-with(concat(@content,"-"),"solid 1px green-")][@xml:lang="en-GB"][not(following-sibling::*)]/delta[starts-with(concat(@attrib,"-"),"_blank-")][@xml:lang="no-nb"]/chi[contains(@insert,"s-att-val")][@xml:lang="en"][@xml:id="id1"][not(child::node())][following-sibling::delta[@attrib="123456789"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::omega[contains(concat(@false,"$"),"nt$")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]]//psi[@xml:id="id4"][following-sibling::kappa[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]]/iota[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::zeta[contains(@attribute,"7")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::upsilon[@xml:lang="nb"][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[following-sibling::*[not(following-sibling::*)]/epsilon[@xml:lang="en-US"][following-sibling::eta[not(child::node())][following-sibling::phi[@attrib][following-sibling::delta[@attribute][@xml:lang="nb"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + upsilon + 0 + @@ -24513,6 +28708,11 @@ //theta[@xml:lang="en-GB"]//psi[@attr][@xml:id="id1"][not(preceding-sibling::*)]//omicron[@number][not(following-sibling::*)][not(following-sibling::omicron)]/kappa[@token][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/delta[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)]/phi[@class="this.nodeValue"][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::upsilon)]//eta[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::epsilon[starts-with(concat(@token,"-"),"attribute-")][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/iota][position() = 1]][position() = 1]] + + + phi + 0 + @@ -24538,6 +28738,11 @@ //mu[contains(@content,"ibute")]//upsilon[@xml:id="id1"]//omega[starts-with(@string,"c")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::kappa[@xml:id="id3"][not(preceding-sibling::kappa)]//iota[@xml:id="id4"][not(preceding-sibling::*)]/xi[not(preceding-sibling::*)][not(following-sibling::*)]] + + + omega + 0 + @@ -24555,6 +28760,11 @@ //sigma[@xml:lang="no-nb"]//alpha[starts-with(concat(@name,"-"),"attribute value-")][@xml:id="id1"][not(child::node())][following-sibling::pi[@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::zeta[@attr][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//lambda[contains(concat(@src,"$"),"ttribute value$")][@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::*[@xml:lang="en"]//phi[@delete][@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::phi[@xml:id="id4"]/beta[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::beta[starts-with(concat(@and,"-"),"this.nodeValue-")][following-sibling::*[position()=2]][following-sibling::chi[contains(concat(@data,"$"),"ttribute value$")][not(child::node())][following-sibling::epsilon[@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//*[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[@xml:lang="en-US"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + alpha + 0 + @@ -24581,6 +28791,11 @@ //mu//mu[@insert][@xml:lang="nb"][@xml:id="id1"]//phi[@xml:id="id2"][not(child::node())][following-sibling::mu[@content][@xml:id="id3"][following-sibling::tau[preceding-sibling::*[position() = 2]]//epsilon[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::*[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::rho[@name][@xml:id="id4"][not(following-sibling::*)][not(preceding-sibling::rho)]/tau[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::gamma[@content][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]][position() = 1]]] + + + phi + 0 + @@ -24602,6 +28817,11 @@ //beta/alpha[starts-with(concat(@false,"-"),"123456789-")][@xml:lang="no-nb"][not(child::node())][following-sibling::phi[@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:lang="nb"][not(following-sibling::*)][not(preceding-sibling::theta)]/omega[contains(@token,"ue")][not(preceding-sibling::*)]/zeta[starts-with(@title,"t")][not(following-sibling::*)]/kappa[@data="attribute"][following-sibling::rho[@xml:lang="no"][not(child::node())][following-sibling::delta[@xml:id="id2"][preceding-sibling::*[position() = 2]]//delta[@number][@xml:lang="en-GB"][not(preceding-sibling::*)]//theta[@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:id="id5"][not(following-sibling::*)]//eta[@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:lang="nb"][not(following-sibling::*)]/eta[@xml:lang="nb"]//xi[@xml:id="id6"][following-sibling::eta[@xml:lang="no-nb"][not(child::node())][following-sibling::delta[@delete="this-is-att-value"][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::delta)][following-sibling::mu[starts-with(concat(@true,"-"),"solid 1px green-")][preceding-sibling::*[position() = 3]]][position() = 1]]]]]]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -24639,6 +28859,11 @@ //*/theta[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/rho[starts-with(concat(@src,"-"),"100%-")]/iota[@delete][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]//chi/sigma[@or][@xml:lang="en-US"][following-sibling::omicron[contains(@attrib,"lue")][preceding-sibling::*[position() = 1]]/chi[not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="no"][following-sibling::*[position()=3]][following-sibling::upsilon[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::pi[@attribute][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[contains(@delete,"00%")][not(following-sibling::*)]//omicron[@xml:lang="en-US"][@xml:id="id3"][following-sibling::beta[@insert][@xml:id="id4"][not(child::node())][following-sibling::epsilon[contains(concat(@token,"$"),"e$")][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 2]]//epsilon[@xml:lang="no-nb"][not(preceding-sibling::*)]/chi[contains(concat(@and,"$"),"ank$")][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[contains(@name,"nt")][@xml:lang="en-GB"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::omicron)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + sigma + 0 + @@ -24674,6 +28899,11 @@ //omega[@xml:lang="en"]/upsilon[@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)]//mu[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[starts-with(@attribute,"att")][@xml:id="id3"][not(following-sibling::*)]/lambda[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::zeta[contains(concat(@true,"$"),"lue$")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/beta[starts-with(concat(@src,"-"),"another attribute value-")][not(preceding-sibling::*)][following-sibling::mu//tau[not(following-sibling::*)]//sigma[@xml:lang="en-GB"][not(preceding-sibling::*)]/pi[starts-with(concat(@attrib,"-"),"_blank-")][@xml:lang="nb"][not(following-sibling::*)]/iota[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-GB"][not(following-sibling::*)]/phi[@xml:lang="en-US"]//omega[@data][@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)]//omega[contains(@desciption,"lue")][@xml:id="id10"][not(preceding-sibling::*)]/nu[contains(concat(@desciption,"$"),"deValue$")][@xml:lang="no"][following-sibling::delta[@xml:id="id11"][following-sibling::upsilon[@xml:lang="en-GB"][@xml:id="id12"][following-sibling::iota[starts-with(concat(@string,"-"),"attribute-")][preceding-sibling::*[position() = 3]][following-sibling::upsilon[@xml:id="id13"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]]]]] + + + mu + 0 + @@ -24718,6 +28948,11 @@ //upsilon[@xml:lang="nb"]/epsilon[not(following-sibling::*)]/omega[starts-with(concat(@title,"-"),"false-")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[contains(concat(@delete,"$"),"e-value$")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]//lambda[contains(concat(@attribute,"$"),"is-att-value$")][@xml:id="id3"][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"]/chi[@or][not(following-sibling::*)]/delta[contains(concat(@desciption,"$"),"bute value$")][@xml:lang="en-GB"][@xml:id="id4"]//gamma[not(preceding-sibling::*)]/chi[@content][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(concat(@number,"$"),"blank$")][@xml:id="id5"][preceding-sibling::*[position() = 1]]/pi[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[starts-with(@false,"attribute val")][not(following-sibling::*)]//alpha[contains(concat(@object,"$"),"ank$")][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@attrib="this.nodeValue"][@xml:lang="nb"][not(preceding-sibling::*)]//rho[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][position() = 1]]]][position() = 1]] + + + mu + 0 + @@ -24754,6 +28989,11 @@ //eta[@insert][@xml:lang="no-nb"]/omega[@xml:lang="en-US"][not(preceding-sibling::*)]/chi[@false="this.nodeValue"][@xml:id="id1"]//xi[@xml:id="id2"][following-sibling::omicron[starts-with(@att,"attribute-value")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omicron[@content="true"][preceding-sibling::*[position() = 2]][position() = 1]]] + + + xi + 0 + @@ -24770,6 +29010,11 @@ //pi/chi[@data][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::omega[@xml:id="id2"][not(child::node())][following-sibling::beta[@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id4"][not(following-sibling::*)]//omega[contains(@string,"alue")]//eta[starts-with(concat(@data,"-"),"solid 1px green-")][@xml:lang="en-GB"][@xml:id="id5"][following-sibling::*[position()=3]][not(child::node())][following-sibling::eta[contains(@attrib,"ue")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::beta[contains(@abort,"00%")][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 3]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -24790,6 +29035,11 @@ //sigma[@false][@xml:lang="no"][@xml:id="id1"]/sigma[contains(@name,"V")][@xml:id="id2"]/omega[contains(concat(@delete,"$"),"%$")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[@insert="123456789"]/mu[@xml:id="id4"][not(following-sibling::*)]/pi[@data="false"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)] + + + pi + 1 + @@ -24808,6 +29058,11 @@ //*[@xml:lang="en-GB"][@xml:id="id1"]/tau[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[contains(@name,"is.")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/zeta[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::chi[@xml:id="id3"][following-sibling::alpha[@delete][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[starts-with(concat(@src,"-"),"attribute value-")][following-sibling::phi[@src="attribute"][following-sibling::psi[starts-with(concat(@src,"-"),"true-")][@xml:id="id5"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(preceding-sibling::psi or following-sibling::psi)][not(child::node())][following-sibling::omicron[@attribute][preceding-sibling::*[position() = 3]][following-sibling::rho[@abort="this.nodeValue"][@xml:lang="nb"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::pi[@att]/nu[not(following-sibling::*)]//theta[@token][@xml:id="id7"][not(child::node())][following-sibling::chi[not(following-sibling::*)][position() = 1]]][position() = 1]]]]]]]] + + + tau + 0 + @@ -24835,6 +29090,11 @@ //upsilon[@xml:id="id1"]/mu[@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::kappa[@true][@xml:id="id3"]/kappa[@xml:lang="en"][following-sibling::upsilon[starts-with(concat(@insert,"-"),"true-")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[@insert="another attribute value"][not(preceding-sibling::*)][not(child::node())][following-sibling::*//zeta[contains(@true,"1234567")][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::zeta)]/rho[starts-with(@att,"soli")][@xml:lang="en-GB"]/omicron[contains(concat(@class,"$"),"n$")][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@attr="false"][not(following-sibling::*)]/tau[@desciption="solid 1px green"][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:id="id6"][not(following-sibling::*)]//upsilon[@xml:lang="en-US"][not(following-sibling::*)]//pi[@title="solid 1px green"][@xml:id="id7"][not(preceding-sibling::*)]//kappa[@xml:lang="nb"][not(child::node())][following-sibling::nu[@or][@xml:id="id8"][not(following-sibling::*)]/sigma[following-sibling::phi[contains(@attribute,"eV")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::mu[not(following-sibling::*)]//omicron[@attr][@xml:id="id9"][not(following-sibling::*)]]]]]]]][position() = 1]] + + + mu + 0 + @@ -24875,6 +29135,11 @@ //lambda[@att]//nu[contains(concat(@desciption,"$"),"te value$")][@xml:lang="no"][@xml:id="id1"][not(child::node())][following-sibling::chi[@att][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[contains(@true,"lan")][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]/beta[contains(@content,"e v")][@xml:lang="en-US"][following-sibling::omega[@string][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(preceding-sibling::omega)][not(child::node())][following-sibling::iota[contains(@true,"e")][@xml:lang="en-GB"][@xml:id="id4"][not(following-sibling::*)]/epsilon[contains(concat(@insert,"$"),"e$")][@xml:lang="no-nb"][@xml:id="id5"]//iota[@and][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][not(child::node())][following-sibling::iota[contains(concat(@attr,"$"),"-value$")][@xml:lang="en"][@xml:id="id6"]//lambda[@xml:lang="no"][@xml:id="id7"][following-sibling::tau[contains(@or,"100")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[contains(concat(@true,"$"),"attribute$")][not(following-sibling::*)]/delta[@attribute][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::zeta[@xml:lang="en"][@xml:id="id8"]//delta[@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[starts-with(concat(@object,"-"),"true-")][@xml:lang="no-nb"]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]] + + + nu + 0 + @@ -24908,6 +29173,11 @@ //kappa[@xml:lang="en-GB"][@xml:id="id1"]//psi[starts-with(@true,"a")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(@delete,"lue")][@xml:lang="en-US"][following-sibling::*[position()=1]][following-sibling::eta[contains(@insert,"ribute")][@xml:lang="en-US"]/kappa[contains(concat(@title,"$"),"te-value$")][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::sigma[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 2]][following-sibling::tau[contains(@attribute,"ute v")][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(preceding-sibling::tau)][not(child::node())][following-sibling::alpha[starts-with(@or,"attrib")][@xml:lang="en"][preceding-sibling::*[position() = 4]][following-sibling::sigma[@and][not(following-sibling::*)]][position() = 1]]]]]]] + + + iota + 0 + @@ -24929,6 +29199,11 @@ //lambda//nu[@xml:lang="nb"][not(child::node())][following-sibling::lambda[contains(concat(@desciption,"$"),"id 1px green$")]//omega[@or="attribute-value"][not(child::node())][following-sibling::rho[@xml:lang="en"][@xml:id="id1"][following-sibling::*[position()=2]][not(child::node())][following-sibling::zeta[@string][@xml:lang="en"][not(child::node())][following-sibling::lambda[starts-with(@class,"this-is-a")][@xml:lang="en"][@xml:id="id2"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/eta[contains(@attr," green")]/epsilon[starts-with(concat(@content,"-"),"123456789-")][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::zeta[@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/eta[@token][not(preceding-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]] + + + nu + 0 + @@ -24952,6 +29227,11 @@ //kappa[@xml:id="id1"]/xi[@xml:lang="no-nb"]/sigma[@string="true"][@xml:lang="en"][@xml:id="id2"][following-sibling::gamma[@name][@xml:id="id3"][not(preceding-sibling::gamma)][following-sibling::chi[@false][@xml:id="id4"][following-sibling::epsilon[starts-with(@string,"false")][@xml:id="id5"][preceding-sibling::*[position() = 3]][following-sibling::xi[@data="solid 1px green"][@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 4]]/mu[@attrib="_blank"][@xml:lang="en-GB"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::gamma[@desciption="content"][not(following-sibling::*)]//gamma[@and][@xml:lang="no"][following-sibling::psi[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::psi[contains(@attribute,"n")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]/lambda[@xml:id="id8"][not(preceding-sibling::*)][following-sibling::nu[starts-with(@name,"s")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[starts-with(concat(@true,"-"),"this.nodeValue-")][@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -24981,6 +29261,11 @@ //pi//beta[starts-with(concat(@data,"-"),"false-")][not(preceding-sibling::*)][following-sibling::upsilon[contains(concat(@name,"$"),"se$")][@xml:id="id1"]/alpha[@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]/mu[@xml:id="id3"]//lambda[@xml:lang="no-nb"][following-sibling::*[position()=5]][following-sibling::psi[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::rho[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::tau[@xml:lang="no-nb"][following-sibling::alpha[@name="this-is-att-value"][@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::gamma[@xml:id="id5"][not(following-sibling::*)]//theta[not(preceding-sibling::*)]/xi[@object][@xml:lang="en-GB"][not(child::node())][following-sibling::chi[@or][@xml:lang="no-nb"]]][position() = 1]][position() = 1]][position() = 1]]]] + + + beta + 0 + @@ -25008,6 +29293,11 @@ //mu[@token="100%"]//psi[@xml:lang="en-US"][not(preceding-sibling::*)]//nu[starts-with(@token,"another attri")][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="nb"][preceding-sibling::*[position() = 1]]/mu[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@xml:lang="en"][not(following-sibling::*)]/*[@xml:id="id3"][not(following-sibling::*)]/zeta[@xml:id="id4"][not(following-sibling::*)]//sigma[contains(@true,"6789")][following-sibling::*[position()=3]][following-sibling::rho[@and][@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[not(child::node())][following-sibling::zeta[starts-with(concat(@name,"-"),"100%-")][@xml:id="id6"][not(following-sibling::*)][position() = 1]][position() = 1]]]][position() = 1]] + + + nu + 0 + @@ -25035,6 +29325,11 @@ //xi[@xml:id="id1"]//mu[@attrib="123456789"][@xml:id="id2"][not(following-sibling::*)]/upsilon[starts-with(concat(@number,"-"),"attribute value-")][@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)]/upsilon[starts-with(@name,"attribute")][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@att="true"][@xml:lang="en-GB"][not(following-sibling::*)]/iota[starts-with(concat(@content,"-"),"100%-")][@xml:id="id5"][not(preceding-sibling::*)]//sigma[starts-with(@delete,"100%")][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::zeta[@attr][@xml:lang="en-US"][@xml:id="id7"][following-sibling::gamma[@xml:lang="nb"][@xml:id="id8"][not(child::node())][following-sibling::phi[starts-with(@and,"this-is-att")][@xml:lang="nb"][preceding-sibling::*[position() = 3]]//zeta[@xml:lang="en-GB"][@xml:id="id9"]//mu[@xml:lang="en-US"]/theta[@xml:id="id10"][following-sibling::gamma[contains(concat(@abort,"$"),"alse$")][@xml:id="id11"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:lang="en-GB"][not(following-sibling::*)]/delta[starts-with(concat(@attribute,"-"),"another attribute value-")][@xml:lang="no-nb"][@xml:id="id12"]//kappa[contains(concat(@desciption,"$"),"alue$")][@xml:lang="en"][@xml:id="id13"][following-sibling::delta[@delete][not(following-sibling::*)]//omicron[@src][@xml:id="id14"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::nu[@xml:lang="en-US"][@xml:id="id15"][preceding-sibling::*[position() = 1]][following-sibling::pi[@string="another attribute value"][preceding-sibling::*[position() = 2]]/gamma[@src][@xml:id="id16"][not(child::node())][following-sibling::*[@true][@xml:lang="no"][@xml:id="id17"][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + upsilon + 1 + @@ -25077,6 +29372,11 @@ //alpha[@xml:id="id1"]/theta[@xml:lang="no"][not(following-sibling::*)]//rho[@or][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::rho[contains(concat(@token,"$"),"true$")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/pi[starts-with(@content,"_")][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::*[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//*[@xml:lang="nb"][@xml:id="id4"][not(child::node())][following-sibling::phi[contains(concat(@name,"$"),"ntent$")][@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//omega[starts-with(concat(@data,"-"),"content-")][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]] + + + rho + 0 + @@ -25099,6 +29399,11 @@ //upsilon[contains(@object,"-is-at")][@xml:lang="en-GB"]//mu[@or="false"][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@name][@xml:id="id2"][not(preceding-sibling::*)]/iota[@token][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::iota)]/xi[@title="content"][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::chi[starts-with(concat(@abort,"-"),"solid 1px green-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@src="another attribute value"][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]] + + + xi + 0 + @@ -25118,6 +29423,11 @@ //phi[contains(concat(@data,"$"),"tribute$")][@xml:lang="no-nb"][@xml:id="id1"]//kappa[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::*[position()=3]][following-sibling::iota[@string][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[not(following-sibling::*)]//lambda[@false="content"][following-sibling::*[position()=2]][not(child::node())][following-sibling::phi[@xml:lang="en"][following-sibling::sigma[starts-with(@object,"this.nodeValu")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]]/sigma[@attribute][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[starts-with(concat(@string,"-"),"this-")][@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@object][@xml:id="id8"][following-sibling::*[position()=2]][following-sibling::delta[starts-with(@insert,"this-is-a")][@xml:id="id9"][following-sibling::eta[@xml:id="id10"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//tau[starts-with(@true,"con")][@xml:lang="en-GB"][@xml:id="id11"][following-sibling::kappa[starts-with(@title,"fal")][@xml:lang="en-GB"][@xml:id="id12"][preceding-sibling::*[position() = 1]]/delta[@string][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -25152,6 +29462,11 @@ //tau[@name="content"][@xml:id="id1"]//*[contains(@and,"blank")][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[starts-with(concat(@string,"-"),"attribute-")][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@token="this-is-att-value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/theta[@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[@title="100%"][not(preceding-sibling::*)]/epsilon[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::iota[contains(@title,"e")][@xml:id="id7"][following-sibling::lambda[@xml:id="id8"]//mu[@object="this.nodeValue"][@xml:lang="en-US"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)][not(following-sibling::chi)]/psi[starts-with(@insert,"false")][following-sibling::rho[contains(concat(@desciption,"$"),"456789$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]][position() = 1]][position() = 1]] + + + any + 0 + @@ -25181,6 +29496,11 @@ //phi[@true][@xml:lang="en-GB"][@xml:id="id1"]/iota[@insert][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::zeta[not(following-sibling::*)]//xi[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:lang="no-nb"][not(child::node())][following-sibling::gamma[contains(concat(@attribute,"$"),"ue$")][@xml:id="id3"]/zeta[@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[preceding-sibling::*[position() = 1]]/nu[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[starts-with(@attrib,"_blan")][preceding-sibling::*[position() = 1]][following-sibling::iota[contains(concat(@title,"$"),"e$")][@xml:lang="en-GB"][@xml:id="id6"][following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:lang="en-US"][following-sibling::nu[preceding-sibling::*[position() = 4]]/theta[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[@string="this.nodeValue"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:lang="no-nb"][@xml:id="id8"]/gamma[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[starts-with(concat(@title,"-"),"this-")][@xml:id="id9"][preceding-sibling::*[position() = 1]][following-sibling::epsilon[@xml:lang="en-US"][not(following-sibling::*)]//kappa[following-sibling::theta[contains(@object,"ttribute-val")][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]]]] + + + iota + 0 + @@ -25217,6 +29537,11 @@ //theta[@delete][@xml:lang="no"][@xml:id="id1"]/theta[starts-with(concat(@content,"-"),"true-")][not(following-sibling::*)]/mu[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:id="id3"][not(following-sibling::*)]//*[contains(@true,"a")][not(preceding-sibling::*)][following-sibling::omicron[@xml:lang="nb"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[starts-with(@object,"conten")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/omega[not(preceding-sibling::omega)]//pi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[contains(@and,"nk")][@xml:id="id5"][not(child::node())][following-sibling::delta[@xml:id="id6"][not(following-sibling::*)]/mu[@or][following-sibling::omicron[starts-with(@or,"anot")][following-sibling::kappa[@src][preceding-sibling::*[position() = 2]][following-sibling::delta[starts-with(concat(@attrib,"-"),"true-")][@xml:lang="no"][@xml:id="id7"]]][position() = 1]]][position() = 1]][position() = 1]]]]] + + + mu + 0 + @@ -25246,6 +29571,11 @@ //sigma[starts-with(concat(@desciption,"-"),"100%-")][@xml:lang="nb"][@xml:id="id1"]/epsilon[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)]/pi[@xml:lang="no"]//epsilon[contains(concat(@number,"$"),"0%$")][@xml:lang="no"][not(following-sibling::*)]/mu[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::omicron[@content="attribute-value"][@xml:lang="no-nb"]] + + + mu + 0 + @@ -25263,6 +29593,11 @@ //psi[starts-with(@attribute,"soli")][@xml:id="id1"]/alpha[starts-with(@delete,"100")][@xml:id="id2"][not(following-sibling::*)]//eta//kappa[following-sibling::eta[not(following-sibling::*)]/lambda[not(child::node())][following-sibling::upsilon[contains(@attr,"u")][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::zeta[@content="content"][@xml:lang="no-nb"][@xml:id="id4"][not(child::node())][following-sibling::chi[@xml:lang="en"][following-sibling::phi[starts-with(@string,"cont")][@xml:lang="nb"][preceding-sibling::*[position() = 4]]/sigma[contains(@false,"ont")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@xml:id="id6"][not(following-sibling::*)]/omega[@xml:id="id7"]/tau[contains(@desciption,"lan")][@xml:lang="en-GB"][@xml:id="id8"][not(following-sibling::*)]/chi[@abort="false"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[@xml:id="id9"]][position() = 1]]]]] + + + kappa + 0 + @@ -25296,6 +29631,11 @@ //mu[@xml:id="id1"]/phi[@xml:id="id2"][not(child::node())][following-sibling::mu[starts-with(@title,"this.n")][preceding-sibling::*[position() = 1]][following-sibling::rho[not(child::node())][following-sibling::psi[@xml:lang="en"][@xml:id="id3"]//tau[@xml:id="id4"][not(preceding-sibling::*)]//zeta[starts-with(concat(@object,"-"),"another attribute value-")][@xml:lang="en"][not(preceding-sibling::*)]/sigma[contains(@abort,"ribute")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[contains(@insert,"e")][@xml:id="id5"][preceding-sibling::*[position() = 1]]//iota[contains(concat(@number,"$"),"se$")][@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::iota)]/pi[not(preceding-sibling::*)]/omega[@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[contains(@attribute,"ue")][@xml:lang="en"][@xml:id="id8"][not(following-sibling::*)]/psi[@data][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::pi[contains(concat(@or,"$"),"ribute-value$")][@xml:lang="en-US"][following-sibling::phi[@att="attribute value"][@xml:id="id10"][preceding-sibling::*[position() = 2]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -25328,6 +29668,11 @@ //pi[contains(concat(@and,"$"),"r attribute value$")]//nu[starts-with(@attrib,"100%")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::psi[contains(concat(@name,"$"),"0%$")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::tau[@xml:id="id1"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//sigma[not(child::node())][following-sibling::upsilon[@false][@xml:lang="nb"][@xml:id="id2"]/epsilon[starts-with(@and,"another at")]/pi[@string][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::eta[@string="attribute"][@xml:lang="en-GB"][following-sibling::pi[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[@xml:lang="nb"][not(preceding-sibling::*)]//sigma[not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@false][@xml:lang="en-US"][preceding-sibling::*[position() = 1]]/pi[contains(@true,"ther attribute value")][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]/theta[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[@xml:lang="no"][not(preceding-sibling::xi)][not(child::node())][following-sibling::phi[@xml:id="id5"][preceding-sibling::*[position() = 1]]/theta[starts-with(@attr,"fals")][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[contains(@insert,"nt")]][position() = 1]]]][position() = 1]]][position() = 1]]][position() = 1]] + + + nu + 0 + @@ -25365,6 +29710,11 @@ //mu[@xml:id="id1"]/upsilon//psi[starts-with(concat(@attr,"-"),"_blank-")][@xml:id="id2"][not(preceding-sibling::*)]//epsilon[starts-with(@delete,"1234")][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:id="id3"][not(following-sibling::*)]//sigma[@object][@xml:lang="en"][not(preceding-sibling::*)]/beta[@class][@xml:lang="nb"]//*[not(child::node())][following-sibling::phi[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[@true][not(preceding-sibling::*)][not(following-sibling::*)]//psi[not(preceding-sibling::*)][not(following-sibling::*)]]] + + + epsilon + 0 + @@ -25391,6 +29741,11 @@ //theta[contains(@name,"89")][@xml:lang="no"]/eta[contains(concat(@attribute,"$"),"e$")][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::alpha[@xml:lang="no-nb"][@xml:id="id1"][not(child::node())][following-sibling::tau[@xml:lang="nb"][not(following-sibling::*)]/iota[contains(concat(@data,"$"),"bute$")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::eta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]]]] + + + eta + 0 + @@ -25406,6 +29761,11 @@ //xi[@xml:id="id1"]/omicron[@xml:id="id2"][not(following-sibling::*)]/pi[contains(@string,"t")]//eta[@xml:lang="en-GB"]/beta[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[not(following-sibling::*)]/psi[starts-with(concat(@attribute,"-"),"false-")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@att="attribute"][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::phi[@xml:lang="nb"][@xml:id="id4"]//kappa[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::mu[contains(@or,"co")][@xml:lang="en-GB"][not(child::node())][following-sibling::alpha[contains(@src,"12345")][@xml:lang="no-nb"][not(following-sibling::*)]//lambda[starts-with(@attrib,"123456")][@xml:lang="en"][@xml:id="id5"]][position() = 1]][position() = 1]][position() = 1]] + + + beta + 0 + @@ -25434,6 +29794,11 @@ //*/eta[starts-with(@attr,"conten")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::eta)][following-sibling::xi[@xml:lang="en-US"][@xml:id="id2"][following-sibling::xi[@xml:lang="no"][preceding-sibling::*[position() = 2]]//alpha[starts-with(concat(@data,"-"),"attribute-")][@xml:id="id3"][not(child::node())][following-sibling::chi[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::psi[@xml:id="id4"][following-sibling::kappa[@xml:id="id5"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + eta + 0 + @@ -25451,6 +29816,11 @@ //pi[@xml:lang="en"]/upsilon[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[starts-with(@attr,"fals")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[@attr][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]//sigma[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@att][position() = 1]]] + + + upsilon + 0 + @@ -25467,6 +29837,11 @@ //iota[@attrib][@xml:id="id1"]//phi[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::*[@delete][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/theta[starts-with(@title,"this-is-att-val")][not(preceding-sibling::*)][following-sibling::epsilon//xi[@attrib][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::gamma[starts-with(@title,"t")][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::epsilon[@xml:id="id5"][not(following-sibling::*)]/psi[position() = 1]][position() = 1]]]] + + + phi + 0 + @@ -25487,6 +29862,11 @@ //tau/psi[@xml:lang="nb"][@xml:id="id1"][following-sibling::beta[not(following-sibling::*)]/kappa[@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]/pi[@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::chi[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]/nu[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//upsilon[starts-with(@attribute,"true")][@xml:lang="no"][@xml:id="id7"]]][position() = 1]] + + + psi + 0 + @@ -25508,6 +29888,11 @@ //lambda[@xml:id="id1"]/pi[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[contains(concat(@attr,"$"),"%$")][@xml:lang="en-US"][@xml:id="id3"][not(child::node())][following-sibling::xi[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::alpha[@attr][@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::alpha)]//upsilon[not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//chi[@data][@xml:lang="en"][@xml:id="id7"][following-sibling::lambda[@xml:lang="en-US"][not(preceding-sibling::lambda)][not(child::node())][following-sibling::delta[@att="100%"][@xml:id="id8"][preceding-sibling::*[position() = 2]][following-sibling::upsilon[contains(concat(@src,"$"),"bute value$")][@xml:lang="en-US"][preceding-sibling::*[position() = 3]]//gamma[@xml:id="id9"][following-sibling::mu[@xml:lang="en-US"][@xml:id="id10"]/delta[@xml:lang="en-GB"][following-sibling::beta[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[starts-with(concat(@attr,"-"),"content-")][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[contains(@string,"a")][preceding-sibling::*[position() = 3]]//upsilon[contains(@delete,"%")]//theta[@token="another attribute value"][@xml:lang="en-US"][following-sibling::phi[@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi[contains(concat(@attribute,"$"),"lue$")][@xml:lang="en-GB"][@xml:id="id12"][preceding-sibling::*[position() = 2]][position() = 1]]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]] + + + lambda + 1 + @@ -25545,6 +29930,11 @@ //delta[@xml:lang="en-US"]//xi[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@xml:lang="en"][following-sibling::pi[@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)]/delta[@xml:lang="en-US"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@xml:id="id3"]//phi[@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::nu[not(following-sibling::*)]//delta[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::gamma[@xml:lang="nb"]/alpha[@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/gamma[contains(@att,"e")][not(preceding-sibling::*)][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 1]]/mu[not(following-sibling::*)]][position() = 1]]]]] + + + theta + 0 + @@ -25574,6 +29964,11 @@ //delta[@xml:lang="en-GB"]/upsilon[@xml:id="id1"][not(following-sibling::*)]//kappa[@xml:lang="en-US"][following-sibling::upsilon[@xml:lang="en-GB"][following-sibling::*[position()=2]][following-sibling::lambda[@abort][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@content][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//phi[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[preceding-sibling::*[position() = 1]]//tau[starts-with(concat(@title,"-"),"_blank-")][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[starts-with(@abort,"this.n")][@xml:lang="en-GB"]]]]]] + + + kappa + 0 + @@ -25595,6 +29990,11 @@ //sigma[@xml:lang="no"][@xml:id="id1"]//mu[not(preceding-sibling::*)][following-sibling::xi[starts-with(@string,"sol")][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(preceding-sibling::xi)]//gamma[contains(concat(@token,"$"),"e$")][@xml:lang="en-GB"][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::pi[contains(concat(@insert,"$"),"green$")][following-sibling::*[position()=1]][following-sibling::gamma[@att][@xml:lang="en-US"][not(following-sibling::*)]//chi[@delete][@xml:id="id4"][not(following-sibling::*)]//zeta[@xml:lang="no-nb"][@xml:id="id5"][not(child::node())][following-sibling::*[starts-with(@src,"attr")][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[@delete="content"][@xml:lang="en"]//mu[@xml:id="id7"]]]][position() = 1]]] + + + mu + 0 + @@ -25618,6 +30018,11 @@ //phi[@xml:lang="en-GB"]/gamma[@xml:lang="en"][@xml:id="id1"]//mu[contains(concat(@att,"$"),"px green$")][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[starts-with(concat(@object,"-"),"attribute-")][@xml:lang="no-nb"]/psi[starts-with(concat(@src,"-"),"attribute-")][@xml:id="id2"][not(preceding-sibling::*)]//chi[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[@insert="attribute value"][@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@xml:lang="no"][following-sibling::rho[starts-with(concat(@desciption,"-"),"123456789-")][preceding-sibling::*[position() = 2]]/mu[@token][@xml:lang="en"][@xml:id="id5"]/kappa[starts-with(@number,"fals")][not(child::node())][following-sibling::alpha[@src][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@xml:lang="en"]/iota[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[starts-with(concat(@name,"-"),"attribute-")][@xml:lang="no"][@xml:id="id7"]/theta[@number="solid 1px green"][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]][position() = 1]]] + + + mu + 0 + @@ -25650,6 +30055,11 @@ //phi[contains(@delete,"r attribu")][@xml:lang="no-nb"]/epsilon[@xml:id="id1"][not(preceding-sibling::*)]/beta[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@delete][@xml:id="id3"][not(following-sibling::*)]//psi[starts-with(concat(@src,"-"),"this.nodeValue-")][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta[@true="100%"][@xml:lang="en-US"]//upsilon[@xml:id="id6"][following-sibling::omega[@xml:id="id7"]/upsilon[not(preceding-sibling::*)][not(following-sibling::*)]/rho[@insert][@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:id="id9"]//delta[@xml:lang="en"][@xml:id="id10"]//iota[@xml:lang="no-nb"][@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@xml:lang="nb"][@xml:id="id12"][following-sibling::tau[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::beta[@xml:id="id13"][not(following-sibling::*)]//pi[@class][@xml:id="id14"][following-sibling::*[position()=1]][following-sibling::delta[@and][@xml:id="id15"][preceding-sibling::*[position() = 1]]/alpha[contains(@abort,"bute-v")][@xml:lang="en-GB"][@xml:id="id16"]/epsilon[@xml:lang="en-US"][@xml:id="id17"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]]][position() = 1]] + + + lambda + 0 + @@ -25694,6 +30104,11 @@ //beta[starts-with(concat(@and,"-"),"this.nodeValue-")][@xml:id="id1"]/zeta[starts-with(@false,"con")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)][not(following-sibling::theta)]/delta[@xml:id="id4"]/eta[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)]//pi[@desciption][@xml:lang="no"]/pi[not(following-sibling::*)]//pi[following-sibling::*[position()=3]][not(child::node())][following-sibling::upsilon[@false][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]//eta[contains(@att," value")][@xml:lang="en"][not(preceding-sibling::*)][not(preceding-sibling::eta)]]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -25720,6 +30135,11 @@ //rho[@xml:id="id1"]//sigma[@xml:lang="no-nb"][not(following-sibling::*)]/eta[@xml:id="id2"][not(following-sibling::*)]/sigma[starts-with(concat(@title,"-"),"content-")][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::*)]/tau[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omega[@xml:lang="en"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[@xml:id="id4"][preceding-sibling::*[position() = 2]]//omicron[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:lang="no-nb"][not(following-sibling::*)]//tau[contains(@string,"true")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha//phi[@attr][@xml:lang="no-nb"][@xml:id="id5"]/zeta[@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[starts-with(@or,"false")][@xml:id="id7"][not(following-sibling::*)]//upsilon[@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@xml:lang="nb"][not(following-sibling::*)]][position() = 1]]][position() = 1]]]] + + + tau + 0 + @@ -25752,6 +30172,11 @@ //kappa[contains(concat(@object,"$"),"ribute value$")][@xml:id="id1"]/epsilon[starts-with(@attrib,"fa")][@xml:id="id2"][not(preceding-sibling::*)]//omega[starts-with(concat(@delete,"-"),"attribute value-")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//phi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::nu[@true][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::mu[starts-with(@and,"this-is-att-val")][not(following-sibling::*)]/pi[contains(@attr,"ibute")][@xml:id="id5"][not(preceding-sibling::*)]/phi[@xml:id="id6"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[not(following-sibling::*)]/epsilon[@or="attribute-value"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[starts-with(@data,"fal")][@xml:id="id8"][following-sibling::epsilon//chi[@attribute="false"][@xml:lang="en"][following-sibling::rho[@insert="this-is-att-value"][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + phi + 0 + @@ -25781,6 +30206,11 @@ //lambda[@xml:lang="no"]//*[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::iota[@name="123456789"][@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::omicron[preceding-sibling::*[position() = 2]]/tau[starts-with(concat(@src,"-"),"this.nodeValue-")][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[contains(concat(@abort,"$"),"-att-value$")][following-sibling::nu[starts-with(concat(@attrib,"-"),"123456789-")][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@xml:id="id4"][preceding-sibling::*[position() = 1]]][position() = 1]]]] + + + any + 0 + @@ -25801,6 +30231,11 @@ //beta[@xml:lang="en-US"][@xml:id="id1"]/psi[@and][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[not(child::node())][following-sibling::theta[@true="true"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(concat(@src,"$"),"Value$")][@xml:id="id3"][not(following-sibling::*)]//upsilon[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[contains(@attrib,"reen")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::xi[contains(concat(@name,"$"),"89$")][@xml:id="id5"][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::nu[@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//xi//eta[@or][@xml:lang="nb"][@xml:id="id6"]//iota//phi[@object][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::iota[following-sibling::*[position()=3]][following-sibling::mu[@xml:lang="en"][preceding-sibling::*[position() = 2]][following-sibling::delta[@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::gamma[starts-with(@and,"this.nod")][preceding-sibling::*[position() = 4]]/kappa[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][not(child::node())][following-sibling::nu[@xml:id="id7"]]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -25838,6 +30273,11 @@ //gamma[contains(concat(@content,"$"),"this.nodeValue$")]//lambda[@xml:lang="no-nb"][not(preceding-sibling::*)]/upsilon[@xml:lang="en"]/beta[@xml:lang="en-GB"][not(following-sibling::*)]/omicron[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]]/kappa[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:lang="en-GB"][following-sibling::*[position()=1]][not(preceding-sibling::beta)][following-sibling::nu[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//xi[not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]//sigma[@attr="this.nodeValue"][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[contains(concat(@desciption,"$"),"rue$")][@xml:id="id5"][preceding-sibling::*[position() = 1]]/tau[@xml:id="id6"][not(preceding-sibling::*)][not(preceding-sibling::tau)][following-sibling::delta[contains(@token,"-va")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]][position() = 1]]] + + + omicron + 0 + @@ -25871,6 +30311,11 @@ //beta[@xml:lang="en-US"]//phi[@class][@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::kappa[@delete]//gamma[starts-with(@att,"conten")][@xml:lang="nb"][not(preceding-sibling::*)]/chi[contains(concat(@desciption,"$"),"100%$")][@xml:lang="no"][not(following-sibling::*)]/omicron[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::chi[contains(@true,"alue")][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]] + + + phi + 0 + @@ -25889,6 +30334,11 @@ //pi[@xml:lang="no"]//epsilon[@xml:lang="en"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="en-US"]/phi[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::tau[@xml:id="id2"][not(child::node())][following-sibling::omicron[@abort="attribute"][@xml:lang="no"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::sigma/rho[@string][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[starts-with(concat(@name,"-"),"content-")][not(child::node())][following-sibling::upsilon[@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]/zeta[@data][@xml:lang="nb"][following-sibling::*[position()=2]][following-sibling::xi[@true="true"][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::beta[@class][@xml:lang="nb"][preceding-sibling::*[position() = 2]]/epsilon[@insert][@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::theta[@xml:lang="no"][not(following-sibling::*)]/eta[contains(@token,"ute")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@xml:lang="en-GB"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[starts-with(@attr,"_")][@xml:lang="en-US"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::sigma[contains(@class,"ribut")][@xml:id="id8"]//pi[@false][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[@xml:id="id9"]][position() = 1]][position() = 1]]]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + epsilon + 0 + @@ -25928,6 +30378,11 @@ //pi[@xml:lang="en-US"]/theta[@xml:id="id1"][not(child::node())][following-sibling::iota[@data][@xml:lang="nb"][not(child::node())][following-sibling::omega[@xml:id="id2"][not(child::node())][following-sibling::zeta[preceding-sibling::*[position() = 3]][not(following-sibling::*)]/xi[@number="attribute-value"][@xml:id="id3"][not(preceding-sibling::*)]//mu[@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[@content][@xml:lang="en-GB"][not(preceding-sibling::*)]//upsilon[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@src][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[contains(@att,"is-att-value")][@xml:lang="en-US"][following-sibling::theta[@xml:id="id7"]/psi[@or][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::xi[preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + theta + 0 + @@ -25956,6 +30411,11 @@ //tau/theta[contains(@delete,"_blan")][@xml:lang="en-GB"][not(child::node())][following-sibling::epsilon[contains(concat(@title,"$"),"green$")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[not(following-sibling::*)]/chi[@or][not(preceding-sibling::*)]/zeta[@attrib][@xml:lang="no-nb"][@xml:id="id1"][not(following-sibling::*)]/theta[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[contains(@object,".nodeV")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//gamma[@xml:lang="no"][not(preceding-sibling::gamma or following-sibling::gamma)][not(child::node())][following-sibling::sigma[contains(concat(@and,"$"),"e$")][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::alpha[@xml:lang="no"][@xml:id="id4"][following-sibling::kappa[starts-with(concat(@false,"-"),"false-")][@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 3]]//rho[@xml:id="id6"][not(preceding-sibling::*)]/omicron[contains(@attribute,"nt")][@xml:lang="en"][@xml:id="id7"][not(following-sibling::*)]//lambda[@false][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[@xml:id="id8"][following-sibling::*[position()=2]][following-sibling::tau[@xml:lang="en-US"][not(child::node())][following-sibling::tau[@token]/iota[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]]]]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -25991,6 +30451,11 @@ //pi[starts-with(concat(@delete,"-"),"this.nodeValue-")][@xml:lang="no-nb"]/tau[starts-with(concat(@content,"-"),"true-")][not(following-sibling::*)]//omega[starts-with(@data,"attribu")][@xml:lang="no-nb"][not(following-sibling::*)]//gamma[@xml:id="id1"][not(following-sibling::*)]/eta[@xml:lang="no-nb"][not(preceding-sibling::*)]/zeta[@false="true"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[not(following-sibling::*)]//omega[@xml:lang="en-GB"][following-sibling::*[position()=6]][following-sibling::iota[@xml:lang="en"][following-sibling::*[position()=5]][following-sibling::tau[@content="100%"][@xml:lang="nb"][following-sibling::sigma[starts-with(concat(@insert,"-"),"100%-")][@xml:lang="nb"][@xml:id="id2"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=3]][not(child::node())][following-sibling::gamma[@false="this-is-att-value"][@xml:id="id3"][not(child::node())][following-sibling::upsilon[following-sibling::chi[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]//theta[@insert][@xml:lang="en"][@xml:id="id5"][not(child::node())][following-sibling::iota[contains(concat(@delete,"$"),"ue$")][@xml:lang="en-GB"][@xml:id="id6"][not(following-sibling::*)]//mu[@xml:lang="en"][not(preceding-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + zeta + 0 + @@ -26023,6 +30488,11 @@ //tau[@xml:lang="nb"]/alpha[contains(@string,"8")][@xml:lang="nb"][@xml:id="id1"][not(following-sibling::*)]/rho[contains(@data,"6789")][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[contains(concat(@and,"$"),"6789$")][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[starts-with(concat(@src,"-"),"this-")][@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::iota[@string][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::kappa[@xml:lang="en-US"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@true="attribute"][@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 4]]//kappa[following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]]//kappa[@xml:lang="no-nb"][@xml:id="id6"][following-sibling::beta[starts-with(@string,"100")][@xml:lang="no"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -26047,6 +30517,11 @@ //gamma[contains(@insert,"bla")][@xml:lang="en-GB"][@xml:id="id1"]//omega[@xml:lang="en-US"][@xml:id="id2"][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::upsilon[@xml:id="id4"][preceding-sibling::*[position() = 2]]/beta[@delete][not(preceding-sibling::*)][not(following-sibling::*)]/kappa[@xml:lang="no-nb"][@xml:id="id5"][position() = 1]]] + + + omega + 0 + @@ -26063,6 +30538,11 @@ //zeta[contains(@delete,"%")][@xml:id="id1"]/mu[@xml:lang="en"][following-sibling::*[position()=1]][following-sibling::gamma[@xml:lang="no-nb"]/phi[@xml:lang="en-US"][@xml:id="id2"][following-sibling::upsilon[@and][@xml:lang="no"][@xml:id="id3"][not(preceding-sibling::upsilon)][following-sibling::pi[preceding-sibling::*[position() = 2]]/omega[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]/phi[@xml:id="id5"][following-sibling::pi[@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::pi)]/theta[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::phi[starts-with(concat(@attribute,"-"),"this.nodeValue-")][@xml:lang="en"][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[starts-with(concat(@or,"-"),"attribute value-")][@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::psi[contains(concat(@att,"$"),"123456789$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 4]]/delta[not(preceding-sibling::*)][not(following-sibling::*)]/iota[@name="false"]//alpha[@xml:lang="en-GB"][@xml:id="id10"][not(preceding-sibling::*)]/nu[@xml:id="id11"][not(preceding-sibling::*)]//theta[@xml:lang="no-nb"][not(preceding-sibling::*)]/*/iota[contains(concat(@object,"$"),"true$")][@xml:id="id12"][not(child::node())][following-sibling::kappa[contains(@token,"k")][@xml:lang="nb"][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]]] + + + mu + 0 + @@ -26104,6 +30584,11 @@ //beta[@data][@xml:lang="en-US"]//iota[@attr="100%"][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::delta[contains(concat(@true,"$"),"ibute value$")][@xml:lang="en-US"]//rho[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)]//iota[not(preceding-sibling::*)][not(following-sibling::*)]//nu[contains(@name,"ute")][@xml:lang="no"][not(following-sibling::*)]/omega[@title][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]/theta[@delete][@xml:lang="no"][not(following-sibling::*)]/psi[not(child::node())][following-sibling::delta[@xml:id="id3"]/xi[contains(concat(@desciption,"$"),"te$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[preceding-sibling::*[position() = 1]]/upsilon[not(preceding-sibling::*)][not(following-sibling::*)]//iota/chi[contains(concat(@object,"$"),"e$")][@xml:id="id4"][following-sibling::omega[@class="attribute"][@xml:lang="no"][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -26138,6 +30623,11 @@ //chi[@att="this.nodeValue"][@xml:lang="en-GB"]/epsilon[@xml:lang="en-GB"][@xml:id="id1"][following-sibling::sigma[contains(concat(@data,"$"),"een$")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//gamma[@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[starts-with(@false,"c")][@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/alpha[contains(@number,"no")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]//mu[contains(concat(@and,"$"),"Value$")][following-sibling::rho[starts-with(concat(@data,"-"),"attribute-")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[contains(@title,"Value")][@xml:id="id6"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[@xml:lang="en-US"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]] + + + epsilon + 0 + @@ -26160,6 +30650,11 @@ //xi[contains(@att,"ri")][@xml:id="id1"]//chi[@string="content"][@xml:id="id2"][not(preceding-sibling::*)]/pi[@abort][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id5"][not(following-sibling::*)]/chi[not(preceding-sibling::*)][following-sibling::iota[@name][@xml:lang="en-US"][following-sibling::rho[contains(concat(@att,"$"),"bute value$")][not(following-sibling::*)]/delta[@att][@xml:id="id6"][following-sibling::tau[contains(@attr,"t")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@xml:id="id8"][preceding-sibling::*[position() = 2]][not(preceding-sibling::kappa or following-sibling::kappa)]//psi[@xml:lang="en-GB"][@xml:id="id9"]/delta[@string][not(preceding-sibling::*)]//omicron/eta[starts-with(concat(@class,"-"),"content-")][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[starts-with(concat(@class,"-"),"123456789-")][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]]][position() = 1]] + + + pi + 0 + @@ -26194,6 +30689,11 @@ //beta[@name]//rho[@desciption][@xml:id="id1"]/mu[@xml:lang="en"][not(child::node())][following-sibling::chi[@object][@xml:id="id2"][not(following-sibling::*)]/kappa[contains(concat(@or,"$"),"0%$")][@xml:id="id3"][following-sibling::omicron[starts-with(concat(@number,"-"),"another attribute value-")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=9]][not(preceding-sibling::omicron)][following-sibling::eta[@or="false"][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::sigma[@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=7]][following-sibling::epsilon[contains(concat(@delete,"$"),"rue$")][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::eta[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 5]][following-sibling::*[position()=5]][following-sibling::beta[@xml:id="id7"][preceding-sibling::*[position() = 6]][not(child::node())][following-sibling::gamma[@xml:lang="en-GB"][preceding-sibling::*[position() = 7]][following-sibling::*[position()=3]][not(child::node())][following-sibling::pi[starts-with(@title,"ano")][@xml:lang="nb"][not(child::node())][following-sibling::eta[@content][@xml:lang="en-US"][@xml:id="id8"][following-sibling::*[starts-with(@and,"_blank")][@xml:lang="en-GB"][@xml:id="id9"][not(following-sibling::*)]/omicron[@abort="false"][@xml:lang="no-nb"][@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@xml:lang="en-US"][@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[starts-with(concat(@or,"-"),"false-")][@xml:lang="no"][@xml:id="id12"][preceding-sibling::*[position() = 1]]//rho[@xml:lang="no-nb"][@xml:id="id13"][following-sibling::zeta[starts-with(@name,"another attrib")][@xml:lang="no-nb"][not(child::node())][following-sibling::upsilon[@xml:lang="en-GB"][@xml:id="id14"][not(following-sibling::*)]]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]]] + + + mu + 0 + @@ -26228,6 +30728,11 @@ //sigma[@xml:lang="en"][@xml:id="id1"]/kappa[@src][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[contains(@attr,"another ")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::delta[not(preceding-sibling::delta or following-sibling::delta)]/*[@xml:lang="nb"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[starts-with(@and,"12345678")][@xml:lang="en-GB"][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::omega[@delete="attribute-value"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//xi[@xml:lang="en"][following-sibling::iota[@xml:lang="en"][following-sibling::*[position()=1]][not(following-sibling::iota)][following-sibling::gamma[@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//eta[@xml:id="id7"]/zeta[@true][@xml:id="id8"]/xi[contains(@token,"fa")][not(following-sibling::*)]//omicron[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//delta[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[starts-with(@att,"attr")][not(following-sibling::*)]//zeta[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[starts-with(concat(@true,"-"),"_blank-")][@xml:lang="en-GB"][@xml:id="id10"][not(preceding-sibling::*)]/theta[@object][@xml:lang="en-US"][@xml:id="id11"][not(preceding-sibling::*)][not(child::node())][following-sibling::theta[contains(@token,"blank")]/omega[not(preceding-sibling::*)][not(following-sibling::*)][not(parent::*/*[position()=2])]/iota[starts-with(@or,"_")][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[contains(concat(@insert,"$"),"ttribute$")][not(following-sibling::*)]//alpha[@xml:lang="no-nb"][not(preceding-sibling::*)]]][position() = 1]]][position() = 1]]]][position() = 1]] + + + kappa + 0 + @@ -26274,6 +30779,11 @@ //eta[@true]/beta[starts-with(@attrib,"a")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="en-GB"][not(following-sibling::*)]/kappa[@title][@xml:lang="no"][following-sibling::omega[@xml:id="id1"][not(following-sibling::*)]/delta[@xml:lang="en-GB"][not(preceding-sibling::*)]//beta[@xml:lang="en-GB"]//eta[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@abort][following-sibling::*[position()=1]][following-sibling::rho[@xml:id="id3"]/gamma[@xml:id="id4"][not(following-sibling::*)]/gamma[@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]]/epsilon[@false][@xml:lang="nb"][not(preceding-sibling::*)]/nu[not(parent::*/*[position()=2])]/zeta[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]//delta[@name="this-is-att-value"][not(child::node())][following-sibling::pi[@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]]] + + + beta + 0 + @@ -26310,6 +30820,11 @@ //omega[starts-with(concat(@true,"-"),"123456789-")]//xi[contains(concat(@src,"$"),"true$")][@xml:id="id1"][not(following-sibling::*)]/psi[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::zeta[@xml:id="id3"]/upsilon[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::alpha[contains(concat(@content,"$"),"alse$")][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="en-GB"][@xml:id="id5"][position() = 1]]]] + + + psi + 0 + @@ -26327,6 +30842,11 @@ //lambda[@insert][@xml:lang="en-US"]//delta[@xml:lang="en-GB"][@xml:id="id1"][following-sibling::*[position()=2]][following-sibling::kappa[@attribute][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@data][@xml:id="id3"][not(following-sibling::kappa)]/zeta[contains(@att,"1")][@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]/kappa[@xml:lang="en-US"][not(following-sibling::*)]//*[contains(@src,"u")][@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[contains(concat(@att,"$"),"e$")][@xml:lang="en"][@xml:id="id6"][not(following-sibling::*)]]] + + + delta + 0 + @@ -26347,6 +30867,11 @@ //delta[@xml:lang="en-GB"]//*[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[starts-with(concat(@and,"-"),"another attribute value-")][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//delta[@content="false"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::delta[starts-with(@delete,"12")][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau[@xml:id="id3"][not(following-sibling::*)]/kappa[contains(concat(@attrib,"$")," attribute value$")][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@xml:id="id4"][not(following-sibling::*)]/sigma[not(preceding-sibling::*)][not(following-sibling::*)]//delta[contains(@insert,"ank")][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//phi/delta[starts-with(@src,"attribut")][@xml:id="id6"][not(preceding-sibling::*)]/gamma[@xml:lang="en-GB"][@xml:id="id7"][position() = 1]][position() = 1]]]] + + + any + 0 + @@ -26377,6 +30902,11 @@ //kappa[@xml:lang="no"]//omega[starts-with(@src,"tru")][@xml:lang="en"][not(following-sibling::*)]//omega[starts-with(@false,"another attribu")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:id="id1"][not(following-sibling::*)]/pi[@and][@xml:lang="en"][not(following-sibling::*)]/omicron[@xml:id="id2"][following-sibling::zeta[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::omega[contains(concat(@name,"$"),"lse$")][@xml:lang="en"][not(following-sibling::*)]//theta[@att][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::eta[@token][@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/gamma[@xml:id="id4"]//beta[@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 1]]//tau[@attr][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="en"][@xml:id="id6"][not(preceding-sibling::delta)]/tau[starts-with(@attrib,"c")][@xml:lang="no"][not(preceding-sibling::*)]/gamma[contains(@true,"alue")][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]] + + + omega + 1 + @@ -26411,6 +30941,11 @@ //kappa[@delete][@xml:id="id1"]/gamma[starts-with(@name,"false")][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=4]][not(child::node())][following-sibling::mu[following-sibling::kappa[starts-with(concat(@delete,"-"),"attribute-")][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::iota[starts-with(concat(@class,"-"),"this.nodeValue-")][@xml:id="id4"][not(child::node())][following-sibling::*[@xml:id="id5"][preceding-sibling::*[position() = 4]]/delta[contains(@object,"t")][@xml:id="id6"]/iota[@content][@xml:lang="en-GB"][@xml:id="id7"][not(child::node())][following-sibling::pi[@xml:lang="no-nb"][@xml:id="id8"]//phi[@content][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:lang="no-nb"][not(following-sibling::*)]//iota[starts-with(@and,"soli")][not(preceding-sibling::*)][position() = 1]][position() = 1]]]]][position() = 1]] + + + gamma + 0 + @@ -26435,6 +30970,11 @@ //*[contains(@class,"23")][@xml:id="id1"]//omicron[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)]//psi[starts-with(@attribute,"solid 1px gr")][@xml:lang="no-nb"][following-sibling::*[position()=7]][following-sibling::xi[contains(@number,"k")][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=6]][following-sibling::eta[@xml:id="id4"][following-sibling::sigma[@xml:lang="nb"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::pi[@delete="content"][preceding-sibling::*[position() = 4]][following-sibling::*[@xml:lang="no"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::gamma[contains(@class,"his-is-att-value")][@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 6]][following-sibling::lambda[@xml:id="id6"][preceding-sibling::*[position() = 7]]/rho[@xml:lang="nb"][not(preceding-sibling::*)]/eta[@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[starts-with(concat(@attrib,"-"),"this-")][@xml:lang="nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::theta[@and][@xml:id="id8"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/*[@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/*[@insert][not(preceding-sibling::*)]//gamma[@true][@xml:lang="no"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@abort="another attribute value"][@xml:lang="en-GB"]]][position() = 1]]]][position() = 1]]]][position() = 1]] + + + psi + 0 + @@ -26468,6 +31008,11 @@ //rho[@token][@xml:lang="nb"]//omicron[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::epsilon[@xml:id="id2"][preceding-sibling::*[position() = 2]]//epsilon[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::omicron[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(concat(@abort,"$"),"0%$")][not(preceding-sibling::delta)][following-sibling::phi[@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]] + + + omicron + 0 + @@ -26485,6 +31030,11 @@ //eta[contains(concat(@false,"$"),"true$")][@xml:lang="no-nb"]/iota[starts-with(@insert,"c")][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::omega[@xml:lang="nb"][not(following-sibling::*)]/nu[starts-with(@string,"f")][@xml:lang="en-GB"][@xml:id="id2"]/eta[@xml:lang="en"][not(following-sibling::*)]/xi[starts-with(concat(@token,"-"),"123456789-")][@xml:id="id3"][not(child::node())][following-sibling::pi[starts-with(@content,"100%")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[starts-with(@false,"12")][@xml:lang="no-nb"][following-sibling::*[position()=1]][following-sibling::*[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/zeta[contains(@string,"nk")][@xml:id="id7"][following-sibling::gamma[@number][@xml:lang="no"][@xml:id="id8"][following-sibling::phi[contains(concat(@title,"$"),"0%$")]//omega[@xml:lang="no-nb"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::zeta[contains(concat(@and,"$"),"tribute value$")][@xml:id="id10"][preceding-sibling::*[position() = 1]]//tau[@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::zeta[@xml:id="id12"][preceding-sibling::*[position() = 1]]/sigma[contains(@token,"456789")][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -26520,6 +31070,11 @@ //kappa[contains(concat(@insert,"$"),"00%$")][@xml:lang="en-GB"][@xml:id="id1"]//pi[@xml:lang="no"][@xml:id="id2"][not(following-sibling::*)]/zeta[@xml:lang="en-US"][not(preceding-sibling::*)]/tau[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::delta[@token="this.nodeValue"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[not(preceding-sibling::*)][not(child::node())][following-sibling::alpha/pi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::eta[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(preceding-sibling::eta)][following-sibling::tau[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//mu[starts-with(concat(@desciption,"-"),"100%-")][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@string="attribute-value"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]] + + + tau + 0 + @@ -26547,6 +31102,11 @@ //upsilon[starts-with(concat(@att,"-"),"_blank-")][@xml:lang="no-nb"]/chi[@object][@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)]/alpha[@xml:lang="no-nb"][@xml:id="id3"]//iota[starts-with(@object,"1")][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::omega[starts-with(@delete,"123456")][@xml:lang="nb"][preceding-sibling::*[position() = 1]]/xi[starts-with(@content,"attribute-v")][@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::phi[not(following-sibling::*)]//lambda[contains(@token,"als")][@xml:lang="no"][@xml:id="id6"][following-sibling::lambda[starts-with(concat(@data,"-"),"false-")][@xml:id="id7"][not(following-sibling::*)]/iota[contains(@desciption,"k")][@xml:lang="en"][@xml:id="id8"]//theta[@insert][@xml:id="id9"][not(preceding-sibling::*)]//alpha[@xml:id="id10"][following-sibling::*[position()=2]][following-sibling::mu[@xml:lang="nb"][@xml:id="id11"][following-sibling::pi[contains(@attr,"ttribute")][@xml:lang="en-US"][@xml:id="id12"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/alpha[starts-with(concat(@or,"-"),"_blank-")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[starts-with(concat(@name,"-"),"attribute-")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::alpha[@xml:lang="nb"][following-sibling::*[position()=1]][not(preceding-sibling::alpha)][not(child::node())][following-sibling::upsilon[@xml:lang="nb"]/kappa[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::sigma[@xml:id="id13"][not(following-sibling::*)]//gamma[@xml:lang="nb"][@xml:id="id14"][not(following-sibling::*)]/omicron[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + iota + 0 + @@ -26591,6 +31151,11 @@ //eta[starts-with(concat(@object,"-"),"content-")]/nu[@and="solid 1px green"][@xml:lang="en-US"][@xml:id="id1"][not(child::node())][following-sibling::tau[contains(concat(@attribute,"$"),"lank$")]//tau[@xml:id="id2"][not(child::node())][following-sibling::mu[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[contains(concat(@number,"$"),"ontent$")][@xml:id="id3"][not(following-sibling::*)]/iota[contains(concat(@class,"$"),"odeValue$")][@xml:id="id4"][not(following-sibling::*)]//lambda[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@string][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::omega[@xml:id="id5"][preceding-sibling::*[position() = 2]]/phi[@xml:lang="no"]/*[starts-with(concat(@attrib,"-"),"this.nodeValue-")][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@xml:lang="nb"]/beta[starts-with(concat(@token,"-"),"false-")][@xml:lang="nb"][following-sibling::mu[starts-with(concat(@content,"-"),"another attribute value-")][@xml:lang="no"][@xml:id="id8"][following-sibling::delta[preceding-sibling::*[position() = 2]][following-sibling::omega[contains(@desciption,"tr")]/phi[not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::sigma[@xml:lang="en-US"]/eta[@xml:lang="no-nb"][@xml:id="id9"][not(following-sibling::*)]/sigma[@xml:lang="nb"][@xml:id="id10"][not(following-sibling::*)]/lambda[not(following-sibling::*)]/upsilon[starts-with(concat(@content,"-"),"content-")][@xml:lang="en-US"][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + nu + 0 + @@ -26637,6 +31202,11 @@ //psi[contains(@name,"e")][@xml:lang="no"][@xml:id="id1"]//chi[@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:id="id3"][not(following-sibling::*)]/alpha[not(preceding-sibling::*)]//nu[@xml:id="id4"]//kappa[contains(concat(@false,"$"),"nother attribute value$")][following-sibling::sigma[@xml:lang="en-US"][not(following-sibling::*)]/mu[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[starts-with(@delete,"solid 1p")]/psi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[not(following-sibling::*)]/chi[contains(@name,"%")][@xml:lang="no-nb"][@xml:id="id6"][following-sibling::phi[preceding-sibling::*[position() = 1]]//iota[@xml:lang="no-nb"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@xml:lang="en"][@xml:id="id8"][not(preceding-sibling::*)]/chi[starts-with(concat(@delete,"-"),"true-")][@xml:lang="en-US"][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -26672,6 +31242,11 @@ //zeta[@xml:lang="en-US"]/theta[@title][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::nu[@number="123456789"][@xml:lang="no"]/sigma[starts-with(@attribute,"attribu")][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en"][following-sibling::*[position()=2]][not(child::node())][following-sibling::sigma[@and][@xml:id="id1"][preceding-sibling::sigma[2]][not(child::node())][following-sibling::omega[@xml:id="id2"]/nu[@insert="123456789"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[contains(concat(@abort,"$"),"eValue$")][@xml:id="id4"][not(child::node())][following-sibling::kappa[preceding-sibling::*[position() = 1]]]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -26693,6 +31268,11 @@ //beta[@xml:lang="no-nb"]/omega[@xml:lang="en-GB"][@xml:id="id1"][not(following-sibling::*)]//alpha[@xml:lang="no"][@xml:id="id2"]//tau[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[following-sibling::eta[@number][@xml:lang="no"][@xml:id="id3"]//epsilon[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]/sigma[@xml:id="id5"][not(child::node())][following-sibling::theta[starts-with(concat(@name,"-"),"true-")][@xml:lang="en-US"][not(child::node())][following-sibling::rho//xi[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="en"][@xml:id="id6"]//sigma[@title][@xml:lang="en"][position() = 1]][position() = 1]]][position() = 1]] + + + tau + 0 + @@ -26719,6 +31299,11 @@ //zeta[@content]/chi[not(child::node())][following-sibling::*[starts-with(@abort,"att")][@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 1]]//mu[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[contains(@false,"ribute")][@xml:lang="en-GB"]/alpha[@number][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@src][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::omicron[@abort="_blank"][@xml:id="id4"][not(child::node())][following-sibling::iota[@xml:lang="nb"][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::omega[@xml:lang="no-nb"][@xml:id="id5"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//xi[following-sibling::*[position()=2]][not(child::node())][following-sibling::mu[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::tau[@data][@xml:id="id6"][not(following-sibling::*)]//iota[@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en"][preceding-sibling::*[position() = 1]]//sigma[@true][@xml:lang="en"][@xml:id="id8"][following-sibling::beta[preceding-sibling::*[position() = 1]][following-sibling::omicron[@xml:lang="no-nb"][not(following-sibling::*)][position() = 1]]]]][position() = 1]]]]][position() = 1]][position() = 1]] + + + chi + 0 + @@ -26753,6 +31338,11 @@ //gamma[@xml:id="id1"]/*[following-sibling::*[position()=3]][not(child::node())][following-sibling::eta[preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="en-GB"][following-sibling::lambda[@xml:lang="no-nb"][@xml:id="id2"][preceding-sibling::*[position() = 3]]/omega[not(preceding-sibling::*)][not(following-sibling::*)]//omega//delta[starts-with(@attrib,"10")][following-sibling::*[position()=3]][not(child::node())][following-sibling::gamma[@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::chi[starts-with(@content,"100%")][@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[starts-with(@string,"att")][@xml:id="id4"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/sigma[@xml:lang="nb"][@xml:id="id5"][not(child::node())][following-sibling::nu[starts-with(concat(@att,"-"),"_blank-")][preceding-sibling::*[position() = 1]]/rho[@xml:lang="nb"][@xml:id="id6"]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + any + 0 + @@ -26780,6 +31370,11 @@ //phi[@xml:lang="en-GB"]//chi[@xml:id="id1"][not(child::node())][following-sibling::delta[@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/lambda[starts-with(@number,"123456")][@xml:lang="en"][not(following-sibling::*)]//zeta[@xml:id="id2"][not(preceding-sibling::*)]//beta[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@xml:lang="no"][@xml:id="id4"][not(child::node())][following-sibling::alpha[contains(@false,"0%")][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[following-sibling::tau[@xml:id="id6"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//psi[starts-with(@string,"12345")][@xml:lang="nb"][@xml:id="id7"][not(preceding-sibling::*)]//delta[@delete][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//mu[@delete][not(preceding-sibling::*)]//xi[starts-with(concat(@abort,"-"),"123456789-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(preceding-sibling::xi)]][position() = 1]]]]] + + + chi + 0 + @@ -26811,6 +31406,11 @@ //iota[@xml:lang="no"]//omega[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::rho[@xml:lang="en"][@xml:id="id1"][following-sibling::*[position()=2]][not(child::node())][following-sibling::nu[starts-with(concat(@string,"-"),"attribute-")][@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::chi[starts-with(concat(@object,"-"),"123456789-")][@xml:id="id3"][not(following-sibling::*)]//psi[@true][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="no-nb"][@xml:id="id4"][not(following-sibling::*)]//rho[contains(@true,"%")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@xml:id="id6"][not(following-sibling::*)]//lambda[@title][@xml:lang="en"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@att][@xml:id="id8"][preceding-sibling::*[position() = 1]]/*[@desciption][@xml:id="id9"][not(preceding-sibling::any)][not(child::node())][following-sibling::zeta[@att][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::phi[@attribute="this.nodeValue"][@xml:lang="no"][preceding-sibling::*[position() = 2]]//beta[contains(@title,"ue")][@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@xml:id="id11"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[contains(@insert,"lan")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::epsilon[@name][@xml:id="id12"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]]]] + + + omega + 0 + @@ -26843,6 +31443,11 @@ //iota[@xml:lang="nb"][@xml:id="id1"]//xi[not(following-sibling::*)]//sigma/chi[starts-with(concat(@delete,"-"),"false-")][not(preceding-sibling::*)][not(following-sibling::*)]//phi[not(child::node())][following-sibling::iota[@attr][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[@attribute="solid 1px green"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@xml:lang="en"]] + + + phi + 0 + @@ -26864,6 +31469,11 @@ //xi[contains(@object,"al")][@xml:lang="nb"][@xml:id="id1"]/omega[starts-with(@data,"12345678")][@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@token][@xml:lang="en-US"][following-sibling::lambda[@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]/omega[starts-with(concat(@data,"-"),"true-")][@xml:id="id5"][not(following-sibling::*)]]]] + + + omega + 0 + @@ -26879,6 +31489,11 @@ //lambda[@string="another attribute value"][@xml:id="id1"]/delta[@xml:lang="en-US"][not(following-sibling::*)]/kappa[@attrib="solid 1px green"][@xml:id="id2"][not(preceding-sibling::*)]//iota[@xml:id="id3"][not(preceding-sibling::*)]//chi[following-sibling::*[position()=4]][not(child::node())][following-sibling::rho[@xml:id="id4"][following-sibling::tau[@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 3]][following-sibling::zeta[@xml:id="id6"]//lambda[@xml:lang="no-nb"][following-sibling::theta[starts-with(concat(@data,"-"),"another attribute value-")][not(following-sibling::*)]/delta[starts-with(concat(@token,"-"),"false-")][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[@xml:id="id7"][preceding-sibling::*[position() = 1]]//iota[starts-with(concat(@attribute,"-"),"true-")][@xml:id="id8"][not(following-sibling::*)]/lambda[@xml:lang="en"][@xml:id="id9"][not(following-sibling::*)]//omicron[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[@token][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[@xml:lang="no"][@xml:id="id11"][not(preceding-sibling::*)]/psi[starts-with(@att,"this-is")][@xml:lang="en"][not(preceding-sibling::*)][following-sibling::*[@attrib][@xml:lang="en-US"][@xml:id="id12"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//iota[@or="solid 1px green"][@xml:id="id13"][not(preceding-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]]]] + + + chi + 0 + @@ -26922,6 +31537,11 @@ //xi/nu[starts-with(@name,"_bla")][@xml:id="id1"]//upsilon[@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 1]]/chi[@string][@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[contains(@attrib,"tt-value")][not(following-sibling::*)]//chi[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[starts-with(@class,"c")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi//alpha[not(following-sibling::*)]]]][position() = 1]] + + + upsilon + 0 + @@ -26944,6 +31564,11 @@ //alpha[starts-with(concat(@attribute,"-"),"_blank-")][@xml:lang="en-US"]/omicron[@and="attribute-value"][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::zeta[@attribute][@xml:id="id1"][not(following-sibling::*)]/delta[@content][not(following-sibling::*)]//delta[@xml:lang="no-nb"]//lambda[@xml:lang="no-nb"][not(preceding-sibling::*)]] + + + omicron + 0 + @@ -26961,6 +31586,11 @@ //alpha[contains(concat(@string,"$"),"e value$")][@xml:id="id1"]//delta[contains(concat(@attrib,"$"),"tribute$")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//gamma[contains(@desciption,"u")][not(preceding-sibling::*)]/mu[@xml:lang="no-nb"][not(following-sibling::*)]//chi[@xml:lang="no"][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota[@xml:lang="en"][not(following-sibling::*)]/psi[starts-with(@name,"con")][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[contains(@src,"value")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//nu[@xml:id="id3"]//zeta[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]/iota[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]] + + + chi + 0 + @@ -26987,6 +31617,11 @@ //beta[@attrib]//sigma[@xml:lang="en-US"][@xml:id="id1"][following-sibling::*[position()=5]][not(child::node())][following-sibling::lambda[@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][not(child::node())][following-sibling::theta[@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::rho[starts-with(concat(@and,"-"),"123456789-")][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::*[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::pi[@name][not(following-sibling::*)]/kappa[starts-with(@or,"a")][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::theta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::phi[@xml:id="id6"][not(following-sibling::*)]/gamma[@att][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -27008,6 +31643,11 @@ //omega[@delete][@xml:lang="no"][@xml:id="id1"]//psi[@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::delta[@object][@xml:lang="no"]/phi[@xml:id="id3"]//nu[@xml:id="id4"][not(child::node())][following-sibling::theta[@desciption][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/epsilon[@xml:lang="no-nb"][not(child::node())][following-sibling::psi[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/zeta/phi[contains(@or,"te")][@xml:lang="no-nb"][not(following-sibling::*)]//alpha[@src][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@xml:lang="no"][not(child::node())][following-sibling::sigma[following-sibling::*[position()=1]][not(child::node())][following-sibling::alpha[starts-with(@or,"attribute ")][@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)]/alpha[contains(concat(@attr,"$"),"%$")][@xml:lang="en"][@xml:id="id7"][not(child::node())][following-sibling::epsilon[starts-with(concat(@content,"-"),"another attribute value-")][not(following-sibling::epsilon)]//gamma[@number="solid 1px green"][@xml:id="id8"][not(following-sibling::*)]//eta[contains(@object,"tru")][@xml:lang="en-GB"][@xml:id="id9"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[contains(concat(@attr,"$"),"-is-att-value$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id10"][preceding-sibling::*[position() = 2]][following-sibling::theta[preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]]]]][position() = 1]]]]][position() = 1]] + + + psi + 0 + @@ -27046,6 +31686,11 @@ //xi[@xml:lang="no-nb"]/alpha[@insert][@xml:lang="no-nb"][@xml:id="id1"][not(preceding-sibling::*)]//psi[@attrib][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::lambda[starts-with(@att,"another attribute")][@xml:lang="no"][@xml:id="id3"][not(child::node())][following-sibling::omega[contains(@src,"se")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//psi[not(following-sibling::*)][not(preceding-sibling::psi)]//epsilon[@xml:id="id4"][not(preceding-sibling::*)]//kappa[contains(@token,"ttribut")][@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)]//nu[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[@attrib="_blank"][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[not(following-sibling::*)]][position() = 1]]][position() = 1]] + + + psi + 0 + @@ -27070,6 +31715,11 @@ //theta[@xml:id="id1"]//iota[@attrib][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::kappa[contains(@and,"an")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::beta[@src="content"][@xml:lang="no-nb"][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::psi[contains(concat(@attrib,"$"),"6789$")][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 3]]/gamma[not(following-sibling::*)]//gamma[starts-with(@att,"this-is-att-va")][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]] + + + iota + 0 + @@ -27087,6 +31737,11 @@ //alpha[@xml:lang="en-US"][@xml:id="id1"]/rho[@xml:lang="en"][@xml:id="id2"][not(following-sibling::*)]/delta[@xml:id="id3"][following-sibling::*[@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/tau//zeta[@xml:lang="en-US"][not(following-sibling::*)]][position() = 1]] + + + delta + 0 + @@ -27105,6 +31760,11 @@ //iota[@xml:lang="no-nb"][@xml:id="id1"]/omega[@xml:lang="en-US"][not(preceding-sibling::*)]//rho[@xml:lang="en"][not(following-sibling::*)]//theta[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:id="id3"][following-sibling::alpha[@xml:lang="nb"][not(following-sibling::*)]/nu[@false="123456789"][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::epsilon[@xml:lang="en-US"][@xml:id="id4"][following-sibling::omega[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 2]]]]]] + + + theta + 0 + @@ -27125,6 +31785,11 @@ //nu[@xml:id="id1"]/sigma[starts-with(concat(@delete,"-"),"this-")][@xml:lang="no"][@xml:id="id2"][not(child::node())][following-sibling::sigma[@xml:id="id3"][not(following-sibling::*)]/sigma[@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::chi[contains(@object,"i")][@xml:id="id5"][following-sibling::*[position()=3]][not(child::node())][following-sibling::theta[@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::psi[@and][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][following-sibling::theta[starts-with(concat(@insert,"-"),"content-")][@xml:id="id7"]]]]]] + + + sigma + 0 + @@ -27142,6 +31807,11 @@ //eta[@xml:lang="en"][@xml:id="id1"]//psi[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[@xml:lang="no"][@xml:id="id2"][following-sibling::iota[starts-with(@insert,"this.nodeValue")][not(following-sibling::*)]/alpha[following-sibling::sigma[contains(@abort,"s.")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[not(following-sibling::*)]//phi[@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::delta[preceding-sibling::*[position() = 1]]/phi[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[contains(concat(@or,"$"),"value$")][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//zeta//theta[@xml:id="id5"][following-sibling::*[position()=8]][not(child::node())][following-sibling::tau[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[contains(concat(@class,"$"),"ue$")][not(child::node())][following-sibling::beta[starts-with(concat(@string,"-"),"solid 1px green-")][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 3]][following-sibling::lambda[@desciption][@xml:lang="no-nb"][@xml:id="id8"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::chi[@object][@xml:lang="en"][preceding-sibling::*[position() = 5]][not(following-sibling::chi)][following-sibling::delta[@att][@xml:lang="no"][@xml:id="id9"][preceding-sibling::*[position() = 6]][not(child::node())][following-sibling::rho[contains(@insert,"e")][preceding-sibling::*[position() = 7]][following-sibling::*[position()=1]][following-sibling::rho[@xml:lang="nb"][preceding-sibling::*[position() = 8]]//epsilon[contains(@attrib,"other attribute value")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@xml:lang="en-US"][not(following-sibling::*)]/omicron[@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]] + + + tau + 0 + @@ -27184,6 +31854,11 @@ //*[@xml:id="id1"]//psi[@data][@xml:id="id2"]/iota[@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::gamma[starts-with(@delete,"10")][@xml:id="id3"][not(following-sibling::*)]//omega[@xml:lang="no"][not(preceding-sibling::*)]/chi[contains(@insert,"at")]//omega[contains(concat(@attribute,"$"),"true$")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[contains(@object,"conte")][@xml:lang="no"][@xml:id="id4"]] + + + iota + 0 + @@ -27205,6 +31880,11 @@ //nu[@xml:lang="en"][@xml:id="id1"]/nu[not(preceding-sibling::*)]/mu[starts-with(@false,"th")][@xml:id="id2"][not(following-sibling::*)]//omicron[@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]/epsilon[@attribute][@xml:lang="en-US"][following-sibling::kappa[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[@desciption="false"][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)]//omega[contains(concat(@class,"$"),"false$")][following-sibling::*[position()=1]][following-sibling::phi[@data="100%"][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][position() = 1]]] + + + epsilon + 0 + @@ -27227,6 +31907,11 @@ //kappa[starts-with(concat(@object,"-"),"100%-")][@xml:lang="en-US"]//pi[@or][@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]]//alpha[@attr][@xml:lang="en-GB"]//kappa[contains(@or,"ntent")][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)]//omicron[not(preceding-sibling::*)]/omega[not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@insert][not(preceding-sibling::*)][following-sibling::gamma[contains(concat(@false,"$"),"%$")][@xml:id="id4"][not(following-sibling::*)]/theta[@xml:lang="en"]]] + + + pi + 0 + @@ -27253,6 +31938,11 @@ //delta[@xml:id="id1"]/theta[@xml:lang="en-GB"][@xml:id="id2"][not(preceding-sibling::*)]//lambda[starts-with(@att,"another attribute")][@xml:lang="no"][not(preceding-sibling::*)]//pi[contains(@token,"ank")][@xml:lang="en"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id5"][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[starts-with(concat(@abort,"-"),"this.nodeValue-")][@xml:lang="no-nb"][@xml:id="id6"][not(following-sibling::kappa)][following-sibling::psi[contains(concat(@attrib,"$"),"ribute value$")][@xml:id="id7"][preceding-sibling::*[position() = 3]]//psi[@token][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=5]][not(child::node())][following-sibling::mu[preceding-sibling::*[position() = 1]][following-sibling::*[@insert][@xml:id="id9"][following-sibling::lambda[@attr][@xml:lang="no-nb"][@xml:id="id10"][following-sibling::rho[starts-with(concat(@desciption,"-"),"this-")][@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::alpha[@xml:lang="en-GB"][@xml:id="id11"]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + zeta + 0 + @@ -27279,6 +31969,11 @@ //nu[starts-with(concat(@attrib,"-"),"this-")]//gamma/rho[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[@xml:id="id2"][not(child::node())][following-sibling::epsilon/upsilon[contains(concat(@object,"$"),"ntent$")][@xml:lang="nb"][not(following-sibling::*)]/pi[@xml:lang="en-GB"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[preceding-sibling::*[position() = 1]]/*[@delete][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=3]][following-sibling::lambda[@xml:id="id4"][not(child::node())][following-sibling::delta[@xml:lang="en-GB"][following-sibling::psi[not(following-sibling::*)]/zeta[starts-with(@or,"attribute")][not(preceding-sibling::*)]/rho[contains(@string,"bute-value")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"]//upsilon[@abort="attribute-value"][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]/upsilon[@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:id="id6"][not(following-sibling::*)]/beta[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[contains(@content,"t")][@xml:lang="en"][@xml:id="id8"][not(child::node())][following-sibling::*[starts-with(@token,"_bl")][@xml:id="id9"][following-sibling::rho[contains(concat(@content,"$"),"ribute-value$")][@xml:lang="no-nb"][@xml:id="id10"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -27322,6 +32017,11 @@ //tau[@xml:lang="nb"]/delta[not(preceding-sibling::*)]//omicron[contains(concat(@content,"$"),"nodeValue$")][@xml:lang="nb"][not(following-sibling::*)]//tau[@xml:lang="nb"][@xml:id="id1"]/theta[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:lang="en-US"]/delta[@xml:lang="en-US"][not(preceding-sibling::*)]//theta[not(child::node())][following-sibling::kappa[starts-with(concat(@desciption,"-"),"another attribute value-")][@xml:lang="no-nb"][@xml:id="id2"][not(following-sibling::*)]//chi[@string][@xml:id="id3"][following-sibling::sigma[following-sibling::*[position()=1]][following-sibling::gamma[starts-with(concat(@attr,"-"),"_blank-")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]/epsilon[contains(concat(@false,"$"),"e$")][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//theta[@data="solid 1px green"][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[not(preceding-sibling::*)][not(following-sibling::*)]/zeta[not(following-sibling::*)]//lambda[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)]//omicron[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][not(following-sibling::*)]/omicron[@xml:lang="en"][@xml:id="id7"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]] + + + theta + 0 + @@ -27363,6 +32063,11 @@ //lambda[@xml:id="id1"]/kappa[contains(concat(@false,"$"),"k$")][@xml:id="id2"][following-sibling::zeta[not(child::node())][following-sibling::pi[contains(concat(@attrib,"$"),"e$")][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::delta[@xml:lang="en-GB"][not(child::node())][following-sibling::gamma[contains(@title,"ttribu")][@xml:id="id4"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/iota[@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::upsilon)]//sigma[@true][not(preceding-sibling::*)]/eta[@xml:lang="no-nb"]//lambda[@token][@xml:lang="en"][@xml:id="id7"][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -27386,6 +32091,11 @@ //kappa[@string="attribute"][@xml:id="id1"]/iota[contains(@title,"%")][@xml:id="id2"][following-sibling::xi[starts-with(concat(@src,"-"),"this.nodeValue-")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//theta[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]//pi[position() = 1]]] + + + iota + 0 + @@ -27402,6 +32112,11 @@ //mu[starts-with(concat(@data,"-"),"attribute-")]//gamma[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[contains(@name,"-a")][@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[@xml:id="id2"][not(following-sibling::*)]//kappa[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[starts-with(@number,"a")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::delta[contains(@attribute,"r attribute value")][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[starts-with(concat(@src,"-"),"this-")][@xml:lang="en"][@xml:id="id5"][not(following-sibling::*)]/*[@or="_blank"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::lambda[starts-with(concat(@title,"-"),"content-")][@xml:lang="nb"][following-sibling::*[position()=1]][following-sibling::nu[starts-with(@token,"attrib")][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/beta[not(preceding-sibling::*)][not(following-sibling::*)]//zeta[starts-with(@att,"another attribu")][not(child::node())][following-sibling::phi[starts-with(concat(@data,"-"),"100%-")][@xml:lang="en-US"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][not(child::node())][following-sibling::pi[not(child::node())][following-sibling::*//pi[@xml:id="id6"][not(following-sibling::*)]//alpha[starts-with(concat(@abort,"-"),"true-")][@xml:id="id7"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]]]]] + + + pi + 0 + @@ -27438,6 +32153,11 @@ //*[contains(@string,"ent")][@xml:lang="nb"]//*[starts-with(@and,"true")][@xml:lang="en-US"][following-sibling::eta[@content="this.nodeValue"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::delta[@xml:lang="no"][not(child::node())][following-sibling::beta[contains(@src," 1")][@xml:id="id2"][following-sibling::psi[contains(concat(@string,"$"),"00%$")][@xml:id="id3"][following-sibling::iota[@xml:id="id4"][preceding-sibling::*[position() = 5]][not(following-sibling::*)][not(preceding-sibling::iota)]//zeta[contains(@string,"green")][@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]//beta[not(following-sibling::*)]/sigma[starts-with(@attribute,"another attribut")][@xml:lang="no"][not(preceding-sibling::*)]/delta[@string][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@class][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::nu[@xml:lang="en-US"][@xml:id="id7"][not(child::node())][following-sibling::beta[contains(@delete,"0%")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//mu[@xml:lang="no-nb"][not(following-sibling::*)]/eta[@xml:id="id8"][following-sibling::*[position()=5]][not(child::node())][following-sibling::phi[@xml:lang="no"][preceding-sibling::*[position() = 1]][following-sibling::zeta[contains(concat(@content,"$"),"-value$")][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::tau[contains(@or,"10")][@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 3]][following-sibling::psi[@xml:id="id10"][following-sibling::beta[@xml:lang="no-nb"]/mu[@xml:id="id11"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]]]][position() = 1]][position() = 1]]]]][position() = 1]]] + + + any + 1 + @@ -27476,6 +32196,11 @@ //xi//*[starts-with(concat(@abort,"-"),"attribute value-")][@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)]//beta[starts-with(@object,"this.nodeV")][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@and]/omicron[@xml:id="id2"]//lambda[@src="this-is-att-value"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[@token][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)] + + + theta + 1 + @@ -27496,6 +32221,11 @@ //rho/psi[@xml:id="id1"][following-sibling::beta[contains(concat(@class,"$"),"6789$")][@xml:lang="nb"][not(following-sibling::*)]/omicron[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::eta[@and][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[preceding-sibling::*[position() = 2]][following-sibling::theta/omicron[starts-with(concat(@object,"-"),"123456789-")][@xml:id="id2"][not(following-sibling::*)]//pi[@name][not(preceding-sibling::*)]/zeta[@class]//mu[contains(@insert,"u")][@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/gamma[starts-with(concat(@string,"-"),"100%-")][@xml:lang="no-nb"][not(preceding-sibling::*)][following-sibling::nu[@xml:id="id4"][preceding-sibling::*[position() = 1]]/epsilon[starts-with(concat(@attrib,"-"),"solid 1px green-")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:lang="en-GB"][@xml:id="id6"]/lambda[contains(concat(@string,"$"),"e$")][not(preceding-sibling::*)][following-sibling::nu/xi[starts-with(@abort,"attribute")][@xml:lang="nb"][not(preceding-sibling::*)]/*[contains(@number,"ttribute")][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@content][@xml:lang="en-US"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + psi + 0 + @@ -27536,6 +32266,11 @@ //phi[@object]/sigma[contains(@insert,"tr")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[starts-with(@abort,"12345678")][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@or]/beta[not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[@desciption][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//zeta[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)]/omicron[@content][not(preceding-sibling::*)][not(following-sibling::*)]/lambda[contains(concat(@or,"$"),"lank$")][@xml:id="id2"]//sigma[@xml:id="id3"][following-sibling::gamma[@attribute][not(following-sibling::*)]//omicron[@attribute][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(preceding-sibling::omicron)][following-sibling::iota[@src][not(child::node())][following-sibling::rho[@xml:id="id5"][not(child::node())][following-sibling::*[@xml:lang="no"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//gamma[@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@att][@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//zeta[@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:id="id8"][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]] + + + kappa + 0 + @@ -27574,6 +32309,11 @@ //zeta[@token="attribute"][@xml:lang="en-US"]//zeta[@and][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[contains(concat(@title,"$"),"attribute value$")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/omicron[@xml:lang="en"]//nu[contains(@insert," value")][@xml:lang="en-GB"][@xml:id="id1"][following-sibling::tau[@true][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/xi[starts-with(@content,"t")][following-sibling::delta[@xml:lang="no"][@xml:id="id2"]/nu[contains(concat(@attr,"$"),"this-is-att-value$")][@xml:id="id3"][not(preceding-sibling::*)]//omicron[starts-with(concat(@delete,"-"),"false-")][@xml:lang="no"][@xml:id="id4"]//beta[starts-with(concat(@content,"-"),"this.nodeValue-")][@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@abort][@xml:lang="no"][@xml:id="id6"]]][position() = 1]]] + + + zeta + 1 + @@ -27600,6 +32340,11 @@ //eta[@xml:lang="no"][@xml:id="id1"]/*[starts-with(concat(@desciption,"-"),"attribute value-")][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::psi[@xml:id="id2"][preceding-sibling::*[position() = 1]]//chi[@xml:lang="nb"][not(following-sibling::*)]/beta[contains(@src,"bute")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[@delete][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::tau[@xml:id="id4"][not(following-sibling::*)]//chi[@content="this-is-att-value"][@xml:lang="en-GB"][following-sibling::theta[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/kappa[@content][@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::theta[contains(@attrib,"nt")][@xml:lang="en-GB"][following-sibling::gamma[starts-with(concat(@token,"-"),"_blank-")][@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::omicron[starts-with(@name,"_blan")][not(following-sibling::*)]//pi[@xml:lang="en"]/theta[@xml:lang="no"][not(following-sibling::*)]//iota[@xml:lang="no"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[contains(@and,"als")][@xml:id="id10"][not(child::node())][following-sibling::sigma[contains(@data,"bute valu")][not(following-sibling::*)]//gamma[not(preceding-sibling::*)]//mu[@xml:id="id11"]]][position() = 1]]]][position() = 1]]]]] + + + any + 0 + @@ -27639,6 +32384,11 @@ //zeta//delta[following-sibling::*[position()=9]][not(preceding-sibling::delta)][not(child::node())][following-sibling::psi[@xml:lang="nb"][following-sibling::phi[contains(concat(@att,"$"),"%$")][not(child::node())][following-sibling::omega[@xml:lang="en-US"][@xml:id="id1"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::pi[@xml:lang="no"][following-sibling::tau[starts-with(concat(@and,"-"),"this-")][@xml:id="id2"][preceding-sibling::*[position() = 5]][not(child::node())][following-sibling::beta[starts-with(@number,"this.nodeVa")][@xml:id="id3"][preceding-sibling::*[position() = 6]][following-sibling::beta[starts-with(concat(@object,"-"),"123456789-")][@xml:id="id4"][not(child::node())][following-sibling::iota[contains(concat(@or,"$"),"nk$")][@xml:lang="no"][not(child::node())][following-sibling::kappa[not(following-sibling::*)]/tau[not(following-sibling::*)]/*[@xml:lang="nb"][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id5"]/rho[@xml:id="id6"][not(following-sibling::*)]/phi[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[@xml:lang="no"][@xml:id="id7"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//xi[@xml:id="id8"][following-sibling::zeta[@xml:lang="en-GB"][not(following-sibling::*)]//theta[@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]//eta[starts-with(@desciption,"this.n")]/phi[starts-with(@number,"con")][@xml:lang="no"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::psi[@xml:lang="no-nb"][@xml:id="id11"][preceding-sibling::*[position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]]] + + + delta + 0 + @@ -27679,6 +32429,11 @@ //delta[contains(concat(@or,"$"),"e$")]//phi[@xml:lang="en-GB"][not(child::node())][following-sibling::sigma[starts-with(@token,"10")]/*[starts-with(@src,"true")][@xml:lang="en-US"][following-sibling::*[position()=3]][following-sibling::alpha[@xml:lang="en"][@xml:id="id1"][following-sibling::tau[@string][@xml:id="id2"][not(child::node())][following-sibling::lambda[preceding-sibling::*[position() = 3]][not(following-sibling::*)]]]]] + + + phi + 0 + @@ -27695,6 +32450,11 @@ //gamma[starts-with(@false,"_blank")][@xml:lang="en"]//omicron[@xml:lang="no"][@xml:id="id1"][not(following-sibling::*)][not(preceding-sibling::omicron)]/omega[not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::nu[@object]//omicron[@xml:lang="en-US"][not(child::node())][following-sibling::zeta[@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::sigma[@attribute][@xml:lang="en-GB"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::xi[preceding-sibling::*[position() = 4]][not(following-sibling::*)]//theta[starts-with(concat(@object,"-"),"this-")][@xml:id="id5"]/pi[@attrib][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[starts-with(concat(@desciption,"-"),"false-")][@xml:lang="no"][@xml:id="id6"][preceding-sibling::*[position() = 1]]//*[@xml:id="id7"][not(preceding-sibling::*)][not(preceding-sibling::any)][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id8"][not(following-sibling::*)]/chi[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::iota[@xml:lang="en-US"][preceding-sibling::*[position() = 1]]//rho[not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]][position() = 1]]]]][position() = 1]]]] + + + omega + 0 + @@ -27728,6 +32488,11 @@ //tau[@xml:id="id1"]/kappa[@xml:lang="no"]//psi[@xml:lang="no-nb"][@xml:id="id2"][not(child::node())][following-sibling::sigma[@desciption="_blank"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/theta[@xml:id="id3"][not(preceding-sibling::*)]//omicron[@object][not(preceding-sibling::*)]] + + + psi + 0 + @@ -27745,6 +32510,11 @@ //omicron//beta[starts-with(concat(@string,"-"),"123456789-")][@xml:lang="en-GB"][not(preceding-sibling::*)][not(child::node())][following-sibling::epsilon[@or="this.nodeValue"][not(following-sibling::*)]//pi[starts-with(concat(@att,"-"),"_blank-")][@xml:lang="no-nb"]/delta[@delete]/rho[contains(@or,"lue")][@xml:lang="en-GB"]/alpha[not(preceding-sibling::*)]] + + + beta + 0 + @@ -27764,6 +32534,11 @@ //epsilon[contains(concat(@true,"$"),"olid 1px green$")]//upsilon[@attribute][@xml:lang="no"][@xml:id="id1"][following-sibling::*[position()=1]][following-sibling::eta[@xml:id="id2"][preceding-sibling::*[position() = 1]]//omicron[@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//lambda[@att][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::omicron[@and][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[@name][following-sibling::*[@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::pi[@xml:id="id6"][following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[starts-with(concat(@data,"-"),"attribute-")][@xml:lang="no"][preceding-sibling::*[position() = 3]][following-sibling::rho[@number][@xml:lang="nb"][not(child::node())][following-sibling::kappa[contains(concat(@attribute,"$"),"ibute-value$")][@xml:lang="en-GB"]//*[@desciption="attribute-value"][not(child::node())][following-sibling::zeta[@name][@xml:lang="no-nb"][@xml:id="id7"][not(following-sibling::*)]//omega[@xml:id="id8"][not(following-sibling::*)]/phi[not(preceding-sibling::*)]//psi[@xml:id="id9"][not(child::node())][following-sibling::epsilon[contains(concat(@insert,"$"),"nt$")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][position() = 1]][position() = 1]]]]]]]][position() = 1]]] + + + upsilon + 0 + @@ -27798,6 +32573,11 @@ //eta//psi[following-sibling::upsilon[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@false][@xml:lang="no-nb"][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@xml:id="id1"][not(following-sibling::*)]/theta[not(preceding-sibling::*)][not(child::node())][following-sibling::delta[contains(concat(@name,"$"),"ue$")]][position() = 1]]]] + + + psi + 0 + @@ -27814,6 +32594,11 @@ //chi[@object][@xml:lang="no"]//nu[@xml:lang="en-US"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=6]][not(child::node())][following-sibling::iota[starts-with(@data,"sol")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][following-sibling::xi[@attribute][following-sibling::mu[@xml:lang="en"][@xml:id="id2"][following-sibling::upsilon[@xml:lang="nb"][not(child::node())][following-sibling::mu[starts-with(@token,"attribute")][@xml:lang="en-US"][@xml:id="id3"][not(child::node())][following-sibling::epsilon[contains(concat(@number,"$"),"456789$")][@xml:lang="no"][preceding-sibling::*[position() = 6]]//kappa[starts-with(@desciption,"fal")][@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@token="content"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[@xml:lang="nb"][following-sibling::iota[@xml:id="id6"]/pi[starts-with(concat(@att,"-"),"attribute-")][@xml:lang="no"][not(preceding-sibling::*)][not(following-sibling::*)]/chi[not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:id="id7"][preceding-sibling::*[position() = 1]]//mu[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id8"][following-sibling::mu[@class][@xml:lang="nb"][@xml:id="id9"][not(following-sibling::*)]/phi[@attribute][@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:id="id11"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]][position() = 1]]]]]][position() = 1]]]][position() = 1]][position() = 1]]] + + + nu + 0 + @@ -27848,6 +32633,11 @@ //tau[@xml:lang="no"]/omega[@xml:lang="no"][@xml:id="id1"]/gamma[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//iota[@xml:id="id2"]/mu[@xml:lang="en"][@xml:id="id3"]/delta[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(concat(@and,"$"),"ttribute$")][@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[@att][@xml:id="id5"][not(child::node())][following-sibling::gamma//omicron[@xml:id="id6"][not(child::node())][following-sibling::delta[@src="attribute value"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][not(child::node())][following-sibling::*[@xml:lang="nb"][@xml:id="id7"][following-sibling::*[position()=2]][following-sibling::iota[@xml:id="id8"][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 4]]//chi[@xml:lang="no-nb"][@xml:id="id9"]/gamma[contains(concat(@name,"$"),"true$")][@xml:lang="en-GB"][@xml:id="id10"][not(preceding-sibling::*)][not(preceding-sibling::gamma)]/phi[@number="123456789"][@xml:lang="nb"][@xml:id="id11"][not(preceding-sibling::*)][following-sibling::*[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[not(preceding-sibling::*)]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + delta + 0 + @@ -27885,6 +32675,11 @@ //pi[contains(@desciption,"%")][@xml:lang="nb"]/lambda[@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[@insert][@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]/beta[contains(concat(@attribute,"$"),"tribute$")][@xml:lang="en-GB"]/mu[@desciption][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::zeta[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::tau[@number][@xml:id="id4"]/kappa[not(preceding-sibling::*)][following-sibling::nu[contains(@data,"is.nodeValue")][@xml:lang="en"][@xml:id="id5"]/mu[not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@attr="content"][@xml:id="id6"][not(following-sibling::*)]//delta[not(following-sibling::*)]][position() = 1]]]] + + + mu + 0 + @@ -27911,6 +32706,11 @@ //pi//lambda[@xml:id="id1"]//epsilon[@xml:id="id2"][following-sibling::alpha[contains(concat(@name,"$"),"rue$")][@xml:lang="en"][@xml:id="id3"][not(following-sibling::*)]/phi[contains(concat(@insert,"$"),"e$")][@xml:id="id4"][not(preceding-sibling::*)]/chi[@xml:lang="no-nb"][not(preceding-sibling::*)][position() = 1]] + + + epsilon + 0 + @@ -27928,6 +32728,11 @@ //sigma[@xml:lang="en-GB"][@xml:id="id1"]//eta[contains(@object,"id 1px")][@xml:lang="en-US"][@xml:id="id2"][not(following-sibling::*)]//omega[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::kappa[@false="this.nodeValue"][@xml:lang="en-US"][following-sibling::mu[@attribute][preceding-sibling::*[position() = 2]]/gamma[@class][@xml:lang="en-GB"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::sigma[contains(@class,"-is-att-v")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//pi[contains(concat(@data,"$"),"ank$")][not(preceding-sibling::*)]//omega[starts-with(concat(@false,"-"),"this-")][@xml:id="id5"]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -27949,6 +32754,11 @@ //pi[@xml:id="id1"]/tau[@xml:lang="nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::psi[preceding-sibling::*[position() = 2]]/pi[@xml:lang="no"][not(child::node())][following-sibling::omega[contains(concat(@string,"$"),"ttribute$")][@xml:lang="en-GB"][following-sibling::mu[@xml:lang="en"][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::tau[contains(@insert,"lank")][@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]/xi[@number="123456789"][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/epsilon[@xml:lang="no"][not(child::node())][following-sibling::beta[starts-with(concat(@number,"-"),"_blank-")][@xml:id="id6"][preceding-sibling::*[position() = 1]][following-sibling::beta[starts-with(@src,"1234")][@xml:lang="en-US"][@xml:id="id7"][preceding-sibling::*[position() = 2]]/xi[@xml:lang="no-nb"][not(following-sibling::*)]/epsilon[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:id="id9"][following-sibling::lambda[contains(@attribute,"alue")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]]] + + + tau + 0 + @@ -27979,6 +32789,11 @@ //epsilon[@xml:lang="en-US"]/nu[contains(@number,"se")][@xml:lang="en-US"][not(child::node())][following-sibling::chi[@false][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//omega[contains(concat(@and,"$"),"123456789$")][@xml:lang="en-GB"]/theta[not(preceding-sibling::*)][not(following-sibling::*)]/*[@content][@xml:id="id2"][not(following-sibling::*)]//phi[contains(concat(@false,"$"),"ttribute-value$")][@xml:lang="en-US"][not(child::node())][following-sibling::omega[starts-with(concat(@attribute,"-"),"solid 1px green-")][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::theta[@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/beta[@content][@xml:lang="no"]/beta[following-sibling::theta[@object="content"][@xml:lang="en-GB"][@xml:id="id4"]/rho[starts-with(@title,"100")][@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)][position() = 1]]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -28007,6 +32822,11 @@ //*//tau[@content][@xml:lang="en"][following-sibling::nu[@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::eta[@xml:id="id2"][following-sibling::psi[@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::phi[@xml:lang="nb"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//mu[@xml:id="id3"][not(following-sibling::*)]//delta[not(preceding-sibling::*)][following-sibling::kappa[starts-with(concat(@number,"-"),"100%-")][@xml:lang="en-US"][following-sibling::delta[starts-with(@abort,"this-")][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[@xml:lang="en-US"][@xml:id="id5"][not(preceding-sibling::*)]//nu[starts-with(@src,"at")][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + tau + 0 + @@ -28031,6 +32851,11 @@ //delta[@title]/tau[@xml:lang="nb"][@xml:id="id1"][not(child::node())][following-sibling::omicron[@xml:lang="en-US"][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/lambda[@object="attribute-value"][not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:lang="en-US"][@xml:id="id3"][following-sibling::xi[contains(@false,"a")][@xml:lang="en-US"][preceding-sibling::*[position() = 2]][following-sibling::epsilon[@number][@xml:lang="en-US"][@xml:id="id4"][not(child::node())][following-sibling::nu[@src="attribute value"][@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)]//xi[@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::upsilon[starts-with(@src,"this.no")][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)]]]]]][position() = 1]][position() = 1]] + + + tau + 0 + @@ -28054,6 +32879,11 @@ //xi[@false]//rho[@xml:id="id1"][not(preceding-sibling::*)]//delta[@xml:id="id2"]/psi[@xml:lang="no-nb"][not(following-sibling::*)]/theta[@xml:id="id3"][not(preceding-sibling::*)]/sigma[@xml:lang="en-US"]/phi[@content="another attribute value"][@xml:lang="en-GB"][not(child::node())][following-sibling::chi[@desciption][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/iota[contains(concat(@attrib,"$"),"ute$")][@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)]/sigma[@xml:id="id6"]] + + + phi + 0 + @@ -28079,6 +32909,11 @@ //sigma/epsilon[@attr][@xml:id="id1"]/xi[@xml:id="id2"][not(preceding-sibling::*)]//sigma[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[@xml:id="id3"][not(preceding-sibling::*)][following-sibling::*[position()=4]][following-sibling::xi[@title][@xml:id="id4"][preceding-sibling::*[position() = 1]][not(preceding-sibling::xi)][not(child::node())][following-sibling::pi[@xml:id="id5"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::omicron[@attr][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=1]][following-sibling::*[preceding-sibling::*[position() = 4]]//theta[not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::chi[@xml:id="id8"][following-sibling::*[position()=2]][following-sibling::theta[@xml:lang="en-US"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::upsilon[contains(@true,"_b")][@xml:lang="en"][@xml:id="id9"][preceding-sibling::*[position() = 3]]/epsilon[@xml:id="id10"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[contains(@or," gree")][@xml:id="id11"][following-sibling::alpha[@token][@xml:id="id12"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::psi[@desciption="123456789"][@xml:lang="no"][preceding-sibling::*[position() = 3]]/gamma[@title][not(child::node())][following-sibling::omega[@xml:id="id13"][preceding-sibling::*[position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]]] + + + beta + 0 + @@ -28114,6 +32949,11 @@ //kappa[@string][@xml:lang="nb"][@xml:id="id1"]//lambda[starts-with(@attribute,"fal")][@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]/nu[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::theta[starts-with(@attribute,"con")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="en-GB"]/lambda[@xml:id="id4"][not(following-sibling::*)]/omega[starts-with(@token,"tru")][@xml:id="id5"]//tau[@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@xml:id="id6"]/mu[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 1]]//gamma[starts-with(@data,"thi")][not(preceding-sibling::*)]//theta[starts-with(concat(@desciption,"-"),"true-")][@xml:lang="en"][following-sibling::lambda[not(following-sibling::*)]//phi[@xml:lang="nb"][@xml:id="id8"][not(child::node())][following-sibling::*[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[starts-with(concat(@content,"-"),"this.nodeValue-")][@xml:id="id9"]/epsilon[position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -28150,6 +32990,11 @@ //psi[@name][@xml:lang="no-nb"]/epsilon[@abort="attribute-value"][@xml:id="id1"]//pi[contains(concat(@attr,"$"),"k$")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[contains(concat(@token,"$"),"content$")][@xml:lang="no"][not(preceding-sibling::eta)][following-sibling::pi[starts-with(@string,"another attribute va")][@xml:id="id3"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][following-sibling::upsilon[starts-with(@attribute,"at")][@xml:id="id4"][following-sibling::pi[contains(concat(@string,"$")," attribute value$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 4]][following-sibling::alpha[@xml:id="id5"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + pi + 0 + @@ -28167,6 +33012,11 @@ //delta[@xml:lang="no-nb"][@xml:id="id1"]//*[contains(@and,"%")][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@content="false"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/kappa[starts-with(@delete,"fa")][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@xml:lang="no"][@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=4]][following-sibling::sigma[@xml:id="id5"][following-sibling::*[position()=3]][not(child::node())][following-sibling::tau[@xml:lang="nb"][preceding-sibling::*[position() = 3]][following-sibling::*[position()=2]][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::rho[@xml:lang="en-GB"][not(following-sibling::*)][position() = 1]]][position() = 1]]]][position() = 1]] + + + any + 0 + @@ -28185,6 +33035,11 @@ //*[contains(@attr,"blank")]//sigma[contains(@abort,"t")][not(preceding-sibling::*)]/pi[@xml:lang="en-GB"]//phi[@string][@xml:id="id1"][following-sibling::*[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[starts-with(concat(@token,"-"),"another attribute value-")][@xml:id="id3"][not(preceding-sibling::*)][not(preceding-sibling::kappa or following-sibling::kappa)]/mu[not(preceding-sibling::*)][following-sibling::psi[@string][preceding-sibling::*[position() = 1]][following-sibling::alpha[@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::delta[starts-with(concat(@number,"-"),"123456789-")][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/sigma[contains(@false,"alue")][@xml:lang="nb"]][position() = 1]]][position() = 1]] + + + phi + 0 + @@ -28209,6 +33064,11 @@ //eta[@desciption][@xml:id="id1"]//theta[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[starts-with(concat(@string,"-"),"100%-")][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]/omicron[starts-with(@true,"conten")][@xml:id="id3"][not(preceding-sibling::*)][following-sibling::lambda[@xml:lang="en"]//mu[not(preceding-sibling::*)]//*[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//nu[starts-with(concat(@and,"-"),"solid 1px green-")][not(preceding-sibling::*)]//psi[@xml:lang="en-US"][@xml:id="id4"]] + + + omicron + 0 + @@ -28232,6 +33092,11 @@ //pi[@xml:lang="en-GB"]/tau[@attribute][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[contains(concat(@desciption,"$"),"attribute value$")][@xml:lang="no"]//pi[starts-with(@class,"true")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]/sigma[contains(concat(@att,"$")," 1px green$")][not(preceding-sibling::*)][not(following-sibling::*)]//sigma[starts-with(concat(@string,"-"),"false-")]//phi[contains(@desciption,"100%")][@xml:lang="en-GB"][not(following-sibling::*)]//zeta[@xml:id="id3"][not(following-sibling::*)]/pi[@class="another attribute value"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[starts-with(concat(@attribute,"-"),"attribute value-")][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:lang="en-US"][@xml:id="id5"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::lambda[@false="attribute"][@xml:lang="en"][@xml:id="id6"][preceding-sibling::*[position() = 3]]//alpha[@title][@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]]][position() = 1]] + + + tau + 0 + @@ -28260,6 +33125,11 @@ //nu[@xml:lang="no"][@xml:id="id1"]//chi[@xml:id="id2"][not(preceding-sibling::*)]//lambda[@xml:id="id3"][not(child::node())][following-sibling::beta[preceding-sibling::*[position() = 1]]//psi[contains(@true,"0%")][@xml:lang="no"][@xml:id="id4"]/nu[@attrib][@xml:lang="no"][following-sibling::*[position()=2]][following-sibling::omega[contains(concat(@abort,"$"),"-is-att-value$")][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::iota[@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]//psi[contains(concat(@desciption,"$"),"ue$")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::iota[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::xi[@attr][@xml:id="id8"][following-sibling::*[position()=5]][following-sibling::chi[contains(concat(@att,"$"),"nk$")][following-sibling::*[position()=4]][not(child::node())][following-sibling::chi[@xml:lang="en-GB"][@xml:id="id9"][not(child::node())][following-sibling::kappa[@desciption="solid 1px green"][@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 5]][following-sibling::eta[contains(concat(@desciption,"$"),"te$")][following-sibling::eta[@xml:lang="nb"][not(following-sibling::*)]/eta[@true="123456789"][@xml:lang="nb"][not(preceding-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]]] + + + lambda + 0 + @@ -28290,6 +33160,11 @@ //theta[@att="false"][@xml:id="id1"]//epsilon[contains(concat(@false,"$"),"bute value$")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[starts-with(@or,"con")][@xml:lang="en-GB"][@xml:id="id3"][not(child::node())][following-sibling::mu[starts-with(concat(@att,"-"),"attribute-")][@xml:lang="no-nb"][@xml:id="id4"]/theta[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::omicron[following-sibling::tau[starts-with(@attrib,"attri")][@xml:lang="nb"][preceding-sibling::*[position() = 2]]//rho[@xml:lang="en-GB"][@xml:id="id6"][not(child::node())][following-sibling::tau[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/lambda[@xml:id="id8"]/rho[starts-with(@desciption,"attrib")][@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::upsilon[@xml:lang="no"][preceding-sibling::*[position() = 1]]//delta[@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::upsilon[contains(concat(@attrib,"$"),"56789$")][@xml:id="id10"]/alpha[starts-with(@attrib,"th")][@xml:lang="no"][not(preceding-sibling::*)][not(preceding-sibling::alpha)][following-sibling::gamma[contains(@delete,"4567")]/upsilon[@xml:lang="no-nb"][@xml:id="id11"][not(following-sibling::*)]//epsilon[@attr][@xml:lang="en-GB"][not(following-sibling::*)]/sigma[@xml:id="id12"]/epsilon[@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@xml:id="id13"][following-sibling::omega[preceding-sibling::*[position() = 2]]/phi[@desciption][@xml:id="id14"][not(preceding-sibling::*)][not(following-sibling::*)]/pi[@content="false"][@xml:lang="en-US"][@xml:id="id15"][not(preceding-sibling::*)]]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]] + + + beta + 0 + @@ -28335,6 +33210,11 @@ //kappa[contains(@number,"e")][@xml:id="id1"]/upsilon[contains(concat(@title,"$"),"ue$")][@xml:lang="en"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:id="id2"]/nu[@delete="123456789"][@xml:lang="en-US"][@xml:id="id3"][following-sibling::*[position()=1]][not(child::node())][following-sibling::beta[@desciption][@xml:id="id4"]//alpha[@desciption][@xml:lang="en"][not(parent::*/*[position()=2])]//omicron[contains(concat(@name,"$"),"tent$")][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@xml:lang="nb"][@xml:id="id6"][not(preceding-sibling::*)][not(following-sibling::*)]/xi[@attr][@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::pi/upsilon[starts-with(@object,"_b")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::kappa[@abort][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[starts-with(concat(@class,"-"),"content-")][@xml:lang="en-US"][not(preceding-sibling::*)]//rho[@abort][not(following-sibling::*)]//kappa[@false][@xml:lang="en-GB"]/upsilon[@xml:id="id7"][not(following-sibling::*)]//eta[@attribute="this.nodeValue"]/theta[@xml:lang="en-GB"][@xml:id="id8"][not(child::node())][following-sibling::nu[preceding-sibling::*[position() = 1]]//xi[@string][@xml:lang="en-GB"][@xml:id="id9"]/eta[starts-with(@object,"1")][not(following-sibling::*)][position() = 1]]][position() = 1]]]] + + + upsilon + 0 + @@ -28378,6 +33258,11 @@ //zeta[@false]/mu[contains(@abort,"56789")][@xml:lang="en-US"][not(child::node())][following-sibling::mu[not(following-sibling::*)]//epsilon[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[contains(concat(@string,"$"),"ue$")][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[@attr="_blank"][not(preceding-sibling::*)]//phi[not(child::node())][following-sibling::theta[@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::chi[@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]]/sigma[@xml:lang="nb"][not(child::node())][following-sibling::alpha[@desciption][@xml:id="id5"][preceding-sibling::*[position() = 1]]//xi[contains(concat(@desciption,"$"),"blank$")][@xml:id="id6"][following-sibling::chi[contains(@object,"er")][@xml:lang="en"][@xml:id="id7"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//*[@content][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[contains(@title,"a")][@xml:id="id9"][not(preceding-sibling::*)][not(preceding-sibling::pi)]//nu[@xml:lang="en-GB"][not(preceding-sibling::*)]//xi[@xml:lang="no"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::*[position()=2]][not(child::node())][following-sibling::kappa[@xml:id="id11"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::chi/alpha[@number][@xml:lang="en"][@xml:id="id12"][not(following-sibling::*)]//tau[not(preceding-sibling::*)][not(following-sibling::*)]/theta[@attr="_blank"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]] + + + mu + 0 + @@ -28420,6 +33305,11 @@ //lambda/chi[@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]//delta[not(preceding-sibling::delta or following-sibling::delta)][not(child::node())][following-sibling::omicron[contains(@data,"e")][@xml:lang="en-US"]/gamma/tau[@xml:lang="nb"][@xml:id="id2"]//eta[@number="this-is-att-value"][@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]/zeta[following-sibling::*[position()=2]][not(child::node())][following-sibling::theta[@xml:id="id4"][preceding-sibling::*[position() = 1]][following-sibling::delta[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]][position() = 1]]] + + + delta + 0 + @@ -28443,6 +33333,11 @@ //rho[@xml:id="id1"]/xi[contains(@object,"4")][@xml:lang="no-nb"][not(following-sibling::*)]//chi[@xml:id="id2"]/omega[@xml:lang="nb"][not(following-sibling::*)]//omega[not(child::node())][following-sibling::omicron[contains(concat(@title,"$"),"e$")][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//rho[contains(concat(@string,"$"),"ibute$")][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/iota[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)]/zeta[@xml:lang="no"][@xml:id="id5"]//kappa[@or="true"][@xml:lang="en-US"][not(preceding-sibling::*)]/*[starts-with(concat(@token,"-"),"another attribute value-")][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::gamma[@att="content"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[@xml:id="id6"][not(preceding-sibling::*)][position() = 1]]] + + + omega + 1 + @@ -28473,6 +33368,11 @@ //eta[@xml:lang="no"]//kappa[@xml:id="id1"][not(following-sibling::*)]/pi[@object][not(following-sibling::*)]//*[@and="true"][@xml:id="id2"]//omega[@title][following-sibling::*[position()=2]][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::lambda[@xml:lang="no"][@xml:id="id3"]//chi[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]]] + + + omega + 0 + @@ -28493,6 +33393,11 @@ //*[@xml:id="id1"]//tau[starts-with(concat(@src,"-"),"this-")][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//pi[contains(@delete,"en")][@xml:lang="no-nb"][@xml:id="id3"]/theta[@title="attribute-value"][@xml:id="id4"][not(child::node())][following-sibling::iota[@desciption="another attribute value"][@xml:lang="en-GB"][@xml:id="id5"]//tau[@xml:lang="no"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(preceding-sibling::tau)][following-sibling::omega[@xml:lang="en-GB"]/tau[starts-with(@desciption,"attrib")][@xml:id="id7"]//beta[not(preceding-sibling::*)][not(child::node())][following-sibling::iota[preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][following-sibling::alpha[@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//xi[starts-with(concat(@delete,"-"),"true-")][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:id="id10"][preceding-sibling::*[position() = 1]][following-sibling::alpha[@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[contains(concat(@string,"$"),"nodeValue$")]/tau[@xml:lang="en-US"][@xml:id="id12"][not(following-sibling::*)]//mu[contains(@true,"t")][@xml:id="id13"][not(preceding-sibling::*)]/upsilon[starts-with(concat(@or,"-"),"123456789-")][following-sibling::zeta[@and][@xml:id="id14"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::zeta[@xml:id="id15"]/mu[@xml:lang="en-US"][not(preceding-sibling::*)]/alpha[@true][not(following-sibling::*)]//sigma[@xml:id="id16"][not(preceding-sibling::*)][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + theta + 0 + @@ -28536,6 +33441,11 @@ //chi[contains(concat(@number,"$"),"-value$")][@xml:lang="nb"]/rho[@name="100%"][@xml:id="id1"][not(preceding-sibling::rho)]//mu[@attrib][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::upsilon[@xml:id="id3"][preceding-sibling::*[position() = 1]]/pi[starts-with(concat(@false,"-"),"false-")][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[@name="100%"][@xml:lang="en-US"][not(following-sibling::*)]/pi[contains(concat(@attribute,"$"),"value$")][@xml:lang="en-GB"][following-sibling::sigma[contains(concat(@name,"$"),"lid 1px green$")][@xml:lang="en-GB"][@xml:id="id5"][not(following-sibling::*)]/lambda[starts-with(concat(@object,"-"),"123456789-")][@xml:id="id6"][not(preceding-sibling::*)][not(child::node())][following-sibling::phi[@xml:id="id7"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::upsilon[preceding-sibling::*[position() = 2]][following-sibling::lambda[@xml:lang="en-US"][preceding-sibling::*[position() = 3]][following-sibling::nu[contains(@attr,"_blan")][@xml:lang="en"][not(following-sibling::*)]/sigma[contains(concat(@true,"$"),"789$")][@xml:lang="no"][@xml:id="id8"][following-sibling::omega[starts-with(concat(@data,"-"),"attribute value-")][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::omicron[@token="another attribute value"][@xml:id="id9"][not(following-sibling::*)]/mu[@xml:id="id10"][not(preceding-sibling::*)]//beta[@object][@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::*[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//epsilon[starts-with(@and,"another attribute v")][@xml:id="id11"][position() = 1]]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]] + + + mu + 0 + @@ -28572,6 +33482,11 @@ //chi[@xml:id="id1"]//eta[@xml:lang="en-GB"][@xml:id="id2"][not(following-sibling::*)]/omega[@desciption]/pi/omicron[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[contains(@true,"ttribute ")][@xml:lang="en"][not(child::node())][following-sibling::psi[@xml:lang="no"][preceding-sibling::*[position() = 2]]//*[following-sibling::mu[contains(@data,"alse")][@xml:lang="no-nb"][@xml:id="id4"][not(child::node())][following-sibling::psi[starts-with(@att,"this.nodeVa")][preceding-sibling::*[position() = 2]]//delta[starts-with(@att,"this-is-att")][not(child::node())][following-sibling::mu[@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[@xml:lang="en-US"][@xml:id="id6"][not(preceding-sibling::*)]/xi[@desciption][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//tau[contains(concat(@attr,"$"),"ue$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::mu[@xml:lang="no-nb"][@xml:id="id8"]]]]]][position() = 1]] + + + omicron + 0 + @@ -28604,6 +33519,11 @@ //chi[@xml:lang="nb"]//chi[not(child::node())][following-sibling::lambda[contains(concat(@desciption,"$"),"00%$")][@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::iota[starts-with(@desciption,"att")][@xml:lang="en-GB"][@xml:id="id3"]//rho[@abort="attribute value"][@xml:id="id4"][not(preceding-sibling::*)]/psi[following-sibling::*[position()=1]][following-sibling::upsilon[@data][@xml:id="id5"][preceding-sibling::*[position() = 1]]//sigma[contains(@false,"n")][@xml:id="id6"][following-sibling::theta[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/theta[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::eta[contains(@and,"nt")][@xml:id="id8"][preceding-sibling::*[position() = 1]][following-sibling::alpha[starts-with(concat(@src,"-"),"attribute-")][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::tau[contains(concat(@and,"$"),"blank$")][preceding-sibling::*[position() = 3]]/nu[@xml:lang="en"][@xml:id="id9"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::iota[@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::nu[@insert="attribute value"][@xml:id="id11"][preceding-sibling::*[position() = 2]]//psi[starts-with(@false,"c")][@xml:lang="no"][@xml:id="id12"]][position() = 1]]][position() = 1]]]][position() = 1]]][position() = 1]][position() = 1]] + + + chi + 1 + @@ -28636,6 +33556,11 @@ //epsilon[contains(@desciption,"te-valu")][@xml:lang="no"][@xml:id="id1"]/alpha[@xml:lang="en-US"][not(child::node())][following-sibling::alpha[starts-with(concat(@insert,"-"),"content-")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@attribute="attribute-value"][@xml:id="id2"][following-sibling::*[position()=1]][not(child::node())][following-sibling::epsilon[starts-with(@insert,"another attribute va")][@xml:id="id3"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//sigma[@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/tau[following-sibling::upsilon[@delete="this.nodeValue"][@xml:lang="en-US"][@xml:id="id4"]//nu[not(preceding-sibling::nu)]//pi[starts-with(concat(@object,"-"),"attribute value-")][@xml:lang="en-GB"]//*[not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="nb"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]] + + + alpha + 0 + @@ -28662,6 +33587,11 @@ //beta[@xml:lang="no-nb"][@xml:id="id1"]//beta[starts-with(concat(@true,"-"),"this-")][@xml:lang="en-US"][@xml:id="id2"][following-sibling::zeta[@xml:id="id3"][preceding-sibling::*[position() = 1]]//eta[@xml:lang="no"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::tau[@attribute="true"][@xml:lang="en-GB"][@xml:id="id4"][preceding-sibling::*[position() = 1]]//alpha[@data][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::tau[@xml:id="id6"][following-sibling::*[starts-with(concat(@insert,"-"),"this.nodeValue-")][not(child::node())][following-sibling::eta[starts-with(@desciption,"true")][@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::chi[starts-with(@false,"fa")][@xml:lang="en-US"][@xml:id="id8"][not(following-sibling::*)]/eta[@xml:lang="no"][@xml:id="id9"][not(following-sibling::*)]//pi[@string][@xml:lang="en"][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@xml:lang="en-US"][@xml:id="id10"]/delta[@xml:lang="no-nb"]/phi[following-sibling::iota[starts-with(concat(@insert,"-"),"123456789-")][@xml:lang="en"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::pi[contains(@string,"lse")][@xml:lang="no"][not(child::node())][following-sibling::nu[contains(@string,"ribute-value")][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::upsilon[@true][@xml:id="id11"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]//zeta[starts-with(concat(@string,"-"),"this.nodeValue-")][not(preceding-sibling::*)]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]]][position() = 1]] + + + beta + 1 + @@ -28697,6 +33627,11 @@ //tau[@xml:lang="nb"]//gamma[contains(concat(@string,"$"),"_blank$")][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/sigma[following-sibling::pi[following-sibling::*[position()=3]][not(child::node())][following-sibling::tau[@xml:id="id2"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=2]][following-sibling::lambda[@xml:id="id3"][following-sibling::rho[@name][@xml:lang="en"]/iota[@or="content"][@xml:lang="nb"][@xml:id="id4"][not(following-sibling::*)]//iota[@xml:id="id5"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::nu[@src][@xml:lang="no-nb"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]] + + + sigma + 0 + @@ -28718,6 +33653,11 @@ //nu[@desciption]//chi[@xml:id="id1"][not(preceding-sibling::*)][not(child::node())][following-sibling::omega[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/mu[@xml:lang="no-nb"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]/beta[starts-with(@att,"another attribute v")][not(child::node())][following-sibling::sigma[not(following-sibling::*)]][position() = 1]] + + + chi + 0 + @@ -28734,6 +33674,11 @@ //iota/eta[@class="attribute-value"][@xml:lang="nb"][@xml:id="id1"]/alpha[@class="true"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[contains(@desciption,"%")][@xml:id="id3"][not(preceding-sibling::*)]/rho[@title][@xml:lang="nb"][not(child::node())][following-sibling::chi[@and="false"][@xml:id="id4"][not(child::node())][following-sibling::rho[@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/*[@content][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:lang="nb"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/tau[starts-with(@class,"c")][not(child::node())][following-sibling::tau[@name="this-is-att-value"][not(child::node())][following-sibling::delta[@xml:lang="nb"][@xml:id="id6"][following-sibling::alpha[@xml:lang="nb"][@xml:id="id7"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]//omega[@xml:id="id8"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[contains(@false,"ue")][@xml:lang="en-US"][@xml:id="id9"]/lambda[@insert][@xml:id="id10"]/*[@desciption="true"][@xml:lang="en-US"][@xml:id="id11"][not(following-sibling::*)]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + alpha + 0 + @@ -28768,6 +33713,11 @@ //gamma/rho[following-sibling::*[position()=1]][not(child::node())][following-sibling::psi/mu[@xml:lang="en"][@xml:id="id1"][not(preceding-sibling::*)]/omicron[@xml:id="id2"][not(following-sibling::*)]//pi[@class][@xml:lang="en"][not(following-sibling::pi)][following-sibling::eta[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=2]][following-sibling::lambda[not(child::node())][following-sibling::chi[@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][not(following-sibling::*)][position() = 1]]]][position() = 1]] + + + rho + 0 + @@ -28788,6 +33738,11 @@ //theta//beta[@xml:lang="en"][not(child::node())][following-sibling::iota[@number][not(preceding-sibling::iota)][following-sibling::chi[@src][@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]/rho[not(preceding-sibling::*)][following-sibling::delta[@xml:lang="no"][@xml:id="id2"][preceding-sibling::*[position() = 1]][following-sibling::mu[contains(concat(@data,"$"),"ank$")][@xml:lang="en"][@xml:id="id3"][not(child::node())][following-sibling::pi[@xml:lang="en"][following-sibling::theta[@abort="_blank"][@xml:lang="en-US"][@xml:id="id4"][preceding-sibling::*[position() = 4]][not(following-sibling::*)]/omicron[starts-with(@title,"fals")][not(preceding-sibling::*)][following-sibling::alpha[starts-with(@title,"attribute-v")][not(following-sibling::*)]/sigma[@attribute][@xml:id="id5"][following-sibling::pi[@xml:lang="en-GB"][not(child::node())][following-sibling::kappa[@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(child::node())][following-sibling::kappa[not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 4]][following-sibling::*[position()=1]][following-sibling::*[@xml:id="id6"][preceding-sibling::*[position() = 5]]/lambda[contains(concat(@false,"$"),"alue$")][@xml:lang="nb"][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::delta[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/alpha[@xml:id="id8"][not(parent::*/*[position()=2])]//lambda[@xml:lang="no-nb"][@xml:id="id9"][not(child::node())][following-sibling::tau[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/phi[position() = 1]]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]]][position() = 1]] + + + beta + 0 + @@ -28826,6 +33781,11 @@ //mu[starts-with(@data,"attribut")]/epsilon[@xml:lang="nb"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::eta[contains(@attr,"ank")][not(child::node())][following-sibling::gamma[starts-with(concat(@string,"-"),"attribute-")][@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/eta[@delete][@xml:lang="en"][@xml:id="id3"][following-sibling::*[@content][@xml:lang="nb"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=3]][following-sibling::beta[@desciption][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::epsilon[contains(concat(@token,"$"),"een$")][@xml:lang="en"][preceding-sibling::*[position() = 3]][following-sibling::alpha[@att][@xml:lang="no-nb"][@xml:id="id5"][not(following-sibling::*)][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + epsilon + 0 + @@ -28844,6 +33804,11 @@ //kappa[@delete][@xml:lang="en-GB"]//epsilon[@xml:lang="no"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/eta[@xml:lang="en-GB"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::*[@false][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/nu[@desciption="false"][not(preceding-sibling::*)]/pi[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::beta//theta[starts-with(concat(@content,"-"),"attribute-")][@xml:lang="no"][@xml:id="id5"][not(child::node())][following-sibling::sigma[starts-with(concat(@desciption,"-"),"this-")][@xml:lang="nb"][@xml:id="id6"][not(following-sibling::*)]/nu[@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)][not(preceding-sibling::nu)]//gamma[starts-with(concat(@attrib,"-"),"this.nodeValue-")][@xml:id="id8"]//theta[contains(@title,"ue")][@xml:id="id9"][following-sibling::*[position()=1]][following-sibling::kappa[preceding-sibling::*[position() = 1]][not(following-sibling::*)]//sigma[@xml:lang="no-nb"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::omicron[starts-with(@token,"soli")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::rho[@xml:lang="no"][preceding-sibling::*[position() = 2]]/mu[contains(@src,"e")][@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]]]] + + + eta + 0 + @@ -28880,6 +33845,11 @@ //nu[@xml:lang="nb"]/eta[@xml:id="id1"]/*[@object][@xml:lang="en-US"][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[contains(concat(@abort,"$"),"bute value$")][@xml:lang="nb"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omicron[@xml:lang="no"][@xml:id="id2"][following-sibling::*[position()=1]][following-sibling::epsilon[contains(@object,"t")][preceding-sibling::*[position() = 2]]//upsilon[@xml:lang="en-US"][@xml:id="id3"]//mu[@xml:lang="nb"][following-sibling::epsilon[preceding-sibling::*[position() = 1]][not(following-sibling::*)]][position() = 1]]] + + + zeta + 0 + @@ -28901,6 +33871,11 @@ //phi[contains(concat(@string,"$"),"e$")][@xml:lang="en"][@xml:id="id1"]//iota[@xml:lang="en-US"]//upsilon[contains(concat(@string,"$"),"bute value$")][@xml:lang="en-US"][@xml:id="id2"]//nu[@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::omicron[contains(concat(@insert,"$"),"content$")][@xml:lang="en"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//chi[@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][position() = 1]][position() = 1]] + + + nu + 0 + @@ -28919,6 +33894,11 @@ //xi[@delete]//theta[@xml:id="id1"][following-sibling::beta[@xml:lang="en-GB"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/upsilon[@content][following-sibling::omega[@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::*[position()=1]][not(child::node())][following-sibling::pi[@token][@xml:id="id4"][not(following-sibling::*)]/gamma[@xml:lang="en"][not(preceding-sibling::*)]/gamma[@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[@xml:lang="en"]/rho[@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::beta[contains(@src,"-is")][@xml:id="id6"][preceding-sibling::*[position() = 1]]//*[starts-with(concat(@src,"-"),"another attribute value-")][@xml:id="id7"][not(following-sibling::*)]//rho[not(following-sibling::*)]/mu[contains(@attribute,"tr")][@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]/theta[starts-with(concat(@title,"-"),"_blank-")][@xml:id="id9"][not(child::node())][following-sibling::rho[@xml:id="id10"][preceding-sibling::*[position() = 1]]//xi[starts-with(concat(@and,"-"),"true-")][not(preceding-sibling::*)][following-sibling::omicron[@content][not(child::node())][following-sibling::theta[@xml:lang="nb"][@xml:id="id11"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//upsilon[@class="attribute"][following-sibling::zeta//eta[@name="true"][@xml:lang="en-GB"][@xml:id="id12"][following-sibling::beta[starts-with(@abort,"attribu")][@xml:id="id13"][not(child::node())][following-sibling::gamma[starts-with(concat(@title,"-"),"solid 1px green-")][@xml:lang="no-nb"][@xml:id="id14"][preceding-sibling::*[position() = 2]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]] + + + theta + 0 + @@ -28962,6 +33942,11 @@ //lambda[starts-with(concat(@content,"-"),"this.nodeValue-")]//psi[@xml:lang="no"]/kappa[following-sibling::*[position()=3]][not(child::node())][following-sibling::omega[@xml:lang="en-GB"][@xml:id="id1"][preceding-sibling::*[position() = 1]][following-sibling::pi[@attrib="another attribute value"][@xml:id="id2"][following-sibling::iota[@xml:lang="nb"][@xml:id="id3"][not(following-sibling::*)]//mu[contains(concat(@content,"$"),"reen$")][@xml:lang="en-US"][@xml:id="id4"][following-sibling::gamma[@false]/rho[@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 1]][following-sibling::kappa[@xml:id="id6"][following-sibling::eta[@content="another attribute value"][@xml:lang="nb"][@xml:id="id7"][not(following-sibling::*)]/upsilon[@token="attribute value"][@xml:lang="nb"][not(child::node())][following-sibling::lambda[@true][@xml:id="id8"][not(following-sibling::*)]//theta[starts-with(@or,"_blan")]//psi[@xml:lang="en-US"][not(following-sibling::*)]//upsilon[@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::upsilon[starts-with(@object,"1234567")][@xml:lang="en-US"][@xml:id="id9"][not(following-sibling::*)]//mu[@xml:id="id10"][not(following-sibling::*)]/omega[@xml:id="id11"]]][position() = 1]]]]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -28999,6 +33984,11 @@ //upsilon[@xml:lang="en-US"][@xml:id="id1"]//nu[not(child::node())][following-sibling::psi[@xml:id="id2"][not(following-sibling::*)]/nu[@abort="_blank"][not(preceding-sibling::*)][following-sibling::iota[@delete][@xml:id="id3"][following-sibling::*[position()=2]][not(child::node())][following-sibling::phi[@xml:lang="nb"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::xi[@false][@xml:lang="no"]//upsilon[contains(concat(@src,"$"),"attribute-value$")][@xml:lang="en-US"][not(preceding-sibling::*)]//eta[@true][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:lang="en-GB"][not(preceding-sibling::*)][not(following-sibling::*)]//alpha[@false][@xml:id="id4"]//*[@string][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(concat(@insert,"$"),"rue$")][@xml:lang="nb"][not(child::node())][following-sibling::rho//nu[@xml:lang="nb"][not(preceding-sibling::*)]//delta[starts-with(concat(@attrib,"-"),"true-")][@xml:id="id5"][following-sibling::*[position()=1]][following-sibling::phi[@xml:lang="en-US"][@xml:id="id6"]//nu[starts-with(concat(@src,"-"),"attribute-")][@xml:lang="en-GB"][following-sibling::*[position()=1]][not(child::node())][following-sibling::gamma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[@xml:lang="en"][not(child::node())][following-sibling::xi[@xml:lang="en-GB"][@xml:id="id7"][not(following-sibling::*)]/omicron[contains(concat(@attribute,"$"),"ribute-value$")][@xml:lang="no-nb"][not(preceding-sibling::*)][not(following-sibling::*)]]]][position() = 1]][position() = 1]]]]][position() = 1]] + + + nu + 0 + @@ -29040,6 +34030,11 @@ //tau[@insert][@xml:id="id1"]/delta[@xml:lang="no"][not(preceding-sibling::*)][not(child::node())][following-sibling::tau[starts-with(@token,"_bla")][@xml:id="id2"][not(following-sibling::*)]//kappa[@xml:lang="no"][not(preceding-sibling::*)]//gamma[following-sibling::*[position()=2]][not(preceding-sibling::gamma)][not(child::node())][following-sibling::chi[@delete][@xml:id="id3"][preceding-sibling::*[position() = 1]][following-sibling::chi[@delete][@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/pi[@xml:lang="en-US"][@xml:id="id5"][not(following-sibling::*)]//xi[@data][not(preceding-sibling::*)]/lambda[@att][@xml:lang="no"][@xml:id="id6"][not(following-sibling::*)]/theta[@object][@xml:lang="en-GB"]//sigma[starts-with(concat(@string,"-"),"another attribute value-")][not(following-sibling::*)]/upsilon[@xml:id="id7"][not(following-sibling::*)][position() = 1]]]] + + + delta + 0 + @@ -29069,6 +34064,11 @@ //iota[@xml:id="id1"]//nu[contains(@abort,"v")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)]/delta[@xml:lang="no-nb"]//epsilon[@src="123456789"][@xml:lang="en-GB"][@xml:id="id3"]//iota[@xml:lang="en-US"][@xml:id="id4"]/pi[starts-with(@abort,"fa")][@xml:lang="no-nb"]/upsilon + + + upsilon + 0 + @@ -29089,6 +34089,11 @@ //sigma[@xml:lang="en-US"]/epsilon[@src][@xml:lang="en-GB"][@xml:id="id1"][not(preceding-sibling::*)][not(following-sibling::*)]/psi[@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//upsilon[@desciption][@xml:id="id3"][not(preceding-sibling::*)]//gamma[@xml:lang="no"][following-sibling::pi[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::beta[@xml:lang="no-nb"][@xml:id="id4"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=3]][not(child::node())][following-sibling::sigma[contains(concat(@name,"$"),"3456789$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 3]][following-sibling::mu[starts-with(@attribute,"attribute v")][@xml:lang="en"][@xml:id="id5"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::theta[@xml:id="id6"][not(following-sibling::*)]/alpha[@number][@xml:id="id7"][following-sibling::*[position()=1]][following-sibling::rho[@xml:lang="no"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/psi[@xml:id="id8"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@xml:lang="en"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@xml:id="id9"][not(following-sibling::*)]/phi[@xml:lang="nb"]/phi[@xml:lang="en"][not(following-sibling::*)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + gamma + 0 + @@ -29123,6 +34128,11 @@ //beta[starts-with(concat(@class,"-"),"100%-")][@xml:lang="en-GB"][@xml:id="id1"]/alpha[@xml:id="id2"][not(preceding-sibling::*)]/gamma[contains(@attrib,"t")][following-sibling::*[position()=1]][following-sibling::xi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]//*[@xml:id="id3"]/nu[@xml:id="id4"][following-sibling::*[position()=5]][following-sibling::rho[@content][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@xml:lang="nb"][following-sibling::*[position()=3]][not(child::node())][following-sibling::iota[starts-with(@desciption,"fal")][@xml:id="id6"][preceding-sibling::*[position() = 3]][following-sibling::tau[@attribute][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::kappa[starts-with(@or,"anothe")][@xml:lang="no"][preceding-sibling::*[position() = 5]]//chi[contains(@attr,"0")][@xml:lang="en-US"]/eta[starts-with(concat(@attr,"-"),"this.nodeValue-")][not(preceding-sibling::*)][not(following-sibling::*)]/zeta[not(following-sibling::*)]/gamma[@xml:lang="no-nb"][@xml:id="id7"][following-sibling::upsilon[preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/iota[starts-with(@insert,"attr")][@xml:lang="nb"][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@xml:lang="no"][@xml:id="id10"][following-sibling::psi[@xml:lang="no"][@xml:id="id11"][preceding-sibling::*[position() = 1]]//nu[@abort][@xml:id="id12"][not(preceding-sibling::*)][not(child::node())][following-sibling::rho[@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::pi[@src][@xml:lang="nb"][position() = 1]][position() = 1]]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]]] + + + gamma + 0 + @@ -29164,6 +34174,11 @@ //zeta[@attribute][@xml:lang="en-GB"][@xml:id="id1"]/lambda[@token][@xml:lang="no-nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::*[@xml:lang="no-nb"][not(child::node())][following-sibling::delta[contains(concat(@class,"$"),"56789$")][@xml:lang="en-GB"]//zeta[@xml:lang="en-US"][@xml:id="id2"][following-sibling::eta[not(child::node())][following-sibling::lambda[starts-with(concat(@data,"-"),"solid 1px green-")][@xml:lang="no-nb"][preceding-sibling::*[position() = 2]][following-sibling::omicron[starts-with(concat(@desciption,"-"),"123456789-")][following-sibling::omicron[@false][@xml:id="id3"][not(child::node())][following-sibling::omega[@xml:id="id4"][preceding-sibling::*[position() = 5]][following-sibling::zeta[@xml:lang="en-GB"][@xml:id="id5"][not(child::node())][following-sibling::zeta[@xml:lang="no-nb"]/omega[@xml:lang="no-nb"][not(child::node())][following-sibling::chi[not(following-sibling::*)]]][position() = 1]]][position() = 1]]]][position() = 1]][position() = 1]]] + + + lambda + 0 + @@ -29188,6 +34203,11 @@ //theta[@xml:lang="nb"][@xml:id="id1"]/zeta[@xml:lang="no-nb"][@xml:id="id2"]/beta[@object][not(following-sibling::beta)]//phi[@desciption][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//kappa[@xml:lang="en-US"][@xml:id="id4"][not(preceding-sibling::*)][not(child::node())][following-sibling::delta[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::mu[@xml:lang="en"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]/upsilon[@xml:lang="no-nb"][@xml:id="id6"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::sigma[contains(concat(@token,"$"),"olid 1px green$")][@xml:id="id7"]//omega[@content="this.nodeValue"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[starts-with(@insert,"fa")][@xml:lang="no"][following-sibling::pi[contains(@src,"nk")][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]] + + + kappa + 0 + @@ -29214,6 +34234,11 @@ //omega//kappa[not(preceding-sibling::*)][not(child::node())][following-sibling::iota[@xml:id="id1"][not(child::node())][following-sibling::upsilon[@xml:lang="en-GB"][not(following-sibling::*)]/zeta[@xml:lang="en-GB"][@xml:id="id2"][not(child::node())][following-sibling::phi[starts-with(@name,"12345")][@xml:lang="no-nb"][@xml:id="id3"][not(following-sibling::*)]//xi[@xml:lang="en-GB"][@xml:id="id4"][not(child::node())][following-sibling::lambda[@xml:id="id5"]//kappa[contains(concat(@abort,"$"),"e$")][@xml:lang="no-nb"][not(preceding-sibling::kappa)][following-sibling::xi[@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/delta[@xml:id="id7"][following-sibling::lambda[@attrib][@xml:id="id8"][preceding-sibling::*[position() = 1]]//psi[@xml:id="id9"]//tau[starts-with(@delete,"1234")][@xml:lang="en"][@xml:id="id10"][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="no-nb"][@xml:id="id11"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//kappa[@src][not(preceding-sibling::*)]//rho[@xml:id="id12"][not(preceding-sibling::*)]]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + kappa + 0 + @@ -29247,6 +34272,11 @@ //epsilon[@xml:lang="nb"]//zeta[@object="content"][@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::tau[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/rho[@xml:id="id2"][not(preceding-sibling::*)]/omicron[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::lambda[not(following-sibling::*)]/eta[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="no"][@xml:id="id4"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::rho[@xml:lang="en-US"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]]][position() = 1]] + + + zeta + 0 + @@ -29266,6 +34296,11 @@ //*[@xml:id="id1"]//xi[starts-with(concat(@insert,"-"),"content-")][@xml:lang="en"][not(preceding-sibling::*)]/iota[contains(concat(@true,"$"),"blank$")][@xml:id="id2"][not(child::node())][following-sibling::mu[@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::mu)]//sigma[@xml:lang="en-US"][@xml:id="id4"][not(following-sibling::*)]/epsilon[@xml:lang="no-nb"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::pi[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]] + + + iota + 0 + @@ -29284,6 +34319,11 @@ //kappa[@xml:lang="en-US"]//lambda[contains(@att,"k")][@xml:lang="en-US"][not(preceding-sibling::*)]//gamma[not(preceding-sibling::*)][not(child::node())][following-sibling::theta[contains(@class,"ue")][@xml:lang="en-US"][@xml:id="id1"][not(following-sibling::*)]//iota[contains(@data,"00%")][@xml:id="id2"][not(preceding-sibling::*)][not(following-sibling::*)]//omega[contains(@src,"nk")][@xml:id="id3"]/beta[@attribute="solid 1px green"][not(following-sibling::*)]//phi[@desciption][@xml:id="id4"][not(preceding-sibling::*)][not(following-sibling::*)]//psi[@xml:lang="nb"][not(preceding-sibling::*)][not(child::node())][following-sibling::sigma[contains(concat(@false,"$"),"te-value$")][@xml:lang="en-US"][following-sibling::theta[@att][not(following-sibling::*)]//iota[contains(concat(@false,"$"),"e$")][@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]]][position() = 1]] + + + gamma + 0 + @@ -29311,6 +34351,11 @@ //xi[contains(concat(@att,"$"),"rue$")][@xml:lang="en-US"][@xml:id="id1"]//omega[@xml:id="id2"][not(preceding-sibling::*)][following-sibling::lambda[@and][preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][not(child::node())][following-sibling::sigma[@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::phi[starts-with(concat(@attr,"-"),"attribute-")][@xml:id="id4"][following-sibling::*[position()=3]][not(child::node())][following-sibling::nu[@xml:lang="en"][following-sibling::*[position()=2]][following-sibling::zeta[@desciption="attribute value"][@xml:id="id5"][not(child::node())][following-sibling::zeta[@token][@xml:lang="no-nb"][@xml:id="id6"][not(following-sibling::*)]//mu[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][following-sibling::tau[@xml:lang="en-GB"][@xml:id="id8"][following-sibling::*[position()=1]][following-sibling::omega[@xml:lang="nb"][@xml:id="id9"][preceding-sibling::*[position() = 2]]//xi[contains(@or,"true")][@xml:id="id10"][following-sibling::*[position()=1]][following-sibling::upsilon[@att][@xml:lang="no"][@xml:id="id11"][not(following-sibling::*)][position() = 1]][position() = 1]][position() = 1]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]] + + + omega + 0 + @@ -29334,6 +34379,11 @@ //omega[@xml:id="id1"]//pi[contains(concat(@true,"$"),"ribute value$")][@xml:id="id2"][following-sibling::*[position()=2]][following-sibling::nu[@xml:lang="en-US"][@xml:id="id3"][not(child::node())][following-sibling::omicron[starts-with(@true,"attribute")][@xml:lang="en-GB"][not(following-sibling::*)]//psi[contains(@title,"e")][@xml:lang="en"][@xml:id="id4"][not(child::node())][following-sibling::lambda[@attribute][@xml:id="id5"][preceding-sibling::*[position() = 1]][position() = 1]]]] + + + pi + 0 + @@ -29349,6 +34399,11 @@ //kappa[@xml:id="id1"]//beta[@attribute][@xml:lang="en"][@xml:id="id2"][not(preceding-sibling::*)]//mu[starts-with(concat(@desciption,"-"),"true-")][not(preceding-sibling::*)][not(following-sibling::*)]/alpha[starts-with(concat(@insert,"-"),"true-")][@xml:lang="no"][@xml:id="id3"][following-sibling::upsilon[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]/zeta[@data="_blank"][@xml:lang="no-nb"][@xml:id="id5"]/psi[contains(concat(@attribute,"$"),"bute$")][@xml:lang="en-US"][@xml:id="id6"][following-sibling::omega[not(following-sibling::*)]//*[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::iota/zeta[@number="true"][@xml:lang="no"][@xml:id="id8"][not(following-sibling::*)]/xi[@xml:lang="no-nb"][@xml:id="id9"][not(child::node())][following-sibling::eta[@token][@xml:lang="en-US"][@xml:id="id10"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][position() = 1]]]][position() = 1]] + + + alpha + 0 + @@ -29377,6 +34432,11 @@ //nu[@xml:id="id1"]//tau[@class][@xml:lang="en"][not(preceding-sibling::*)]//alpha[following-sibling::alpha[contains(concat(@true,"$"),"tribute value$")][@xml:id="id2"][not(child::node())][following-sibling::alpha[@insert][preceding-sibling::*[position() = 2]][following-sibling::mu[not(following-sibling::*)]/*[starts-with(concat(@title,"-"),"true-")][@xml:lang="en"][not(following-sibling::*)]/theta[starts-with(concat(@object,"-"),"attribute-")][not(preceding-sibling::*)]/psi[not(child::node())][following-sibling::xi[@false][@xml:lang="en"][@xml:id="id3"][preceding-sibling::*[position() = 1]]//zeta[@or][@xml:lang="en-US"]//tau[@and="true"][not(following-sibling::*)]/gamma[starts-with(@token,"f")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::sigma[contains(@false,"9")][following-sibling::kappa[@xml:lang="nb"][not(following-sibling::*)]/eta[@xml:lang="no"][@xml:id="id4"]/delta[@xml:lang="no"][@xml:id="id5"][not(preceding-sibling::*)]//tau[contains(@insert,"bute value")][@xml:lang="en-GB"][not(following-sibling::*)]/eta[@content][@xml:lang="en"][@xml:id="id6"]][position() = 1]][position() = 1]][position() = 1]]]] + + + alpha + 0 + @@ -29415,6 +34475,11 @@ //kappa/kappa[not(preceding-sibling::*)]//iota[contains(@src,"od")][@xml:id="id1"][not(preceding-sibling::*)]//omicron[@false][@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)]/omega[@src="attribute value"][@xml:id="id3"][not(preceding-sibling::*)][not(following-sibling::*)]//beta[@content="this-is-att-value"][@xml:lang="en"][@xml:id="id4"][not(preceding-sibling::*)]/beta[contains(concat(@attrib,"$"),"e$")][@xml:lang="nb"][not(following-sibling::*)]//nu[not(following-sibling::*)]/alpha[@xml:lang="nb"][@xml:id="id5"][not(following-sibling::*)]/*[@att][@xml:id="id6"][not(preceding-sibling::*)]//delta[@xml:lang="en-GB"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]//xi[@object][@xml:lang="en-US"][not(preceding-sibling::*)][not(child::node())][following-sibling::psi[@name="solid 1px green"][@xml:lang="nb"]//chi[@xml:id="id8"][not(following-sibling::*)]//delta[@xml:lang="en"][@xml:id="id9"][following-sibling::gamma[contains(concat(@att,"$"),"attribute$")][@xml:lang="no-nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//alpha[contains(concat(@insert,"$"),"nk$")][position() = 1]]] + + + xi + 0 + @@ -29453,6 +34518,11 @@ //epsilon[@xml:lang="no"][@xml:id="id1"]/*[contains(concat(@attrib,"$"),"rue$")][not(following-sibling::*)]//psi//xi[@xml:lang="no"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=1]][following-sibling::zeta[@insert="attribute"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//eta[@xml:id="id4"][not(preceding-sibling::*)][following-sibling::pi[@xml:lang="en"]/*[starts-with(@attrib,"this.nodeValue")][@xml:lang="en-GB"][@xml:id="id5"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]] + + + xi + 0 + @@ -29473,6 +34543,11 @@ //omicron[contains(concat(@content,"$"),"tribute value$")][@xml:id="id1"]/lambda[@xml:id="id2"][not(preceding-sibling::*)]/mu[@xml:lang="nb"][not(following-sibling::*)]//theta[@xml:lang="nb"][not(preceding-sibling::*)][not(following-sibling::*)]//kappa[@delete][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::kappa[@xml:id="id4"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]] + + + kappa + 0 + @@ -29490,6 +34565,11 @@ //zeta[@desciption][@xml:lang="no-nb"][@xml:id="id1"]/tau[@xml:lang="en-US"][@xml:id="id2"][not(preceding-sibling::*)][not(child::node())][following-sibling::eta[@xml:lang="no"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::tau[contains(@data,"lank")]//upsilon[@xml:id="id4"][not(following-sibling::*)]/omega[@xml:lang="en"][@xml:id="id5"][not(preceding-sibling::*)][following-sibling::alpha[@xml:lang="en-US"][@xml:id="id6"][following-sibling::*[position()=2]][following-sibling::phi[@xml:id="id7"][preceding-sibling::*[position() = 2]][following-sibling::*[position()=1]][following-sibling::omega[contains(concat(@title,"$"),"3456789$")][@xml:lang="no"][@xml:id="id8"][preceding-sibling::*[position() = 3]][not(following-sibling::*)]/alpha[@xml:id="id9"][not(following-sibling::*)]/psi[@delete="this-is-att-value"][@xml:lang="no"][not(preceding-sibling::*)]//chi[@attrib="123456789"][not(child::node())][following-sibling::epsilon[@xml:lang="no-nb"][@xml:id="id10"][preceding-sibling::*[position() = 1]]//omicron[contains(@attr,"e")][not(preceding-sibling::*)][not(following-sibling::*)]//chi[contains(@token,"89")]/psi[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::delta[@xml:lang="en-GB"][@xml:id="id11"]//alpha[@attr]/epsilon[@attr][@xml:id="id12"][not(following-sibling::*)]//omega[starts-with(concat(@content,"-"),"123456789-")][@xml:id="id13"][following-sibling::*[position()=2]][following-sibling::gamma[@xml:lang="no"][not(child::node())][following-sibling::iota[@xml:lang="no-nb"][not(following-sibling::*)]/xi[@att="_blank"][@xml:lang="en-GB"][@xml:id="id14"][not(preceding-sibling::*)]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]]] + + + tau + 0 + @@ -29533,6 +34613,11 @@ //mu[@abort]/eta[@xml:id="id1"][not(preceding-sibling::*)][following-sibling::*[position()=2]][following-sibling::omega[@data][following-sibling::*[position()=1]][not(child::node())][following-sibling::*[@xml:id="id2"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//tau[@class="attribute-value"][@xml:lang="en-US"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::pi[@delete="123456789"][@xml:lang="nb"][@xml:id="id4"][preceding-sibling::*[position() = 1]]/tau[@xml:lang="en-US"][@xml:id="id5"]/delta[@xml:lang="nb"][@xml:id="id6"]/beta[@xml:lang="no"][@xml:id="id7"][not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[preceding-sibling::*[position() = 1]]/xi[@xml:id="id8"][not(preceding-sibling::*)]//xi[contains(concat(@abort,"$"),"solid 1px green$")][@xml:lang="no"][@xml:id="id9"][following-sibling::*[position()=4]][not(preceding-sibling::xi)][not(child::node())][following-sibling::psi[@insert][following-sibling::*[position()=3]][not(child::node())][following-sibling::nu[@string][not(child::node())][following-sibling::gamma[starts-with(concat(@number,"-"),"_blank-")][@xml:lang="en-US"][@xml:id="id10"][not(child::node())][following-sibling::phi[preceding-sibling::*[position() = 4]][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]][position() = 1]] + + + eta + 0 + @@ -29563,6 +34648,11 @@ //omega/xi[@attrib][@xml:lang="nb"][@xml:id="id1"][not(following-sibling::*)]/mu[not(preceding-sibling::*)][not(following-sibling::*)]//pi[starts-with(@attr,"_b")][@xml:id="id2"][not(following-sibling::*)]/upsilon[starts-with(concat(@attr,"-"),"attribute-")][@xml:lang="en-US"][not(preceding-sibling::*)][following-sibling::tau[@false="content"][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//phi[@xml:lang="en"][@xml:id="id4"][following-sibling::*[position()=1]][following-sibling::mu[@xml:id="id5"][preceding-sibling::*[position() = 1]]//sigma[@xml:lang="no"][@xml:id="id6"]//pi[@token][@xml:id="id7"][following-sibling::iota[starts-with(concat(@attrib,"-"),"false-")][@xml:lang="en"][@xml:id="id8"][following-sibling::zeta/kappa[@name][@xml:lang="nb"][not(child::node())][following-sibling::mu[@title][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)][not(following-sibling::mu)]]]][position() = 1]][position() = 1]] + + + upsilon + 0 + @@ -29592,6 +34682,11 @@ //alpha[@xml:lang="en-US"][@xml:id="id1"]/delta[contains(@abort,"lue")][@xml:lang="no-nb"][following-sibling::*[position()=4]][not(child::node())][following-sibling::sigma[@abort][@xml:lang="en-GB"][not(child::node())][following-sibling::epsilon[following-sibling::*[position()=2]][following-sibling::eta[@xml:lang="en-GB"][following-sibling::*[position()=1]][following-sibling::rho[@xml:id="id2"]//eta[@xml:lang="nb"][@xml:id="id3"][not(preceding-sibling::*)][not(child::node())][following-sibling::beta[@xml:lang="nb"][preceding-sibling::*[position() = 1]]/tau[contains(concat(@desciption,"$"),"e$")][@xml:lang="no-nb"][@xml:id="id4"][following-sibling::*[position()=1]][not(child::node())][following-sibling::sigma[preceding-sibling::*[position() = 1]][not(following-sibling::*)]/chi[@abort][@xml:lang="en-US"]/*[following-sibling::chi[@content][@xml:id="id5"][preceding-sibling::*[position() = 1]][following-sibling::theta[@xml:id="id6"][preceding-sibling::*[position() = 2]][not(following-sibling::*)][not(preceding-sibling::theta or following-sibling::theta)]/omicron[@name][@xml:lang="en"][@xml:id="id7"][not(preceding-sibling::*)][not(following-sibling::*)]/nu[contains(@delete,"ribute value")][@xml:lang="en"]/sigma[@xml:lang="en-GB"]/alpha[not(preceding-sibling::*)][not(child::node())][following-sibling::alpha[following-sibling::*[position()=1]][following-sibling::beta[@xml:lang="en"][preceding-sibling::*[position() = 2]]//kappa[@attr][@xml:lang="en-GB"][@xml:id="id8"][not(preceding-sibling::*)][following-sibling::xi[starts-with(concat(@false,"-"),"true-")][@xml:lang="no-nb"][not(following-sibling::*)]/*[contains(concat(@class,"$"),"lse$")][@xml:id="id9"][not(following-sibling::*)][not(preceding-sibling::any)][position() = 1]]][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]][position() = 1]]] + + + delta + 0 + @@ -29633,6 +34728,11 @@ //sigma/theta[contains(concat(@data,"$"),"is.nodeValue$")][@xml:lang="nb"]//omega[@xml:lang="no"][@xml:id="id1"][following-sibling::eta[@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::kappa[@xml:lang="en-US"][@xml:id="id3"][not(following-sibling::*)]/beta[not(child::node())][following-sibling::epsilon[@xml:id="id4"][following-sibling::delta[@false][@xml:lang="no"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//epsilon[@xml:lang="no-nb"][not(following-sibling::*)][not(parent::*/*[position()=2])]//phi[contains(@name,"lue")][not(following-sibling::*)]/alpha[@xml:lang="en-GB"][not(child::node())][following-sibling::beta[@xml:lang="no"][@xml:id="id5"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::sigma[starts-with(@abort,"attrib")][@xml:lang="en"][@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::rho[preceding-sibling::*[position() = 3]][not(following-sibling::*)]/phi[starts-with(@attribute,"100%")][@xml:lang="en-US"][@xml:id="id7"][not(child::node())][following-sibling::pi[starts-with(@title,"tr")][@xml:lang="nb"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//lambda[@content][not(following-sibling::*)]/gamma[@attrib="this-is-att-value"][@xml:lang="en-US"][@xml:id="id8"][following-sibling::kappa[@xml:lang="en-GB"][@xml:id="id9"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//beta[starts-with(@and,"this.nodeV")][@xml:id="id10"][not(following-sibling::*)]]][position() = 1]][position() = 1]][position() = 1]]]]][position() = 1]] + + + omega + 0 + @@ -29670,6 +34770,11 @@ //delta[@xml:lang="nb"]//iota[starts-with(concat(@object,"-"),"attribute value-")][@xml:lang="en"]/xi[@xml:id="id1"][not(child::node())][following-sibling::sigma[@false][@xml:lang="en-GB"][preceding-sibling::*[position() = 1]]/pi[not(preceding-sibling::*)]//kappa[contains(@name,"100")][@xml:lang="en"][@xml:id="id2"][following-sibling::*[position()=2]][not(child::node())][following-sibling::chi[@xml:lang="no"][@xml:id="id3"][following-sibling::*[position()=1]][following-sibling::eta[@xml:id="id4"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//alpha[@class="123456789"][not(preceding-sibling::*)][not(child::node())][following-sibling::xi[@xml:lang="en-GB"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::gamma[@xml:id="id5"][following-sibling::*[position()=1]][not(child::node())][following-sibling::rho[contains(concat(@string,"$"),"alse$")][@xml:id="id6"][preceding-sibling::*[position() = 3]]/lambda[contains(concat(@or,"$"),"k$")][not(preceding-sibling::*)][following-sibling::xi[@xml:lang="no-nb"]/psi[@xml:id="id7"][not(preceding-sibling::*)][following-sibling::*[position()=6]][not(preceding-sibling::psi)][not(child::node())][following-sibling::chi[preceding-sibling::*[position() = 1]][following-sibling::*[position()=5]][following-sibling::nu[contains(@token,"e")][@xml:lang="nb"][@xml:id="id8"][preceding-sibling::*[position() = 2]][following-sibling::theta[@xml:lang="nb"][@xml:id="id9"][following-sibling::*[position()=3]][following-sibling::mu[@xml:lang="no"][@xml:id="id10"][preceding-sibling::*[position() = 4]][not(child::node())][following-sibling::delta[contains(@src,"ribute")][@xml:lang="nb"][@xml:id="id11"][following-sibling::eta[@xml:lang="en-US"]/upsilon[@xml:id="id12"]//mu[not(preceding-sibling::*)][not(following-sibling::*)]]]]]]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]][position() = 1]]] + + + xi + 0 + @@ -29709,6 +34814,11 @@ //omega[@xml:id="id1"]/iota[starts-with(concat(@token,"-"),"attribute-")][@xml:lang="nb"][@xml:id="id2"][following-sibling::mu[@att][@xml:id="id3"][preceding-sibling::*[position() = 1]][not(following-sibling::*)]//upsilon[@number="123456789"][not(preceding-sibling::*)][not(following-sibling::*)]//rho[not(child::node())][following-sibling::xi[starts-with(concat(@title,"-"),"true-")][@xml:id="id4"][following-sibling::*[position()=4]][not(child::node())][following-sibling::gamma[@false="true"][@xml:lang="nb"][@xml:id="id5"][following-sibling::chi[@xml:lang="en-US"][@xml:id="id6"][preceding-sibling::*[position() = 3]][not(child::node())][following-sibling::theta[@title][preceding-sibling::*[position() = 4]][following-sibling::alpha[starts-with(@token,"10")][@xml:lang="nb"][@xml:id="id7"]/delta/rho[@src="true"]//gamma[@xml:id="id8"][not(preceding-sibling::*)]/beta[@xml:lang="en-GB"]/alpha[@att][@xml:id="id9"]/upsilon[contains(@and,"tru")][not(preceding-sibling::*)]//chi[@xml:id="id10"][not(preceding-sibling::*)][not(following-sibling::*)]//epsilon[@data="_blank"][not(preceding-sibling::*)][following-sibling::*[position()=1]][not(child::node())][following-sibling::xi[@xml:id="id11"][not(following-sibling::*)][not(preceding-sibling::xi)]//chi[@false="this-is-att-value"][@xml:id="id12"][position() = 1]][position() = 1]][position() = 1]]][position() = 1]]]] + + + iota + 0 + @@ -29748,6 +34858,11 @@ //omicron[@src="attribute value"][@xml:lang="en-US"]//kappa[@xml:lang="en-US"][@xml:id="id1"][following-sibling::*[position()=3]][not(child::node())][following-sibling::beta[@xml:lang="en-US"][@xml:id="id2"][preceding-sibling::*[position() = 1]][not(child::node())][following-sibling::omega[starts-with(@false,"attribute val")][@xml:lang="no"][@xml:id="id3"][preceding-sibling::*[position() = 2]][not(child::node())][following-sibling::beta/mu[@xml:lang="no-nb"][@xml:id="id4"][not(preceding-sibling::*)]//chi[starts-with(@string,"so")][not(child::node())][following-sibling::phi[@xml:lang="en-US"]/*[@xml:id="id5"][not(preceding-sibling::*)]/nu[@xml:id="id6"][following-sibling::*[position()=1]][following-sibling::lambda[@xml:lang="en-GB"]/xi[@xml:lang="en-GB"][not(preceding-sibling::*)][following-sibling::epsilon[@xml:id="id7"][following-sibling::*[position()=1]][not(child::node())][following-sibling::omega[contains(@attribute,"00%")][@xml:id="id8"][preceding-sibling::*[position() = 2]][not(following-sibling::*)]//nu[starts-with(@name,"a")][not(preceding-sibling::*)][not(following-sibling::*)]/mu[@false][@xml:id="id9"][not(preceding-sibling::*)][not(following-sibling::*)]][position() = 1]]]]]][position() = 1]] + + + kappa + 0 + @@ -29779,6 +34894,11 @@ //pi[@xml:id="id1"]/upsilon[contains(concat(@insert,"$"),"23456789$")][@xml:lang="no-nb"][@xml:id="id2"][not(preceding-sibling::*)][following-sibling::*[position()=6]][following-sibling::lambda[contains(concat(@abort,"$"),"9$")][following-sibling::tau[@insert][following-sibling::omicron[@xml:lang="en-US"][following-sibling::lambda[@number="100%"][@xml:lang="en-US"][@xml:id="id3"][preceding-sibling::*[position() = 4]][not(following-sibling::lambda)][not(child::node())][following-sibling::chi[@xml:id="id4"][preceding-sibling::*[position() = 5]][following-sibling::*[position()=1]][not(child::node())][following-sibling::psi[@xml:id="id5"][not(following-sibling::*)]//mu[not(child::node())][following-sibling::epsilon[starts-with(concat(@attr,"-"),"attribute-")]][position() = 1]]][position() = 1]]][position() = 1]]] + + + upsilon + 0 + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html index 2865052c65d..14a6a73e07a 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html @@ -17,8 +17,6 @@ - - diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html index 29dc214921d..22e8b38615c 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html @@ -14,9 +14,6 @@ - - - diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-events.html index 880376d60da..ece798ac87c 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-events.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-events.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Events with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-expiration.html b/tests/wpt/web-platform-tests/encrypted-media/drm-expiration.html index 6dec511470b..d907090efe0 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-expiration.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-expiration.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Expiration with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html index 8ef745c4fa7..cd14fe38054 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, multiple keys for audio/video diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html index de7ff395d03..0d98f7411f2 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html index 59350fb159e..b8a1bfd41e1 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, destroy the license diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html index 3df5fffd2a9..4b5956c4086 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, event sequence diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html index 066e0040f58..a119d3826b0 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html index b0c82621a35..29c44f89591 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, persistent-usage-record session with DRM, mp4, event sequence diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html index da5048f29a5..55736e8c447 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: persistent-usage-record, playback and retrieve record in new window, DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html index a8621ba2552..e929251978c 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, clear then encrypted diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html index ed5ff23632e..10450f0a6ad 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, encrypted then clear diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html index b29139ed2ce..ba5a586abfc 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful playback, temporary session with DRM, mp4, multiple keys diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html index 391ebf90724..ebb0e66bc34 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html index 20dda66adff..fab98edbbda 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html index 4f81da08dd8..63de51be68f 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html index c97c571b666..59ed1e498de 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html index c16809b8567..45dc70b39fc 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html index 1aafba40fbd..cf062125f0d 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, two videos diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html index bf970db674c..c9b78e615f1 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html index 592f2a8a151..f28a6fe2f0f 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html index 2656f8feb55..b18a36f0e47 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html @@ -2,7 +2,6 @@ - Encrypted Media Extensions: requestMediaKeySystemAccess tests, DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html index d215036fae7..71a1f70afcb 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: setMediaKeys again after playback with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html index d1723b5ce9c..749962c62d5 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: setMediaKeys again after resetting src attribute on video element with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html index 581d22f4af0..135c9893bf7 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: setMediaKeys multiple at same time with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html index 7d3fe096383..b7f2fec65f0 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: setMediaKeys multiple times with different mediakeys with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html index efc6d19780d..5cbbe52da9a 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: setMediaKeys multiple times with the same mediakeys with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html index bd78cb930de..dddbe3059c2 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: setMediaKeys to multiple video elements with DRM diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html index 1a74a6236a6..447ca60f745 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html @@ -17,9 +17,6 @@ - - - diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html index 508afcacb15..772806ae87a 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions - Waiting for a key for DRM, mp4 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html b/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html index 22d9a1359ec..2fcdc839f22 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html @@ -14,9 +14,6 @@ - - - diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-temporary-license-type.html b/tests/wpt/web-platform-tests/encrypted-media/drm-temporary-license-type.html index a4b54dac3b8..dd114659003 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/drm-temporary-license-type.html +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-temporary-license-type.html @@ -2,6 +2,7 @@ + Encrypted Media Extensions: Test that persistent license cannot be ingested into temporary session diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js index 7b0eee489a7..2df59a5f157 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js @@ -6,7 +6,7 @@ if (this.document === undefined) { function checkContentType(contentType, body) { if (self.FormData && body instanceof self.FormData) { - assert_true(contentType.startsWith("multipart/form-data;boundary="), "Request should have header content-type starting with multipart/form-data;boundary=, but got " + contentType); + assert_true(contentType.startsWith("multipart/form-data; boundary="), "Request should have header content-type starting with multipart/form-data; boundary=, but got " + contentType); return; } @@ -44,8 +44,8 @@ function requestHeaders(desc, url, method, body, expectedOrigin, expectedContent var url = RESOURCES_DIR + "inspect-headers.py" -requestHeaders("Fetch with GET", url, "GET", null, location.origin, null); -requestHeaders("Fetch with HEAD", url, "HEAD", null, location.origin, null); +requestHeaders("Fetch with GET", url, "GET", null, null, null); +requestHeaders("Fetch with HEAD", url, "HEAD", null, null, null); requestHeaders("Fetch with PUT without body", url, "POST", null, location.origin, "0"); requestHeaders("Fetch with PUT with body", url, "PUT", "Request's body", location.origin, "14"); requestHeaders("Fetch with POST without body", url, "POST", null, location.origin, "0"); @@ -63,4 +63,24 @@ requestHeaders("Fetch with POST with Blob body with mime type", url, "POST", new requestHeaders("Fetch with Chicken", url, "Chicken", null, location.origin, null); requestHeaders("Fetch with Chicken with body", url, "Chicken", "Request's body", location.origin, "14"); +function requestOriginHeader(method, mode, needsOrigin) { + promise_test(function(test){ + return fetch(url + "?headers=origin", {method:method, mode:mode}).then(function(resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.type , "basic", "Response's type is basic"); + if(needsOrigin) + assert_equals(resp.headers.get("x-request-origin") , location.origin, "Request should have an Origin header with origin: " + location.origin); + else + assert_equals(resp.headers.get("x-request-origin"), null, "Request should not have an Origin header") + }); + }, "Fetch with " + method + " and mode \"" + mode + "\" " + (needsOrigin ? "needs" : "does not need") + " an Origin header"); +} + +requestOriginHeader("GET", "cors", false); +requestOriginHeader("POST", "same-origin", true); +requestOriginHeader("POST", "no-cors", true); +requestOriginHeader("PUT", "same-origin", true); +requestOriginHeader("TacO", "same-origin", true); +requestOriginHeader("TacO", "cors", true); + done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html b/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html index 98d71acad9f..082db0bfea1 100644 --- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html @@ -57,7 +57,7 @@ assert_equals(headers.get(name), String(headerDict[name]), "name: " + name + " has value: " + headerDict[name]); } - }, "Create headers with OpenEndedDictionary"); + }, "Create headers with record"); test(function() { var headers = new Headers(headerDict); @@ -68,6 +68,14 @@ } }, "Create headers with existing headers"); + test(function() { + var headers = new Headers({test:"test"}); + var headers2 = new Headers() + headers2[Symbol.iterator] = headers[Symbol.iterator] + var headers3 = new Headers(headers2) + assert_equals(headers3.get("test"), "test") + }, "Create headers with existing headers with custom iterator"); + test(function() { var headers = new Headers(); for (name in headerDict) { diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-idl.html b/tests/wpt/web-platform-tests/fetch/api/headers/headers-idl.html index 2aaa1ceeaee..fe24fa34c6a 100644 --- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-idl.html +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-idl.html @@ -12,7 +12,7 @@ diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-idl.html b/tests/wpt/web-platform-tests/fetch/api/request/request-idl.html index 4f1590c7560..3c5588f2aaf 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-idl.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-idl.html @@ -74,8 +74,8 @@ diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-idl.html b/tests/wpt/web-platform-tests/fetch/api/response/response-idl.html index e849856cee3..19da25a758b 100644 --- a/tests/wpt/web-platform-tests/fetch/api/response/response-idl.html +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-idl.html @@ -56,8 +56,8 @@
    + +
    + + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-manual.html index 3b0d283978a..621b3304ffe 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-manual.html @@ -1,5 +1,5 @@ -Document.exitFullscreen() +Document#exitFullscreen() @@ -9,7 +9,7 @@ async_test(function(t) { trusted_request(document.querySelector("div")); - document.addEventListener("fullscreenchange", t.step_func(function() + document.addEventListener("fullscreenchange", t.step_func(function(event) { if (document.fullscreenElement) { document.exitFullscreen(); diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-timing-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-timing-manual.html new file mode 100644 index 00000000000..f91eb7e2a76 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-timing-manual.html @@ -0,0 +1,33 @@ + +Document#exitFullscreen() timing + + + +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-twice-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-twice-manual.html new file mode 100644 index 00000000000..c80aeb41695 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-exit-fullscreen-twice-manual.html @@ -0,0 +1,32 @@ + +Document#exitFullscreen() called twice + + + +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-element-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-element-manual.html index 473bdbb0f61..8f0af4187ae 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-element-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-element-manual.html @@ -1,5 +1,5 @@ -Document.fullscreenElement +Document#fullscreenElement diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled-active-document.html b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled-active-document.html new file mode 100644 index 00000000000..40171b510b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled-active-document.html @@ -0,0 +1,21 @@ + +Document#fullscreenEnabled when the document is not the active document + + +
    + + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html index f6382e64083..ce9556b57b9 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html @@ -1,5 +1,5 @@ -Document.fullscreenEnabled +Document#fullscreenEnabled
    diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenchange-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenchange-manual.html index d77872ffb58..1d05ce05bd9 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenchange-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenchange-manual.html @@ -1,5 +1,5 @@ -Document.onfullscreenchange +Document#onfullscreenchange diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenerror.html b/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenerror.html index 9bbcda9bba1..499e77d0b99 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenerror.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-onfullscreenerror.html @@ -1,5 +1,5 @@ -Document.onfullscreenerror +Document#onfullscreenerror
    diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-element-sibling-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-element-sibling-manual.html index 82672cbfd60..0f79cb6b7e9 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-element-sibling-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-element-sibling-manual.html @@ -1,7 +1,7 @@ Element ready check for sibling of fullscreen element - - + +
    diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-iframe-child-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-iframe-child-manual.html index 598fcfecf95..08febbd4f96 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-iframe-child-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-fullscreen-iframe-child-manual.html @@ -8,21 +8,26 @@ diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-iframe-child-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-iframe-child-manual.html index 0c1dd29a1e6..ab1c261ccc8 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-iframe-child-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-ready-check-iframe-child-manual.html @@ -6,12 +6,15 @@
    diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-exit-iframe-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-exit-iframe-manual.html new file mode 100644 index 00000000000..4483ccae2dc --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-exit-iframe-manual.html @@ -0,0 +1,38 @@ + +Element#requestFullscreen() and Document#exitFullscreen() in iframe + + + +
    + + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-move-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-move-manual.html new file mode 100644 index 00000000000..697a27f3a35 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-move-manual.html @@ -0,0 +1,25 @@ + +Element#requestFullscreen() followed by moving the element within the document + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-move-to-iframe-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-move-to-iframe-manual.html new file mode 100644 index 00000000000..255623e0dc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-move-to-iframe-manual.html @@ -0,0 +1,27 @@ + +Element#requestFullscreen() followed by moving the element into an iframe + + + +
    +
    + + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html new file mode 100644 index 00000000000..e2149fd60d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-iframe-manual.html @@ -0,0 +1,28 @@ + +Element#requestFullscreen() in iframe followed by removing the iframe + + + +
    + + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html new file mode 100644 index 00000000000..c754bf00fe4 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-and-remove-manual.html @@ -0,0 +1,22 @@ + +Element#requestFullscreen() followed by removing the element + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-manual.html index 81bd6a05e34..43d1ea4b768 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-manual.html @@ -1,5 +1,5 @@ -Element.requestFullscreen() +Element#requestFullscreen() diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-non-top-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-non-top-manual.html index 88eff090abe..ed5e1c88140 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-non-top-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-non-top-manual.html @@ -1,5 +1,5 @@ -Element.requestFullscreen() for non-top element in fullscreen element stack +Element#requestFullscreen() for non-top element in fullscreen element stack diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-not-allowed.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-not-allowed.html new file mode 100644 index 00000000000..041a458ac70 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-not-allowed.html @@ -0,0 +1,18 @@ + +Element#requestFullscreen() when not allowed to request fullscreen + + +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-same-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-same-manual.html new file mode 100644 index 00000000000..a475c18194b --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-same-manual.html @@ -0,0 +1,30 @@ + +Element#requestFullscreen() on the current fullscreen element + + + +
    +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-rect-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-rect-manual.html index 5661bfef760..9244d74e123 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-rect-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-rect-manual.html @@ -1,5 +1,5 @@ -Element.requestFullscreen() for SVG rect element +Element#requestFullscreen() for SVG rect element diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-svg-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-svg-manual.html index 553785d29b9..f971ee4d8c2 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-svg-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-svg-svg-manual.html @@ -1,5 +1,5 @@ -Element.requestFullscreen() for SVG svg element +Element#requestFullscreen() for SVG svg element diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-timing-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-timing-manual.html new file mode 100644 index 00000000000..f92b4f62928 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-timing-manual.html @@ -0,0 +1,37 @@ + +Element#requestFullscreen() timing + + + +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-top-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-top-manual.html index 3618344409b..49829160246 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-top-manual.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-top-manual.html @@ -1,5 +1,5 @@ -Element.requestFullscreen() for top element in fullscreen element stack +Element#requestFullscreen() for top element in fullscreen element stack diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-twice-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-twice-manual.html new file mode 100644 index 00000000000..4e843c8e348 --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-twice-manual.html @@ -0,0 +1,27 @@ + +Element#requestFullscreen() twice + + + +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-two-elements-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-two-elements-manual.html new file mode 100644 index 00000000000..1ca4355e32c --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-two-elements-manual.html @@ -0,0 +1,34 @@ + +Element#requestFullscreen() on two elements in the same document + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-two-iframes-manual.html b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-two-iframes-manual.html new file mode 100644 index 00000000000..60a880efd3b --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/element-request-fullscreen-two-iframes-manual.html @@ -0,0 +1,36 @@ + +Element#requestFullscreen() on two elements in different iframes + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/fullscreen/api/historical.html b/tests/wpt/web-platform-tests/fullscreen/api/historical.html new file mode 100644 index 00000000000..8b3e3c03e9c --- /dev/null +++ b/tests/wpt/web-platform-tests/fullscreen/api/historical.html @@ -0,0 +1,38 @@ + +Historical Fullscreen features + + + diff --git a/tests/wpt/web-platform-tests/gyroscope/OWNERS b/tests/wpt/web-platform-tests/gyroscope/OWNERS new file mode 100644 index 00000000000..cc7c3879319 --- /dev/null +++ b/tests/wpt/web-platform-tests/gyroscope/OWNERS @@ -0,0 +1,5 @@ +@zqzhang +@dontcallmedom +@tobie +@riju +@Honry diff --git a/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html b/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html new file mode 100644 index 00000000000..53d3b81cce6 --- /dev/null +++ b/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html @@ -0,0 +1,108 @@ + + +Gyroscope Sensor IDL tests + + + + + + + +
    + +
    +interface Event {
    +};
    +
    +interface EventTarget {
    +};
    +
    +interface EventHandler {
    +};
    +
    +interface Error {
    +};
    +
    +dictionary EventInit {
    +};
    +
    + +
    +[SecureContext]
    +interface Sensor : EventTarget {
    +  readonly attribute SensorState state;
    +  readonly attribute SensorReading? reading;
    +  void start();
    +  void stop();
    +  attribute EventHandler onchange;
    +  attribute EventHandler onactivate;
    +  attribute EventHandler onerror;
    +};
    +
    +dictionary SensorOptions {
    +  double? frequency;
    +};
    +
    +enum SensorState {
    +  "idle",
    +  "activating",
    +  "activated",
    +  "errored"
    +};
    +
    +[SecureContext]
    +interface SensorReading {
    +  readonly attribute DOMHighResTimeStamp timeStamp;
    +};
    +
    +[SecureContext, Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
    +interface SensorErrorEvent : Event {
    +  readonly attribute Error error;
    +};
    +
    +dictionary SensorErrorEventInit : EventInit {
    +  required Error error;
    +};
    +
    +
    + +
    +[Constructor(optional SensorOptions sensorOptions)]
    +interface Gyroscope : Sensor {
    +  readonly attribute GyroscopeReading? reading;
    +};
    +
    +[Constructor(GyroscopeReadingInit GyroscopeReadingInit)]
    +interface GyroscopeReading : SensorReading {
    +    readonly attribute unrestricted double x;
    +    readonly attribute unrestricted double y;
    +    readonly attribute unrestricted double z;
    +};
    +
    +dictionary GyroscopeReadingInit {
    +    unrestricted double x = 0;
    +    unrestricted double y = 0;
    +    unrestricted double z = 0;
    +};
    +
    + + diff --git a/tests/wpt/web-platform-tests/html-media-capture/capture_fallback_file_upload.html b/tests/wpt/web-platform-tests/html-media-capture/capture_fallback_file_upload-manual.html similarity index 100% rename from tests/wpt/web-platform-tests/html-media-capture/capture_fallback_file_upload.html rename to tests/wpt/web-platform-tests/html-media-capture/capture_fallback_file_upload-manual.html diff --git a/tests/wpt/web-platform-tests/html/OWNERS b/tests/wpt/web-platform-tests/html/OWNERS index c98635fc684..76cdd41ab6a 100644 --- a/tests/wpt/web-platform-tests/html/OWNERS +++ b/tests/wpt/web-platform-tests/html/OWNERS @@ -3,7 +3,6 @@ @gsnedders @jdm @jgraham -@plehegar @sideshowbarker @zcorpan @zqzhang diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html new file mode 100644 index 00000000000..55b73e11535 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html @@ -0,0 +1 @@ +Welcome to A. \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html new file mode 100644 index 00000000000..8f2fc900dda --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html @@ -0,0 +1 @@ +Welcome to B. \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html new file mode 100644 index 00000000000..db494e878e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html @@ -0,0 +1 @@ +Welcome to C. \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html new file mode 100644 index 00000000000..d7037343d7d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html @@ -0,0 +1,38 @@ +Test same-URL navigation and its effects on history + + +
    + + diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html new file mode 100644 index 00000000000..19e23b5c2a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html @@ -0,0 +1,329 @@ + + + + +Cross-origin behavior of Window and Location + + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/html/dom/elements-embedded.js b/tests/wpt/web-platform-tests/html/dom/elements-embedded.js index fb9fb91d472..1b6e4215aa6 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-embedded.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-embedded.js @@ -10,6 +10,7 @@ var embeddedElements = { isMap: "boolean", width: {type: "unsigned long", customGetter: true}, height: {type: "unsigned long", customGetter: true}, + referrerPolicy: {type: "enum", keywords: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"]}, // Obsolete name: "string", @@ -27,8 +28,11 @@ var embeddedElements = { name: "string", sandbox: "settable tokenlist", allowFullscreen: "boolean", + allowUserMedia: "boolean", + allowPaymentRequest: "boolean", width: "string", height: "string", + referrerPolicy: {type: "enum", keywords: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"]}, // Obsolete align: "string", @@ -137,6 +141,7 @@ var embeddedElements = { ping: "string", rel: "string", relList: {type: "tokenlist", domAttrName: "rel"}, + referrerPolicy: {type: "enum", keywords: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"]}, // HTMLHyperlinkElementUtils href: "url", diff --git a/tests/wpt/web-platform-tests/html/dom/elements-metadata.js b/tests/wpt/web-platform-tests/html/dom/elements-metadata.js index 05d61a74d72..73cbfc1a454 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-metadata.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-metadata.js @@ -12,10 +12,14 @@ var metadataElements = { crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}, isNullable: true, defaultVal: null, invalidVal: "anonymous"}, rel: "string", relList: {type: "tokenlist", domAttrName: "rel"}, + // as: {}, XXX TODO: reflecting IDL attribute is an IDL enumeration media: "string", + nonce: "string", + integrity: "string", hreflang: "string", type: "string", sizes: "settable tokenlist", + referrerPolicy: {type: "enum", keywords: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"]}, // Obsolete charset: "string", diff --git a/tests/wpt/web-platform-tests/html/dom/elements-misc.js b/tests/wpt/web-platform-tests/html/dom/elements-misc.js index 8990afecfb9..e0d5399b32f 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-misc.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-misc.js @@ -14,6 +14,8 @@ var miscElements = { // TODO: async attribute (complicated). defer: "boolean", crossOrigin: {type: "enum", keywords: ["anonymous", "use-credentials"], nonCanon:{"": "anonymous"}, isNullable: true, defaultVal: null, invalidVal: "anonymous"}, + nonce: "string", + integrity: "string", }, noscript: {}, diff --git a/tests/wpt/web-platform-tests/html/dom/elements-text.js b/tests/wpt/web-platform-tests/html/dom/elements-text.js index 268eb269cb4..56157fabf19 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-text.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-text.js @@ -9,6 +9,7 @@ var textElements = { relList: {type: "tokenlist", domAttrName: "rel"}, hreflang: "string", type: "string", + referrerPolicy: {type: "enum", keywords: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"]}, // HTMLHyperlinkElementUtils href: "url", diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.html b/tests/wpt/web-platform-tests/html/dom/interfaces.html index d698f3bff26..b9ab7b0b439 100644 --- a/tests/wpt/web-platform-tests/html/dom/interfaces.html +++ b/tests/wpt/web-platform-tests/html/dom/interfaces.html @@ -1017,15 +1017,20 @@ interface HTMLBaseElement : HTMLElement { attribute DOMString target; }; +[HTMLConstructor] interface HTMLLinkElement : HTMLElement { - attribute DOMString href; - attribute DOMString? crossOrigin; - attribute DOMString rel; - [PutForwards=value] readonly attribute DOMTokenList relList; - attribute DOMString media; - attribute DOMString hreflang; - attribute DOMString type; - [PutForwards=value] readonly attribute DOMTokenList sizes; + [CEReactions] attribute USVString href; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString rel; + // [CEReactions] attribute RequestDestination as; // (default "") XXX TODO + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString media; + [CEReactions] attribute DOMString nonce; + [CEReactions] attribute DOMString integrity; + [CEReactions] attribute DOMString hreflang; + [CEReactions] attribute DOMString type; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList sizes; + [CEReactions] attribute DOMString referrerPolicy; // also has obsolete members }; @@ -1098,16 +1103,21 @@ interface HTMLDivElement : HTMLElement { // also has obsolete members }; +[HTMLConstructor] interface HTMLAnchorElement : HTMLElement { - attribute DOMString target; - attribute DOMString download; + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString download; [CEReactions] attribute USVString ping; - attribute DOMString rel; - [PutForwards=value] readonly attribute DOMTokenList relList; - attribute DOMString hreflang; - attribute DOMString type; + [CEReactions] attribute DOMString rel; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString hreflang; + [CEReactions] attribute DOMString type; - attribute DOMString text; + [CEReactions] attribute DOMString text; + + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members }; HTMLAnchorElement implements HTMLHyperlinkElementUtils; @@ -1138,37 +1148,41 @@ partial interface HTMLSourceElement { attribute DOMString media; }; -[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] +[HTMLConstructor, NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] interface HTMLImageElement : HTMLElement { - attribute DOMString alt; - attribute DOMString src; - attribute DOMString srcset; - attribute DOMString sizes; - attribute DOMString? crossOrigin; - attribute DOMString useMap; - attribute boolean isMap; - attribute unsigned long width; - attribute unsigned long height; + [CEReactions] attribute DOMString alt; + [CEReactions] attribute USVString src; + [CEReactions] attribute USVString srcset; + [CEReactions] attribute DOMString sizes; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString useMap; + [CEReactions] attribute boolean isMap; + [CEReactions] attribute unsigned long width; + [CEReactions] attribute unsigned long height; readonly attribute unsigned long naturalWidth; readonly attribute unsigned long naturalHeight; readonly attribute boolean complete; - readonly attribute DOMString currentSrc; + readonly attribute USVString currentSrc; + [CEReactions] attribute DOMString referrerPolicy; // also has obsolete members }; +[HTMLConstructor] interface HTMLIFrameElement : HTMLElement { - attribute DOMString src; - attribute DOMString srcdoc; - attribute DOMString name; - [PutForwards=value] readonly attribute DOMTokenList sandbox; - attribute boolean allowFullscreen; - attribute DOMString width; - attribute DOMString height; + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString srcdoc; + [CEReactions] attribute DOMString name; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox; + [CEReactions] attribute boolean allowFullscreen; + [CEReactions] attribute boolean allowUserMedia; + [CEReactions] attribute boolean allowPaymentRequest; + [CEReactions] attribute DOMString width; + [CEReactions] attribute DOMString height; + [CEReactions] attribute DOMString referrerPolicy; readonly attribute Document? contentDocument; readonly attribute WindowProxy? contentWindow; - - // also has obsolete members + Document? getSVGDocument(); }; interface HTMLEmbedElement : HTMLElement { @@ -1416,16 +1430,19 @@ interface HTMLMapElement : HTMLElement { readonly attribute HTMLCollection areas; }; +[HTMLConstructor] interface HTMLAreaElement : HTMLElement { - attribute DOMString alt; - attribute DOMString coords; - attribute DOMString shape; - attribute DOMString target; - attribute DOMString download; + [CEReactions] attribute DOMString alt; + [CEReactions] attribute DOMString coords; + [CEReactions] attribute DOMString shape; + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString download; [CEReactions] attribute USVString ping; - attribute DOMString rel; - [PutForwards=value] readonly attribute DOMTokenList relList; - // hreflang and type are not reflected + [CEReactions] attribute DOMString rel; + [CEReactions, SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members }; HTMLAreaElement implements HTMLHyperlinkElementUtils; @@ -1835,8 +1852,8 @@ dictionary RelatedEventInit : EventInit { interface HTMLDialogElement : HTMLElement { attribute boolean open; attribute DOMString returnValue; - void show(optional (MouseEvent or Element) anchor); - void showModal(optional (MouseEvent or Element) anchor); + void show(); + void showModal(); void close(optional DOMString returnValue); }; @@ -2395,6 +2412,7 @@ typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; [NoInterfaceObject] interface GlobalEventHandlers { attribute EventHandler onabort; + attribute EventHandler onauxclick; attribute EventHandler onblur; attribute EventHandler oncancel; attribute EventHandler oncanplay; @@ -2969,24 +2987,24 @@ partial interface HTMLHtmlElement { }; partial interface HTMLIFrameElement { - attribute DOMString align; - attribute DOMString scrolling; - attribute DOMString frameBorder; - attribute DOMString longDesc; + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString scrolling; + [CEReactions] attribute DOMString frameBorder; + [CEReactions] attribute USVString longDesc; - [TreatNullAs=EmptyString] attribute DOMString marginHeight; - [TreatNullAs=EmptyString] attribute DOMString marginWidth; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString marginHeight; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString marginWidth; }; partial interface HTMLImageElement { - attribute DOMString name; - attribute DOMString lowsrc; - attribute DOMString align; - attribute unsigned long hspace; - attribute unsigned long vspace; - attribute DOMString longDesc; + [CEReactions] attribute DOMString name; + [CEReactions] attribute USVString lowsrc; + [CEReactions] attribute DOMString align; + [CEReactions] attribute unsigned long hspace; + [CEReactions] attribute unsigned long vspace; + [CEReactions] attribute USVString longDesc; - [TreatNullAs=EmptyString] attribute DOMString border; + [CEReactions, TreatNullAs=EmptyString] attribute DOMString border; }; partial interface HTMLInputElement { @@ -3003,9 +3021,9 @@ partial interface HTMLLIElement { }; partial interface HTMLLinkElement { - attribute DOMString charset; - attribute DOMString rev; - attribute DOMString target; + [CEReactions] attribute DOMString charset; + [CEReactions] attribute DOMString rev; + [CEReactions] attribute DOMString target; }; partial interface HTMLMenuElement { diff --git a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/cross-domain/001.xhtml b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/cross-domain/001.manual.xhtml similarity index 96% rename from tests/wpt/web-platform-tests/html/editing/dnd/canvas/cross-domain/001.xhtml rename to tests/wpt/web-platform-tests/html/editing/dnd/canvas/cross-domain/001.manual.xhtml index d99c73e6e0e..2a2c7f547cc 100644 --- a/tests/wpt/web-platform-tests/html/editing/dnd/canvas/cross-domain/001.xhtml +++ b/tests/wpt/web-platform-tests/html/editing/dnd/canvas/cross-domain/001.manual.xhtml @@ -2,7 +2,7 @@ Cross-domain canvas data must not populate the dataTransfer - + +
    + +
    +interface Event {
    +};
    +
    +interface EventTarget {
    +};
    +
    +interface EventHandler {
    +};
    +
    +interface Error {
    +};
    +
    +dictionary EventInit {
    +};
    +
    + +
    +[SecureContext]
    +interface Sensor : EventTarget {
    +  readonly attribute SensorState state;
    +  readonly attribute SensorReading? reading;
    +  void start();
    +  void stop();
    +  attribute EventHandler onchange;
    +  attribute EventHandler onactivate;
    +  attribute EventHandler onerror;
    +};
    +
    +dictionary SensorOptions {
    +  double? frequency;
    +};
    +
    +enum SensorState {
    +  "idle",
    +  "activating",
    +  "activated",
    +  "errored"
    +};
    +
    +[SecureContext]
    +interface SensorReading {
    +  readonly attribute DOMHighResTimeStamp timeStamp;
    +};
    +
    +[SecureContext, Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
    +interface SensorErrorEvent : Event {
    +  readonly attribute Error error;
    +};
    +
    +dictionary SensorErrorEventInit : EventInit {
    +  required Error error;
    +};
    +
    +
    + +
    +[Constructor(optional SensorOptions sensorOptions)]
    +interface Magnetometer : Sensor {
    +  readonly attribute MagnetometerReading? reading;
    +};
    +
    +[Constructor(MagnetometerReadingInit magnetometerReadingInit)]
    +interface MagnetometerReading : SensorReading {
    +    readonly attribute double x;
    +    readonly attribute double y;
    +    readonly attribute double z;
    +};
    +
    +dictionary MagnetometerReadingInit {
    +  double x = 0;
    +  double y = 0;
    +  double z = 0;
    +};
    +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-1-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-1-ref.html index 0500148d636..9fca6f49632 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-1-ref.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/lengths-1-ref.html @@ -3,9 +3,6 @@ MathML lengths (reference) - - -

    Test passes if there is a green square and no red.

    diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_data_uri.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_data_uri.html new file mode 100644 index 00000000000..19193b26262 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_data_uri.html @@ -0,0 +1,21 @@ + + + + + Original file for data:uri... to test opening an data:uri path within an iframe. + + + + +

    Description

    +

    This test passed.

    + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html new file mode 100644 index 00000000000..7bdd5d50f21 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html @@ -0,0 +1,71 @@ + + + + +Navigation Timing 2 IDL tests + + + + + + + + + + + +
    +enum NavigationType {
    +    "navigate",
    +    "reload",
    +    "back_forward",
    +    "prerender"
    +};
    +
    +interface PerformanceNavigationTiming : PerformanceResourceTiming {
    +    readonly attribute DOMHighResTimeStamp unloadEventStart;
    +    readonly attribute DOMHighResTimeStamp unloadEventEnd;
    +    readonly attribute DOMHighResTimeStamp domInteractive;
    +    readonly attribute DOMHighResTimeStamp domContentLoadedEventStart;
    +    readonly attribute DOMHighResTimeStamp domContentLoadedEventEnd;
    +    readonly attribute DOMHighResTimeStamp domComplete;
    +    readonly attribute DOMHighResTimeStamp loadEventStart;
    +    readonly attribute DOMHighResTimeStamp loadEventEnd;
    +    readonly attribute NavigationType      type;
    +    readonly attribute unsigned short      redirectCount;
    +};
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_exist.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_exist.html new file mode 100644 index 00000000000..3d0a83b9ab0 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_exist.html @@ -0,0 +1,66 @@ + + + + + Navigation Timing 2 WPT + + + + + + +

    Description

    +

    This test validates that PerformanceObserver can observe nav timing 2 instance and that the expected attributes in nav timing 2 instance exist (but does not validate that the values are correct).

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html new file mode 100644 index 00000000000..cd335233696 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_attributes_values.html @@ -0,0 +1,98 @@ + + + + + Navigation Timing 2 WPT + + + + + + +

    Description

    +

    This test validates that the values of nav timing 2 instance's timing-related attributes are in certain order and the others are of expected values.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_open.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_open.html new file mode 100644 index 00000000000..bc06ed5840a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_document_open.html @@ -0,0 +1,100 @@ + + + + + Navigation Timing 2 WPT + + + + + + + +

    Description

    +

    This test validates window.performance.getEntriesByType("navigation") remains constant when a + document is replaced using document.open.

    + +

    This page should be loaded with a yellow frame below. It then replaces the + document in that frame with a green document.

    + +

    The test passes if all of the checks to performance.getEntriesByType("navigation") are correct and + the frame below ends with a green background.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html new file mode 100644 index 00000000000..cf478b955b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html @@ -0,0 +1,74 @@ + + + + + Navigation Timing 2 WPT + + + + + + +

    Description

    +

    This test validates that nav timing 2 instance can be accessed by three different accessors once available: window.performance.getEntries()/getEntriesByType("navigation")/getEntriesByName("document")

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_within_document.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_within_document.html new file mode 100644 index 00000000000..f39ca057695 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_within_document.html @@ -0,0 +1,83 @@ + + + + + Navigation Timing 2 WPT + + + + + + +

    Description

    +

    This test validates that all of the window.performance.getEntriesByType("navigation") attributes remain unchanged after an in document navigation (URL fragment change).

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward.html new file mode 100644 index 00000000000..c4b57581069 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward.html @@ -0,0 +1,81 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + +

    + Description

    +

    + This test validates the value of window.performance.getEntriesByType("navigation")[0].type with a forward + and back navigation.

    + +

    This page should be loaded with a yellow background frame below. It should turn green for a starting + navigation, back to yellow for a back navigation and then back to green again for a forward navigation.

    + +

    Along the navigation timeline the window.performance.getEntriesByType("navigation")[0].type is checked for back_forward.

    + +

    This test passes if all of the checks to the window.performance.getEntriesByType("navigation")[0].type are correct throughout the navigation + scenario and the frame below ends with a green background. Otherwise, this test fails.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html new file mode 100644 index 00000000000..efaef1ec0bb --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html @@ -0,0 +1,32 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + +

    + Description

    +

    + This test validates the value of window.performance.getEntriesByType("navigation")[0].type to be navigate.

    + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_reload.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_reload.html new file mode 100644 index 00000000000..74b85c9dbb5 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigation_type_reload.html @@ -0,0 +1,53 @@ + + + + + Navigation Timing 2 WPT + + + + + + + +

    Description

    +

    This test validates the value of window.performance.getEntriesByType("navigation")[0].(type/unloadEventEnd/unloadEventStart) with a reloaded navigation.

    + +

    This page should be loaded with a green background frame below. The frame will be automatically reloaded + and then verified that +

      +
    • The window.performance.getEntriesByType("navigation").type = "reload" after reload
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventStart > 0 after reload
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventEnd > 0 after reload
    • +
    +

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_open_blank_page.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_open_blank_page.html new file mode 100644 index 00000000000..dbd5751b94d --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_open_blank_page.html @@ -0,0 +1,28 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + + +

    Description

    +

    This test validates there does not exist a navigation timing instance when opening internal pages like about:blank.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_open_data_uri.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_open_data_uri.html new file mode 100644 index 00000000000..70ba38f6cb9 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_open_data_uri.html @@ -0,0 +1,15 @@ + + + + + Navigation Timing 2 WPT + + + + +

    Description

    +

    This test validates there does not exist a navigation timing instance when opening a data uri. This data uri points to nav2_data_uri.html. This test passes when it displays so in the iframe below.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_none.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_none.html new file mode 100644 index 00000000000..97437e1a5ef --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_none.html @@ -0,0 +1,33 @@ + + + + + Navigation Timing 2 WPT + + + + + + +

    Description

    +

    This test validates that the value of the window.performance.getEntriesByType("navigation")[0].redirectCount attribute, as well as the window.performance.getEntriesByType("navigation")[0].redirectStart and redirectEnd attributes on a non-redirected navigation.

    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html new file mode 100644 index 00000000000..41b24dd7dca --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html @@ -0,0 +1,46 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + + +

    Description

    +

    This test validates the values of the window.performance.redirectCount and the + window.performance.timing.redirectStart/End times for a same-origin server side redirect navigation.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver.html new file mode 100644 index 00000000000..06c9b7f3b67 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver.html @@ -0,0 +1,49 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + + +

    Description

    +

    This test validates the values of the window.performance.getEntriesByType("navigation")[0].redirectCount and the + window.performance.getEntriesByType("navigation")[0].redirectStart/End times for a cross-origin server side redirect navigation.

    + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver_opt_in.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver_opt_in.html new file mode 100644 index 00000000000..11dc5b7df0a --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_xserver_opt_in.html @@ -0,0 +1,57 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + + +

    Description

    +

    This test validates the values of the window.performance.getEntriesByType("navigation")[0].redirectCount and the + window.performance.getEntriesByType("navigation")[0].redirectStart/End times for a cross-origin server side redirect navigation when the redirect chooses to opt-in.

    + + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html new file mode 100644 index 00000000000..1d77ab6bae1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html @@ -0,0 +1,76 @@ + + + + + Navigation Timing 2 WPT + + + + + + +

    Description

    +

    This test validates that each window has a unique nav timing 2 instance.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_no_previous_document.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_no_previous_document.html new file mode 100644 index 00000000000..3e7b0721d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_no_previous_document.html @@ -0,0 +1,36 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + + +

    Description

    +

    This test validates the unload event times are 0 when there is no previous document.

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html new file mode 100644 index 00000000000..4db4dd996d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_previous_document_cross_origin.html @@ -0,0 +1,45 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + +

    Description

    +

    This test validates the value of window.performance.getEntriesByType("navigation")[0].(type/unloadEventEnd/unloadEventStart) with a navigation on top of a cross-origin document.

    + +

    This page should be loaded with a green background frame below. The frame will be automatically reloaded + and then verified that +

      +
    • The window.performance.getEntriesByType("navigation").type = "navigate"
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventStart = 0
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventEnd = 0
    • +
    +

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html new file mode 100644 index 00000000000..8a7f57d7460 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_with_cross_origin_redirects.html @@ -0,0 +1,57 @@ + + + + + Navigation Timing 2 WPT + + + + + + + + +

    Description

    +

    This test validates the value of window.performance.getEntriesByType("navigation")[0].(type/unloadEventEnd/unloadEventStart) with a reloaded navigation.

    + +

    This page should be loaded with a green background frame below. The frame will be automatically reloaded + and then verified that +

      +
    • The window.performance.getEntriesByType("navigation").type = "navigate"
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventStart == 0
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventEnd == 0
    • +
    +

    + + + + diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_with_previous_document.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_with_previous_document.html new file mode 100644 index 00000000000..90f336d1340 --- /dev/null +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_unloadEvents_with_previous_document.html @@ -0,0 +1,42 @@ + + + + + Navigation Timing 2 WPT + + + + + + + +

    Description

    +

    This test validates the value of window.performance.getEntriesByType("navigation")[0].(type/unloadEventEnd/unloadEventStart) with a reloaded navigation.

    + +

    This page should be loaded with a green background frame below. The frame will be automatically reloaded + and then verified that +

      +
    • The window.performance.getEntriesByType("navigation").unloadEventStart > 0 after reload
    • +
    • The window.performance.getEntriesByType("navigation").unloadEventEnd > 0 after reload
    • +
    +

    + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.copy.html new file mode 100644 index 00000000000..bc2ed9cee5e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.copy.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.copy + + + + +

    2d.composite.canvas.copy

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js new file mode 100644 index 00000000000..35dd3d9facf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.copy.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.copy +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'copy'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html new file mode 100644 index 00000000000..c36b232b6dd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.destination-atop + + + + +

    2d.composite.canvas.destination-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js new file mode 100644 index 00000000000..17181cb4224 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-atop.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.destination-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-atop'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html new file mode 100644 index 00000000000..f7249e40420 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-in.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.destination-in + + + + +

    2d.composite.canvas.destination-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js new file mode 100644 index 00000000000..12504f950a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-in.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.destination-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-in'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html new file mode 100644 index 00000000000..454cf7544ac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-out.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.destination-out + + + + +

    2d.composite.canvas.destination-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js new file mode 100644 index 00000000000..ed8835bf6e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-out.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.destination-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-out'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html new file mode 100644 index 00000000000..872bfe08c8c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-over.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.destination-over + + + + +

    2d.composite.canvas.destination-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js new file mode 100644 index 00000000000..8d350c5de90 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.destination-over.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.destination-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-over'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.lighter.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.lighter.html new file mode 100644 index 00000000000..781b6c1deef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.lighter.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.lighter + + + + +

    2d.composite.canvas.lighter

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js new file mode 100644 index 00000000000..060c6a3ffa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.lighter.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.lighter +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'lighter'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html new file mode 100644 index 00000000000..22eedc08120 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-atop.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.source-atop + + + + +

    2d.composite.canvas.source-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js new file mode 100644 index 00000000000..0005bca4c37 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-atop.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.source-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'source-atop'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-in.html new file mode 100644 index 00000000000..564b864457b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-in.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.source-in + + + + +

    2d.composite.canvas.source-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js new file mode 100644 index 00000000000..82a508e7525 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-in.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.source-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'source-in'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-out.html new file mode 100644 index 00000000000..431d6bcf18e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-out.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.source-out + + + + +

    2d.composite.canvas.source-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js new file mode 100644 index 00000000000..ce16d3bc6a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-out.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.source-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'source-out'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-over.html new file mode 100644 index 00000000000..123aa5e64d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-over.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.source-over + + + + +

    2d.composite.canvas.source-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js new file mode 100644 index 00000000000..b5dcfff3cd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.source-over.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.source-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'source-over'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.xor.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.xor.html new file mode 100644 index 00000000000..49ae6c08c68 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.xor.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.composite.canvas.xor + + + + +

    2d.composite.canvas.xor

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js new file mode 100644 index 00000000000..f3d50255ac5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.canvas.xor.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.canvas.xor +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); +var ctx2 = offscreenCanvas2.getContext('2d'); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'xor'; + ctx.drawImage(offscreenCanvas2, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.copy.html new file mode 100644 index 00000000000..4761b047a68 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.copy.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.copy + + + + +

    2d.composite.clip.copy

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js new file mode 100644 index 00000000000..fc4a4cb58d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.copy.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.copy +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html new file mode 100644 index 00000000000..aa863d15c76 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-atop.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.destination-atop + + + + +

    2d.composite.clip.destination-atop

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js new file mode 100644 index 00000000000..6c5807889ed --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-atop.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.destination-atop +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-in.html new file mode 100644 index 00000000000..3bde3ff7c5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-in.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.destination-in + + + + +

    2d.composite.clip.destination-in

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js new file mode 100644 index 00000000000..bccf3a8869a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-in.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.destination-in +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-out.html new file mode 100644 index 00000000000..5ded0b36154 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-out.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.destination-out + + + + +

    2d.composite.clip.destination-out

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js new file mode 100644 index 00000000000..fee113a1c61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-out.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.destination-out +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-out'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-over.html new file mode 100644 index 00000000000..4776e0e2160 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-over.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.destination-over + + + + +

    2d.composite.clip.destination-over

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js new file mode 100644 index 00000000000..5116844113d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.destination-over.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.destination-over +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-over'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.lighter.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.lighter.html new file mode 100644 index 00000000000..bf1cd8bb1b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.lighter.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.lighter + + + + +

    2d.composite.clip.lighter

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js new file mode 100644 index 00000000000..e9e9fc9cd63 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.lighter.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.lighter +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'lighter'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-atop.html new file mode 100644 index 00000000000..3a0f0df5de6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-atop.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.source-atop + + + + +

    2d.composite.clip.source-atop

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js new file mode 100644 index 00000000000..a6e0fdcf828 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-atop.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.source-atop +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-atop'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-in.html new file mode 100644 index 00000000000..15e0aee5532 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-in.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.source-in + + + + +

    2d.composite.clip.source-in

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js new file mode 100644 index 00000000000..6b520c1b392 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-in.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.source-in +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-out.html new file mode 100644 index 00000000000..97de42d9ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-out.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.source-out + + + + +

    2d.composite.clip.source-out

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js new file mode 100644 index 00000000000..72a8f2911bb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-out.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.source-out +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-over.html new file mode 100644 index 00000000000..9ac231d6a45 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-over.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.source-over + + + + +

    2d.composite.clip.source-over

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js new file mode 100644 index 00000000000..a5946266514 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.source-over.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.source-over +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-over'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.xor.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.xor.html new file mode 100644 index 00000000000..fb99584888c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.xor.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.clip.xor + + + + +

    2d.composite.clip.xor

    +

    fill() does not affect pixels outside the clip region.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js new file mode 100644 index 00000000000..629968029a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.clip.xor.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.clip.xor +// Description:fill() does not affect pixels outside the clip region. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() does not affect pixels outside the clip region."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'xor'; +ctx.rect(-20, -20, 10, 10); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html new file mode 100644 index 00000000000..0ccfea9a6ed --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.canvas + + + + +

    2d.composite.globalAlpha.canvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js new file mode 100644 index 00000000000..ab8a6424acd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvas.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.canvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html new file mode 100644 index 00000000000..f797c637649 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.canvascopy + + + + +

    2d.composite.globalAlpha.canvascopy

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js new file mode 100644 index 00000000000..bc8daaf91ad --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvascopy.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.canvascopy +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy' +ctx.globalAlpha = 0.51; +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,130, "50,25", "0,255,0,130", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html new file mode 100644 index 00000000000..ea6c5ac2d68 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.canvaspattern + + + + +

    2d.composite.globalAlpha.canvaspattern

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js new file mode 100644 index 00000000000..08b5d6ad9db --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.canvaspattern.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.canvaspattern +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = ctx.createPattern(offscreenCanvas2, 'no-repeat'); +ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html new file mode 100644 index 00000000000..6a15c0c8978 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.default.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.default + + + + +

    2d.composite.globalAlpha.default

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js new file mode 100644 index 00000000000..c961928284e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.default.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.default +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.globalAlpha, 1.0, "ctx.globalAlpha", "1.0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html new file mode 100644 index 00000000000..13acdaffff5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.fill + + + + +

    2d.composite.globalAlpha.fill

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js new file mode 100644 index 00000000000..d2fbf0827b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.fill.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.fill +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html new file mode 100644 index 00000000000..f24e06a08e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.image.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.image + + + + +

    2d.composite.globalAlpha.image

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js new file mode 100644 index 00000000000..4974687e8d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.image.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.image +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html new file mode 100644 index 00000000000..33fa23a8f97 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.imagepattern + + + + +

    2d.composite.globalAlpha.imagepattern

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js new file mode 100644 index 00000000000..d805f69f47c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.imagepattern.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.imagepattern +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations + ctx.fillRect(0, 0, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 2,253,0,255, "50,25", "2,253,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html new file mode 100644 index 00000000000..f422cfea233 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.invalid + + + + +

    2d.composite.globalAlpha.invalid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js new file mode 100644 index 00000000000..095b9446b7f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.invalid.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.invalid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalAlpha = 0.5; +var a = ctx.globalAlpha; // might not be exactly 0.5, if it is rounded/quantised, so remember for future comparisons +ctx.globalAlpha = Infinity; +_assertSame(ctx.globalAlpha, a, "ctx.globalAlpha", "a"); +ctx.globalAlpha = -Infinity; +_assertSame(ctx.globalAlpha, a, "ctx.globalAlpha", "a"); +ctx.globalAlpha = NaN; +_assertSame(ctx.globalAlpha, a, "ctx.globalAlpha", "a"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html new file mode 100644 index 00000000000..bde15e2d8c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.range.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.composite.globalAlpha.range + + + + +

    2d.composite.globalAlpha.range

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js new file mode 100644 index 00000000000..f38ee56f9a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.globalAlpha.range.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.globalAlpha.range +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalAlpha = 0.5; +var a = ctx.globalAlpha; // might not be exactly 0.5, if it is rounded/quantised, so remember for future comparisons +ctx.globalAlpha = 1.1; +_assertSame(ctx.globalAlpha, a, "ctx.globalAlpha", "a"); +ctx.globalAlpha = -0.1; +_assertSame(ctx.globalAlpha, a, "ctx.globalAlpha", "a"); +ctx.globalAlpha = 0; +_assertSame(ctx.globalAlpha, 0, "ctx.globalAlpha", "0"); +ctx.globalAlpha = 1; +_assertSame(ctx.globalAlpha, 1, "ctx.globalAlpha", "1"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.copy.html new file mode 100644 index 00000000000..3001aa1c491 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.copy.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.copy + + + + +

    2d.composite.image.copy

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.copy.worker.js new file mode 100644 index 00000000000..0476e3a1149 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.copy.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.copy +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,191, "50,25", "255,255,0,191", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-atop.html new file mode 100644 index 00000000000..2b18c36c710 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-atop.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.destination-atop + + + + +

    2d.composite.image.destination-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js new file mode 100644 index 00000000000..b5870047a2b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-atop.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.destination-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 128,255,128,191, "50,25", "128,255,128,191", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-in.html new file mode 100644 index 00000000000..cfde801496f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-in.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.destination-in + + + + +

    2d.composite.image.destination-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js new file mode 100644 index 00000000000..eff6475a5da --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-in.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.destination-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,96, "50,25", "0,255,255,96", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-out.html new file mode 100644 index 00000000000..1f705119adb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-out.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.destination-out + + + + +

    2d.composite.image.destination-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js new file mode 100644 index 00000000000..fda73d92fc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-out.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.destination-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-out'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,32, "50,25", "0,255,255,32", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-over.html new file mode 100644 index 00000000000..1b21d2d9f53 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-over.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.destination-over + + + + +

    2d.composite.image.destination-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js new file mode 100644 index 00000000000..620911dd4f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.destination-over.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.destination-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-over'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 109,255,146,223, "50,25", "109,255,146,223", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.lighter.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.lighter.html new file mode 100644 index 00000000000..f898e447624 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.lighter.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.lighter + + + + +

    2d.composite.image.lighter

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js new file mode 100644 index 00000000000..574de5c3408 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.lighter.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.lighter +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'lighter'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 191,255,128,255, "50,25", "191,255,128,255", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-atop.html new file mode 100644 index 00000000000..012d8920159 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-atop.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.source-atop + + + + +

    2d.composite.image.source-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js new file mode 100644 index 00000000000..b159a7d0a5c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-atop.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.source-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-atop'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-in.html new file mode 100644 index 00000000000..f41fc4aa10d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-in.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.source-in + + + + +

    2d.composite.image.source-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js new file mode 100644 index 00000000000..789fcb9039d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-in.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.source-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-out.html new file mode 100644 index 00000000000..91860e78795 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-out.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.source-out + + + + +

    2d.composite.image.source-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js new file mode 100644 index 00000000000..583d2222e7b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-out.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.source-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,96, "50,25", "255,255,0,96", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-over.html new file mode 100644 index 00000000000..b8e52cac0ad --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-over.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.source-over + + + + +

    2d.composite.image.source-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js new file mode 100644 index 00000000000..b459339e4fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.source-over.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.source-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-over'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 219,255,36,223, "50,25", "219,255,36,223", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.xor.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.xor.html new file mode 100644 index 00000000000..d050711da1e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.xor.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.composite.image.xor + + + + +

    2d.composite.image.xor

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.xor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.xor.worker.js new file mode 100644 index 00000000000..bd77785b558 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.image.xor.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.image.xor +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'xor'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 191,255,64,128, "50,25", "191,255,64,128", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html new file mode 100644 index 00000000000..7c7016e4de4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.casesensitive.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.casesensitive + + + + +

    2d.composite.operation.casesensitive

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js new file mode 100644 index 00000000000..091dfd61bbf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.casesensitive.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.casesensitive +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'Source-over'; +_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.clear.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.clear.html new file mode 100644 index 00000000000..cb15204ac61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.clear.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.clear + + + + +

    2d.composite.operation.clear

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js new file mode 100644 index 00000000000..1efd1494e60 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.clear.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.clear +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'clear'; +_assertSame(ctx.globalCompositeOperation, 'clear', "ctx.globalCompositeOperation", "'clear'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.darker.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.darker.html new file mode 100644 index 00000000000..1f4cfb07a65 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.darker.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.darker + + + + +

    2d.composite.operation.darker

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js new file mode 100644 index 00000000000..2b282f5640a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.darker.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.darker +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'darker'; +_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.default.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.default.html new file mode 100644 index 00000000000..b114e149479 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.default.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.composite.operation.default + + + + +

    2d.composite.operation.default

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.default.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.default.worker.js new file mode 100644 index 00000000000..906f1bb3390 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.default.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.default +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.globalCompositeOperation, 'source-over', "ctx.globalCompositeOperation", "'source-over'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.get.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.get.html new file mode 100644 index 00000000000..e3c8f9ee2fb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.get.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.operation.get + + + + +

    2d.composite.operation.get

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.get.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.get.worker.js new file mode 100644 index 00000000000..2dd50fa6d97 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.get.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.get +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var modes = ['source-atop', 'source-in', 'source-out', 'source-over', + 'destination-atop', 'destination-in', 'destination-out', 'destination-over', + 'lighter', 'copy', 'xor']; +for (var i = 0; i < modes.length; ++i) +{ + ctx.globalCompositeOperation = modes[i]; + _assertSame(ctx.globalCompositeOperation, modes[i], "ctx.globalCompositeOperation", "modes[\""+(i)+"\"]"); +} + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.highlight.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.highlight.html new file mode 100644 index 00000000000..1bfdb3b1657 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.highlight.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.highlight + + + + +

    2d.composite.operation.highlight

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js new file mode 100644 index 00000000000..fac64fce135 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.highlight.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.highlight +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'highlight'; +_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html new file mode 100644 index 00000000000..7e1d65c33b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.nullsuffix + + + + +

    2d.composite.operation.nullsuffix

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js new file mode 100644 index 00000000000..831f9477418 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.nullsuffix.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.nullsuffix +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'source-over\0'; +_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.over.html new file mode 100644 index 00000000000..71a34454bbf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.over.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.over + + + + +

    2d.composite.operation.over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.over.worker.js new file mode 100644 index 00000000000..89c26345f3c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.over.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'over'; +_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html new file mode 100644 index 00000000000..36e990ff05d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.unrecognised.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.composite.operation.unrecognised + + + + +

    2d.composite.operation.unrecognised

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js new file mode 100644 index 00000000000..5980d166a0e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.operation.unrecognised.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.operation.unrecognised +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'xor'; +ctx.globalCompositeOperation = 'nonexistent'; +_assertSame(ctx.globalCompositeOperation, 'xor', "ctx.globalCompositeOperation", "'xor'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.copy.html new file mode 100644 index 00000000000..98fd5d22464 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.copy.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.copy + + + + +

    2d.composite.solid.copy

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js new file mode 100644 index 00000000000..41249671365 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.copy.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.copy +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html new file mode 100644 index 00000000000..a3b645f9d5b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-atop.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.destination-atop + + + + +

    2d.composite.solid.destination-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js new file mode 100644 index 00000000000..bb2bf5a3169 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-atop.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.destination-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-in.html new file mode 100644 index 00000000000..40dbb4c7f06 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-in.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.destination-in + + + + +

    2d.composite.solid.destination-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js new file mode 100644 index 00000000000..b54208f66ce --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-in.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.destination-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-out.html new file mode 100644 index 00000000000..62171ecac9e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-out.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.destination-out + + + + +

    2d.composite.solid.destination-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js new file mode 100644 index 00000000000..fbcd75d61a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-out.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.destination-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-out'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-over.html new file mode 100644 index 00000000000..14669d6ba4b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-over.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.destination-over + + + + +

    2d.composite.solid.destination-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js new file mode 100644 index 00000000000..76d0df25834 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.destination-over.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.destination-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-over'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,255,255, "50,25", "0,255,255,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.lighter.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.lighter.html new file mode 100644 index 00000000000..af7572a0d95 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.lighter.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.lighter + + + + +

    2d.composite.solid.lighter

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js new file mode 100644 index 00000000000..344a5a3b74b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.lighter.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.lighter +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'lighter'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-atop.html new file mode 100644 index 00000000000..082d4215a4d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-atop.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.source-atop + + + + +

    2d.composite.solid.source-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js new file mode 100644 index 00000000000..c2d0f0e12c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-atop.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.source-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-atop'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-in.html new file mode 100644 index 00000000000..c3552686b32 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-in.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.source-in + + + + +

    2d.composite.solid.source-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js new file mode 100644 index 00000000000..de94d1eea3e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-in.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.source-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-out.html new file mode 100644 index 00000000000..89fccfebcd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-out.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.source-out + + + + +

    2d.composite.solid.source-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js new file mode 100644 index 00000000000..76e6adc174a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-out.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.source-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-over.html new file mode 100644 index 00000000000..de2206f54eb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-over.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.source-over + + + + +

    2d.composite.solid.source-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js new file mode 100644 index 00000000000..edbd628a22c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.source-over.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.source-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-over'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 255,255,0,255, "50,25", "255,255,0,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.xor.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.xor.html new file mode 100644 index 00000000000..8d48ff8dbef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.xor.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.solid.xor + + + + +

    2d.composite.solid.xor

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js new file mode 100644 index 00000000000..a24595171d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.solid.xor.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.solid.xor +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'xor'; +ctx.fillStyle = 'rgba(255, 255, 0, 1.0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.copy.html new file mode 100644 index 00000000000..cf256a9d04a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.copy.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.copy + + + + +

    2d.composite.transparent.copy

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js new file mode 100644 index 00000000000..8fb35ab43c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.copy.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.copy +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,255,191, "50,25", "0,0,255,191", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html new file mode 100644 index 00000000000..04bfca5e680 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.destination-atop + + + + +

    2d.composite.transparent.destination-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js new file mode 100644 index 00000000000..bc036b225ab --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-atop.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.destination-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,128,128,191, "50,25", "0,128,128,191", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html new file mode 100644 index 00000000000..e429c2bdeaf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-in.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.destination-in + + + + +

    2d.composite.transparent.destination-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js new file mode 100644 index 00000000000..f9ee6d213ab --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-in.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.destination-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,96, "50,25", "0,255,0,96", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html new file mode 100644 index 00000000000..a80a3a91728 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-out.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.destination-out + + + + +

    2d.composite.transparent.destination-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js new file mode 100644 index 00000000000..f61ac0fd7df --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-out.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.destination-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-out'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,32, "50,25", "0,255,0,32", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html new file mode 100644 index 00000000000..87adccf59a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-over.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.destination-over + + + + +

    2d.composite.transparent.destination-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js new file mode 100644 index 00000000000..1160e73d844 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.destination-over.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.destination-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-over'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,146,109,223, "50,25", "0,146,109,223", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.lighter.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.lighter.html new file mode 100644 index 00000000000..9ae5ddeba9b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.lighter.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.lighter + + + + +

    2d.composite.transparent.lighter

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js new file mode 100644 index 00000000000..8da114c9b2b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.lighter.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.lighter +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'lighter'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,128,191,255, "50,25", "0,128,191,255", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html new file mode 100644 index 00000000000..bdb283cba03 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-atop.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.source-atop + + + + +

    2d.composite.transparent.source-atop

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js new file mode 100644 index 00000000000..a03e2e4a330 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-atop.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.source-atop +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-atop'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-in.html new file mode 100644 index 00000000000..3fb830ae564 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-in.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.source-in + + + + +

    2d.composite.transparent.source-in

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js new file mode 100644 index 00000000000..f49539b59e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-in.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.source-in +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-out.html new file mode 100644 index 00000000000..b3405bb0fad --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-out.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.source-out + + + + +

    2d.composite.transparent.source-out

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js new file mode 100644 index 00000000000..afa1adf14aa --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-out.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.source-out +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,255,96, "50,25", "0,0,255,96", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-over.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-over.html new file mode 100644 index 00000000000..cc1e9533096 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-over.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.source-over + + + + +

    2d.composite.transparent.source-over

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js new file mode 100644 index 00000000000..8153e176a87 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.source-over.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.source-over +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-over'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,36,219,223, "50,25", "0,36,219,223", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.xor.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.xor.html new file mode 100644 index 00000000000..3f98e78a3c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.xor.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.transparent.xor + + + + +

    2d.composite.transparent.xor

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js new file mode 100644 index 00000000000..58634bd6e8e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.transparent.xor.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.transparent.xor +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'xor'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,64,191,128, "50,25", "0,64,191,128", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html new file mode 100644 index 00000000000..49a73820a05 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.fill.copy + + + + +

    2d.composite.uncovered.fill.copy

    +

    fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js new file mode 100644 index 00000000000..9ecbf5d461f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.copy.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.fill.copy +// Description:fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.translate(0, 25); +ctx.fillRect(0, 50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html new file mode 100644 index 00000000000..bf41ce61516 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.fill.destination-atop + + + + +

    2d.composite.uncovered.fill.destination-atop

    +

    fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js new file mode 100644 index 00000000000..3f1af3d7d5c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-atop.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.fill.destination-atop +// Description:fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.translate(0, 25); +ctx.fillRect(0, 50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html new file mode 100644 index 00000000000..e27c70a234a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.fill.destination-in + + + + +

    2d.composite.uncovered.fill.destination-in

    +

    fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js new file mode 100644 index 00000000000..fe1ae656ba8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.destination-in.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.fill.destination-in +// Description:fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.translate(0, 25); +ctx.fillRect(0, 50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html new file mode 100644 index 00000000000..66b0d641969 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.fill.source-in + + + + +

    2d.composite.uncovered.fill.source-in

    +

    fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js new file mode 100644 index 00000000000..42e1ff037e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-in.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.fill.source-in +// Description:fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.translate(0, 25); +ctx.fillRect(0, 50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html new file mode 100644 index 00000000000..5c80c3f73f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.fill.source-out + + + + +

    2d.composite.uncovered.fill.source-out

    +

    fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js new file mode 100644 index 00000000000..6f73870438d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.fill.source-out.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.fill.source-out +// Description:fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +ctx.fillStyle = 'rgba(0, 0, 255, 0.75)'; +ctx.translate(0, 25); +ctx.fillRect(0, 50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html new file mode 100644 index 00000000000..733a5135877 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.image.copy + + + + +

    2d.composite.uncovered.image.copy

    +

    drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js new file mode 100644 index 00000000000..7898066df39 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.copy.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.image.copy +// Description:drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 40, 40, 10, 10, 40, 50, 10, 10); + _assertPixelApprox(offscreenCanvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html new file mode 100644 index 00000000000..9224e74e0aa --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.image.destination-atop + + + + +

    2d.composite.uncovered.image.destination-atop

    +

    drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js new file mode 100644 index 00000000000..c2799605e01 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-atop.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.image.destination-atop +// Description:drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 40, 40, 10, 10, 40, 50, 10, 10); + _assertPixelApprox(offscreenCanvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html new file mode 100644 index 00000000000..5102b1941df --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.image.destination-in + + + + +

    2d.composite.uncovered.image.destination-in

    +

    drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js new file mode 100644 index 00000000000..9a1090da712 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.destination-in.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.image.destination-in +// Description:drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 40, 40, 10, 10, 40, 50, 10, 10); + _assertPixelApprox(offscreenCanvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html new file mode 100644 index 00000000000..0d2a898b10e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.image.source-in + + + + +

    2d.composite.uncovered.image.source-in

    +

    drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js new file mode 100644 index 00000000000..03070b4e993 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-in.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.image.source-in +// Description:drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 40, 40, 10, 10, 40, 50, 10, 10); + _assertPixelApprox(offscreenCanvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html new file mode 100644 index 00000000000..265902b3cd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.image.source-out + + + + +

    2d.composite.uncovered.image.source-out

    +

    drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js new file mode 100644 index 00000000000..41b3fa5763c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.image.source-out.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.image.source-out +// Description:drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 40, 40, 10, 10, 40, 50, 10, 10); + _assertPixelApprox(offscreenCanvas, 15,15, 0,0,0,0, "15,15", "0,0,0,0", 5); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html new file mode 100644 index 00000000000..92422f58f64 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.nocontext.copy + + + + +

    2d.composite.uncovered.nocontext.copy

    +

    drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js new file mode 100644 index 00000000000..75778f44cb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.copy.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.nocontext.copy +// Description:drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html new file mode 100644 index 00000000000..b058c6fbb47 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.nocontext.destination-atop + + + + +

    2d.composite.uncovered.nocontext.destination-atop

    +

    drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js new file mode 100644 index 00000000000..0eee51ab0f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-atop.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.nocontext.destination-atop +// Description:drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html new file mode 100644 index 00000000000..d9b9dc3f640 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.nocontext.destination-in + + + + +

    2d.composite.uncovered.nocontext.destination-in

    +

    drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js new file mode 100644 index 00000000000..83163655a92 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.destination-in.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.nocontext.destination-in +// Description:drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html new file mode 100644 index 00000000000..fc52d1094fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.nocontext.source-in + + + + +

    2d.composite.uncovered.nocontext.source-in

    +

    drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js new file mode 100644 index 00000000000..cca1b1bd345 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-in.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.nocontext.source-in +// Description:drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html new file mode 100644 index 00000000000..b555c653067 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.nocontext.source-out + + + + +

    2d.composite.uncovered.nocontext.source-out

    +

    drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js new file mode 100644 index 00000000000..40d7cc85132 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.nocontext.source-out.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.nocontext.source-out +// Description:drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html new file mode 100644 index 00000000000..0a67a45f83f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.pattern.copy + + + + +

    2d.composite.uncovered.pattern.copy

    +

    Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js new file mode 100644 index 00000000000..ea4f47fb823 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.copy.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.pattern.copy +// Description:Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'copy'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html new file mode 100644 index 00000000000..0b290d60aac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.pattern.destination-atop + + + + +

    2d.composite.uncovered.pattern.destination-atop

    +

    Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js new file mode 100644 index 00000000000..f32811e25bc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-atop.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.pattern.destination-atop +// Description:Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html new file mode 100644 index 00000000000..88ec897a62e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.pattern.destination-in + + + + +

    2d.composite.uncovered.pattern.destination-in

    +

    Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js new file mode 100644 index 00000000000..0800f0bf7e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.destination-in.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.pattern.destination-in +// Description:Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-in'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html new file mode 100644 index 00000000000..78d1fad65a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.pattern.source-in + + + + +

    2d.composite.uncovered.pattern.source-in

    +

    Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js new file mode 100644 index 00000000000..a34d8f6d6ee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-in.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.pattern.source-in +// Description:Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-in'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html new file mode 100644 index 00000000000..47237e3dbc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.composite.uncovered.pattern.source-out + + + + +

    2d.composite.uncovered.pattern.source-out

    +

    Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js new file mode 100644 index 00000000000..bb4514e4e31 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/compositing/2d.composite.uncovered.pattern.source-out.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.composite.uncovered.pattern.source-out +// Description:Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged."); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'source-out'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0", 5); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.coordinatespace.html b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.coordinatespace.html new file mode 100644 index 00000000000..ec24a19c173 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.coordinatespace.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.coordinatespace + + + + +

    2d.coordinatespace

    +

    Coordinate space goes from top-left to bottom-right

    + +

    This should not be upside down. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js new file mode 100644 index 00000000000..7cad97b2dfb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.coordinatespace.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.coordinatespace +// Description:Coordinate space goes from top-left to bottom-right +// Note:

    This should not be upside down. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Coordinate space goes from top-left to bottom-right"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#00f'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0ff'; +ctx.fillRect(0, 0, 50, 25); +_assertPixel(offscreenCanvas, 25,12, 0,255,255,255, "25,12", "0,255,255,255"); +_assertPixel(offscreenCanvas, 75,12, 0,0,255,255, "75,12", "0,0,255,255"); +_assertPixel(offscreenCanvas, 25,37, 0,0,255,255, "25,37", "0,0,255,255"); +_assertPixel(offscreenCanvas, 75,37, 0,0,255,255, "75,37", "0,0,255,255"); + +t.done(); + +}); +done(); 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 new file mode 100644 index 00000000000..0be8b58b61e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.html @@ -0,0 +1,120 @@ + + +OffscreenCanvas test: 2d.missingargs + + + + +

    2d.missingargs

    +

    Missing arguments cause TypeError

    + + + 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 new file mode 100644 index 00000000000..1a9d41e385d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.missingargs.worker.js @@ -0,0 +1,116 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.missingargs +// Description:Missing arguments cause TypeError +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Missing arguments cause TypeError"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.scale(); }); +assert_throws(new TypeError(), function() { ctx.scale(1); }); +assert_throws(new TypeError(), function() { ctx.rotate(); }); +assert_throws(new TypeError(), function() { ctx.translate(); }); +assert_throws(new TypeError(), function() { ctx.translate(0); }); +if (ctx.transform) { // (avoid spurious failures, since the aim here is not to test that all features are supported) + assert_throws(new TypeError(), function() { ctx.transform(); }); + assert_throws(new TypeError(), function() { ctx.transform(1); }); + assert_throws(new TypeError(), function() { ctx.transform(1, 0); }); + assert_throws(new TypeError(), function() { ctx.transform(1, 0, 0); }); + assert_throws(new TypeError(), function() { ctx.transform(1, 0, 0, 1); }); + 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); }); + assert_throws(new TypeError(), function() { ctx.setTransform(1, 0, 0, 1); }); + assert_throws(new TypeError(), function() { ctx.setTransform(1, 0, 0, 1, 0); }); +} +assert_throws(new TypeError(), function() { ctx.createLinearGradient(); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.createPattern(offscreenCanvas); }); +assert_throws(new TypeError(), function() { ctx.clearRect(); }); +assert_throws(new TypeError(), function() { ctx.clearRect(0); }); +assert_throws(new TypeError(), function() { ctx.clearRect(0, 0); }); +assert_throws(new TypeError(), function() { ctx.clearRect(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.fillRect(); }); +assert_throws(new TypeError(), function() { ctx.fillRect(0); }); +assert_throws(new TypeError(), function() { ctx.fillRect(0, 0); }); +assert_throws(new TypeError(), function() { ctx.fillRect(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.strokeRect(); }); +assert_throws(new TypeError(), function() { ctx.strokeRect(0); }); +assert_throws(new TypeError(), function() { ctx.strokeRect(0, 0); }); +assert_throws(new TypeError(), function() { ctx.strokeRect(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.moveTo(); }); +assert_throws(new TypeError(), function() { ctx.moveTo(0); }); +assert_throws(new TypeError(), function() { ctx.lineTo(); }); +assert_throws(new TypeError(), function() { ctx.lineTo(0); }); +assert_throws(new TypeError(), function() { ctx.quadraticCurveTo(); }); +assert_throws(new TypeError(), function() { ctx.quadraticCurveTo(0); }); +assert_throws(new TypeError(), function() { ctx.quadraticCurveTo(0, 0); }); +assert_throws(new TypeError(), function() { ctx.quadraticCurveTo(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.bezierCurveTo(); }); +assert_throws(new TypeError(), function() { ctx.bezierCurveTo(0); }); +assert_throws(new TypeError(), function() { ctx.bezierCurveTo(0, 0); }); +assert_throws(new TypeError(), function() { ctx.bezierCurveTo(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.bezierCurveTo(0, 0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.bezierCurveTo(0, 0, 0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.arcTo(); }); +assert_throws(new TypeError(), function() { ctx.arcTo(0); }); +assert_throws(new TypeError(), function() { ctx.arcTo(0, 0); }); +assert_throws(new TypeError(), function() { ctx.arcTo(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.arcTo(0, 0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.rect(); }); +assert_throws(new TypeError(), function() { ctx.rect(0); }); +assert_throws(new TypeError(), function() { ctx.rect(0, 0); }); +assert_throws(new TypeError(), function() { ctx.rect(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.arc(); }); +assert_throws(new TypeError(), function() { ctx.arc(0); }); +assert_throws(new TypeError(), function() { ctx.arc(0, 0); }); +assert_throws(new TypeError(), function() { ctx.arc(0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.arc(0, 0, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.drawImage(); }); +assert_throws(new TypeError(), function() { ctx.drawImage(offscreenCanvas); }); +assert_throws(new TypeError(), function() { ctx.drawImage(offscreenCanvas, 0); }); +// TODO: n >= 3 args on drawImage could be either a valid overload, +// or too few for another overload, or too many for another +// overload - what should happen? +if (ctx.createImageData) { + assert_throws(new TypeError(), function() { ctx.createImageData(); }); + assert_throws(new TypeError(), function() { ctx.createImageData(1); }); +} +if (ctx.getImageData) { + assert_throws(new TypeError(), function() { ctx.getImageData(); }); + assert_throws(new TypeError(), function() { ctx.getImageData(0); }); + assert_throws(new TypeError(), function() { ctx.getImageData(0, 0); }); + assert_throws(new TypeError(), function() { ctx.getImageData(0, 0, 1); }); +} +if (ctx.putImageData) { + var imgdata = ctx.getImageData(0, 0, 1, 1); + assert_throws(new TypeError(), function() { ctx.putImageData(); }); + assert_throws(new TypeError(), function() { ctx.putImageData(imgdata); }); + assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 0); }); +} +var g = ctx.createLinearGradient(0, 0, 0, 0); +assert_throws(new TypeError(), function() { g.addColorStop(); }); +assert_throws(new TypeError(), function() { g.addColorStop(0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.voidreturn.html b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.voidreturn.html new file mode 100644 index 00000000000..42eb98ec1ec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.voidreturn.html @@ -0,0 +1,54 @@ + + +OffscreenCanvas test: 2d.voidreturn + + + + +

    2d.voidreturn

    +

    void methods return undefined

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js new file mode 100644 index 00000000000..0d7da597275 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/conformance-requirements/2d.voidreturn.worker.js @@ -0,0 +1,50 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.voidreturn +// Description:void methods return undefined +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("void methods return undefined"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.save(), undefined, "ctx.save()", "undefined"); +_assertSame(ctx.restore(), undefined, "ctx.restore()", "undefined"); +_assertSame(ctx.scale(1, 1), undefined, "ctx.scale(1, 1)", "undefined"); +_assertSame(ctx.rotate(0), undefined, "ctx.rotate(0)", "undefined"); +_assertSame(ctx.translate(0, 0), undefined, "ctx.translate(0, 0)", "undefined"); +if (ctx.transform) { // (avoid spurious failures, since the aim here is not to test that all features are supported) + _assertSame(ctx.transform(1, 0, 0, 1, 0, 0), undefined, "ctx.transform(1, 0, 0, 1, 0, 0)", "undefined"); +} +if (ctx.setTransform) { + _assertSame(ctx.setTransform(1, 0, 0, 1, 0, 0), undefined, "ctx.setTransform(1, 0, 0, 1, 0, 0)", "undefined"); +} +_assertSame(ctx.clearRect(0, 0, 0, 0), undefined, "ctx.clearRect(0, 0, 0, 0)", "undefined"); +_assertSame(ctx.fillRect(0, 0, 0, 0), undefined, "ctx.fillRect(0, 0, 0, 0)", "undefined"); +_assertSame(ctx.strokeRect(0, 0, 0, 0), undefined, "ctx.strokeRect(0, 0, 0, 0)", "undefined"); +_assertSame(ctx.beginPath(), undefined, "ctx.beginPath()", "undefined"); +_assertSame(ctx.closePath(), undefined, "ctx.closePath()", "undefined"); +_assertSame(ctx.moveTo(0, 0), undefined, "ctx.moveTo(0, 0)", "undefined"); +_assertSame(ctx.lineTo(0, 0), undefined, "ctx.lineTo(0, 0)", "undefined"); +_assertSame(ctx.quadraticCurveTo(0, 0, 0, 0), undefined, "ctx.quadraticCurveTo(0, 0, 0, 0)", "undefined"); +_assertSame(ctx.bezierCurveTo(0, 0, 0, 0, 0, 0), undefined, "ctx.bezierCurveTo(0, 0, 0, 0, 0, 0)", "undefined"); +_assertSame(ctx.arcTo(0, 0, 0, 0, 1), undefined, "ctx.arcTo(0, 0, 0, 0, 1)", "undefined"); +_assertSame(ctx.rect(0, 0, 0, 0), undefined, "ctx.rect(0, 0, 0, 0)", "undefined"); +_assertSame(ctx.arc(0, 0, 1, 0, 0, true), undefined, "ctx.arc(0, 0, 1, 0, 0, true)", "undefined"); +_assertSame(ctx.fill(), undefined, "ctx.fill()", "undefined"); +_assertSame(ctx.stroke(), undefined, "ctx.stroke()", "undefined"); +_assertSame(ctx.clip(), undefined, "ctx.clip()", "undefined"); +if (ctx.putImageData) { + _assertSame(ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 0, 0), undefined, "ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 0, 0)", "undefined"); +} +_assertSame(ctx.drawImage(offscreenCanvas, 0, 0, 1, 1, 0, 0, 0, 0), undefined, "ctx.drawImage(offscreenCanvas, 0, 0, 1, 1, 0, 0, 0, 0)", "undefined"); +_assertSame(ctx.createLinearGradient(0, 0, 0, 0).addColorStop(0, 'white'), undefined, "ctx.createLinearGradient(0, 0, 0, 0).addColorStop(0, 'white')", "undefined"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html new file mode 100644 index 00000000000..da1dc8fcc2f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html @@ -0,0 +1,52 @@ + + +OffscreenCanvas test: 2d.drawImage.3arg + + + + +

    2d.drawImage.3arg

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js new file mode 100644 index 00000000000..08cb353a50d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.worker.js @@ -0,0 +1,48 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.3arg +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 0, 0); + ctx.drawImage(response1, -100, 0); + ctx.drawImage(response1, 100, 0); + ctx.drawImage(response1, 0, -50); + ctx.drawImage(response1, 0, 50); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html new file mode 100644 index 00000000000..6d5fbfdefc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.html @@ -0,0 +1,53 @@ + + +OffscreenCanvas test: 2d.drawImage.5arg + + + + +

    2d.drawImage.5arg

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js new file mode 100644 index 00000000000..17e01fad01e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.5arg.worker.js @@ -0,0 +1,49 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.5arg +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 50, 0, 50, 50); + ctx.drawImage(response1, 0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html new file mode 100644 index 00000000000..530dc683a53 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.drawImage.9arg.basic + + + + +

    2d.drawImage.9arg.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js new file mode 100644 index 00000000000..53046e22d00 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.9arg.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0, 100, 50, 0, 0, 100, 50); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html new file mode 100644 index 00000000000..e6c75125c76 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html @@ -0,0 +1,54 @@ + + +OffscreenCanvas test: 2d.drawImage.9arg.destpos + + + + +

    2d.drawImage.9arg.destpos

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js new file mode 100644 index 00000000000..2a18a9355f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.worker.js @@ -0,0 +1,50 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.9arg.destpos +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 0, 0, 100, 50, 0, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, -100, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 100, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 0, -50, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 0, 50, 100, 50); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html new file mode 100644 index 00000000000..88b9634d099 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html @@ -0,0 +1,54 @@ + + +OffscreenCanvas test: 2d.drawImage.9arg.destsize + + + + +

    2d.drawImage.9arg.destsize

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js new file mode 100644 index 00000000000..a9f940725ca --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.worker.js @@ -0,0 +1,50 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.9arg.destsize +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 1, 1, 1, 1, 0, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, -50, 0, 50, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 100, 0, 50, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 0, -25, 100, 25); + ctx.drawImage(response1, 0, 0, 100, 50, 0, 50, 100, 25); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html new file mode 100644 index 00000000000..9ea58b9093c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.drawImage.9arg.sourcepos + + + + +

    2d.drawImage.9arg.sourcepos

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js new file mode 100644 index 00000000000..0b1885d75d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.9arg.sourcepos +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 140, 20, 100, 50, 0, 0, 100, 50); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html new file mode 100644 index 00000000000..12aad6ca592 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.drawImage.9arg.sourcesize + + + + +

    2d.drawImage.9arg.sourcesize

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js new file mode 100644 index 00000000000..e1fa60dcb21 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.9arg.sourcesize +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0, 256, 256, 0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 51, 26); + ctx.fillRect(49, 24, 51, 26); + _assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 80,20, 0,255,0,255, "80,20", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 20,30, 0,255,0,255, "20,30", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 80,30, 0,255,0,255, "80,30", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html new file mode 100644 index 00000000000..ab643dda692 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.drawImage.alpha + + + + +

    2d.drawImage.alpha

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js new file mode 100644 index 00000000000..d71b3d50d56 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.alpha +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalAlpha = 0; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html new file mode 100644 index 00000000000..935c66fb50b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.drawImage.animated.poster + + + + +

    2d.drawImage.animated.poster

    +

    drawImage() of an APNG draws the poster frame

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js new file mode 100644 index 00000000000..d328d18d86f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.animated.poster +// Description:drawImage() of an APNG draws the poster frame +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of an APNG draws the poster frame"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/anim-poster-gr.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html new file mode 100644 index 00000000000..05bf621c346 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.drawImage.broken + + + + +

    2d.drawImage.broken

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js new file mode 100644 index 00000000000..db968175a5e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.broken +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/broken.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html new file mode 100644 index 00000000000..32ff3fccbdc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.drawImage.canvas + + + + +

    2d.drawImage.canvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js new file mode 100644 index 00000000000..8af83f21765 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.canvas.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.canvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html new file mode 100644 index 00000000000..a51c411adc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.drawImage.clip + + + + +

    2d.drawImage.clip

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js new file mode 100644 index 00000000000..f0363c22e7a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.clip +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.rect(-10, -10, 1, 1); +ctx.clip(); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html new file mode 100644 index 00000000000..68d668417db --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.drawImage.composite + + + + +

    2d.drawImage.composite

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js new file mode 100644 index 00000000000..435c793e4e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.composite +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-over'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html new file mode 100644 index 00000000000..1d3b21b7dc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.drawImage.floatsource + + + + +

    2d.drawImage.floatsource

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js new file mode 100644 index 00000000000..3a90d33f783 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.floatsource +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html new file mode 100644 index 00000000000..3b3a609b64f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.drawImage.negativedest + + + + +

    2d.drawImage.negativedest

    +

    Negative destination width/height represents the correct rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js new file mode 100644 index 00000000000..91cf4663b2f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.negativedest +// Description:Negative destination width/height represents the correct rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Negative destination width/height represents the correct rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 100, 78, 50, 50, 0, 50, 50, -50); + ctx.drawImage(response, 100, 128, 50, -50, 100, 50, -50, -50); + _assertPixelApprox(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html new file mode 100644 index 00000000000..741aaea02a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.drawImage.negativedir + + + + +

    2d.drawImage.negativedir

    +

    Negative dimensions do not affect the direction of the image

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js new file mode 100644 index 00000000000..9d4812bf169 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.negativedir +// Description:Negative dimensions do not affect the direction of the image +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Negative dimensions do not affect the direction of the image"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 178, 50, -100, 0, 0, 50, 100); + ctx.drawImage(response, 0, 78, 50, 100, 50, 100, 50, -100); + _assertPixelApprox(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html new file mode 100644 index 00000000000..0a99aa56741 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.drawImage.negativesource + + + + +

    2d.drawImage.negativesource

    +

    Negative source width/height represents the correct rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js new file mode 100644 index 00000000000..fe0b0c17a75 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.negativesource +// Description:Negative source width/height represents the correct rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Negative source width/height represents the correct rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 100, 78, -100, 50, 0, 0, 50, 50); + ctx.drawImage(response, 100, 128, -100, -50, 50, 0, 50, 50); + _assertPixelApprox(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 51,1, 0,255,0,255, "51,1", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 51,48, 0,255,0,255, "51,48", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html new file mode 100644 index 00000000000..4780011bd30 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html @@ -0,0 +1,338 @@ + + +OffscreenCanvas test: 2d.drawImage.nonfinite + + + + +

    2d.drawImage.nonfinite

    +

    drawImage() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js new file mode 100644 index 00000000000..4ebc7616525 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js @@ -0,0 +1,334 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.nonfinite +// Description:drawImage() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, Infinity, 0); +ctx.drawImage(response, -Infinity, 0); +ctx.drawImage(response, NaN, 0); +ctx.drawImage(response, 0, Infinity); +ctx.drawImage(response, 0, -Infinity); +ctx.drawImage(response, 0, NaN); +ctx.drawImage(response, Infinity, Infinity); + ctx.drawImage(response, Infinity, 0, 100, 50); +ctx.drawImage(response, -Infinity, 0, 100, 50); +ctx.drawImage(response, NaN, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, -Infinity, 100, 50); +ctx.drawImage(response, 0, NaN, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, -Infinity, 50); +ctx.drawImage(response, 0, 0, NaN, 50); +ctx.drawImage(response, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, -Infinity); +ctx.drawImage(response, 0, 0, 100, NaN); +ctx.drawImage(response, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity); + ctx.drawImage(response, Infinity, 0, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, -Infinity, 0, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, NaN, 0, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, -Infinity, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, NaN, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, -Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, NaN, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, -Infinity, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, NaN, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, -Infinity, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, NaN, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, -Infinity, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, NaN, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, -Infinity, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, NaN, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, 100, -Infinity); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, 100, NaN); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, Infinity, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, Infinity, 0, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, Infinity, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(response, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(response, 0, 0, 100, 50, 0, 0, Infinity, Infinity); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html new file mode 100644 index 00000000000..b66efebf756 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.drawImage.nowrap + + + + +

    2d.drawImage.nowrap

    +

    Stretched images do not get pixels wrapping around the edges

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js new file mode 100644 index 00000000000..b014974b64b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.nowrap +// Description:Stretched images do not get pixels wrapping around the edges +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Stretched images do not get pixels wrapping around the edges"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, -1950, 0, 2000, 50); + _assertPixelApprox(offscreenCanvas, 45,25, 0,255,0,255, "45,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 55,25, 0,255,0,255, "55,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html new file mode 100644 index 00000000000..77452b9c776 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.drawImage.null + + + + +

    2d.drawImage.null

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js new file mode 100644 index 00000000000..e886a334cc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.null.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.null +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.drawImage(null, 0, 0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html new file mode 100644 index 00000000000..b4eca14a997 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.drawImage.path + + + + +

    2d.drawImage.path

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js new file mode 100644 index 00000000000..7e4a240cee6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.path.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.path +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.rect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + ctx.fill(); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html new file mode 100644 index 00000000000..6828b7c095d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.drawImage.self.1 + + + + +

    2d.drawImage.self.1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js new file mode 100644 index 00000000000..ddd7e18ff22 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.1.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.self.1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(50, 0, 50, 50); +ctx.drawImage(offscreenCanvas, 50, 0); +_assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html new file mode 100644 index 00000000000..690202d3316 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.drawImage.self.2 + + + + +

    2d.drawImage.self.2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js new file mode 100644 index 00000000000..b3c005e2e75 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.self.2.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.self.2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 1, 100, 49); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 1); +ctx.drawImage(offscreenCanvas, 0, 1); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 2); +_assertPixelApprox(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html new file mode 100644 index 00000000000..2e3cdc030ff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.drawImage.svg + + + + +

    2d.drawImage.svg

    +

    drawImage() of an SVG image

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js new file mode 100644 index 00000000000..6860a85256c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.svg +// Description:drawImage() of an SVG image +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage() of an SVG image"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.svg'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html new file mode 100644 index 00000000000..0817e81851a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.drawImage.transform + + + + +

    2d.drawImage.transform

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js new file mode 100644 index 00000000000..41b0d4ce5dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.transform +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 0); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html new file mode 100644 index 00000000000..f9b7f3a1fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.drawImage.wrongtype + + + + +

    2d.drawImage.wrongtype

    +

    Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js new file mode 100644 index 00000000000..c4f4668857a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.wrongtype.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.wrongtype +// Description:Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.drawImage(undefined, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.drawImage(0, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.drawImage("", 0, 0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html new file mode 100644 index 00000000000..57210ef2512 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.drawImage.zerocanvas + + + + +

    2d.drawImage.zerocanvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js new file mode 100644 index 00000000000..45dfff628bc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.zerocanvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var offscreenCanvas2 = new OffscreenCanvas(0, 10); +ctx.drawImage(offscreenCanvas2, 0, 0); +offscreenCanvas2.width = 10; +offscreenCanvas2.height = 0; +ctx.drawImage(offscreenCanvas2, 0, 0); +offscreenCanvas2.width = 0; +offscreenCanvas2.height = 0; +ctx.drawImage(offscreenCanvas2, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html new file mode 100644 index 00000000000..a7670cd9f2e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.drawImage.zerosource + + + + +

    2d.drawImage.zerosource

    +

    drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html new file mode 100644 index 00000000000..c1f2b324d5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.drawImage.zerosource.image + + + + +

    2d.drawImage.zerosource.image

    +

    drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js new file mode 100644 index 00000000000..3cc3c72119e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.zerosource.image +// Description:drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-zerowidth.svg'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + assert_throws("INDEX_SIZE_ERR", function() { ctx.drawImage(response, 0, 0, 100, 50); }); + assert_throws("INDEX_SIZE_ERR", function() { ctx.drawImage(response, 0, 0, 100, 50); }); + assert_throws("INDEX_SIZE_ERR", function() { ctx.drawImage(response, 0, 0, 100, 50); }); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js new file mode 100644 index 00000000000..0f0ed5d9dd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.drawImage.zerosource +// Description:drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + assert_throws("INDEX_SIZE_ERR", function() { ctx.drawImage(response, 10, 10, 0, 1, 0, 0, 100, 50); }); + assert_throws("INDEX_SIZE_ERR", function() { ctx.drawImage(response, 10, 10, 1, 0, 0, 0, 100, 50); }); + assert_throws("INDEX_SIZE_ERR", function() { ctx.drawImage(response, 10, 10, 0, 0, 0, 0, 100, 50); }); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html new file mode 100644 index 00000000000..e5141d69aeb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.clearRect.basic + + + + +

    2d.clearRect.basic

    +

    clearRect clears to transparent black

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js new file mode 100644 index 00000000000..eb0ae4efe0c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.basic.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.basic +// Description:clearRect clears to transparent black +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect clears to transparent black"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.clearRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html new file mode 100644 index 00000000000..25af32dca14 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.clearRect.clip + + + + +

    2d.clearRect.clip

    +

    clearRect is affected by clipping regions

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js new file mode 100644 index 00000000000..ce58871ecfc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.clip.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.clip +// Description:clearRect is affected by clipping regions +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect is affected by clipping regions"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(0, 0, 16, 16); +ctx.clip(); +ctx.clearRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 16, 16); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html new file mode 100644 index 00000000000..19ddabfc932 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.clearRect.globalalpha + + + + +

    2d.clearRect.globalalpha

    +

    clearRect is not affected by globalAlpha

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js new file mode 100644 index 00000000000..a29ce44d828 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.globalalpha +// Description:clearRect is not affected by globalAlpha +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect is not affected by globalAlpha"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalAlpha = 0.1; +ctx.clearRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html new file mode 100644 index 00000000000..63a9ac352ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.clearRect.globalcomposite + + + + +

    2d.clearRect.globalcomposite

    +

    clearRect is not affected by globalCompositeOperation

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js new file mode 100644 index 00000000000..4873b0a3598 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.globalcomposite +// Description:clearRect is not affected by globalCompositeOperation +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect is not affected by globalCompositeOperation"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-atop'; +ctx.clearRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html new file mode 100644 index 00000000000..064f8054421 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.clearRect.negative + + + + +

    2d.clearRect.negative

    +

    clearRect of negative sizes works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js new file mode 100644 index 00000000000..8dc1cf24f12 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.negative.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.negative +// Description:clearRect of negative sizes works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect of negative sizes works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.clearRect(0, 0, 50, 25); +ctx.clearRect(100, 0, -50, 25); +ctx.clearRect(0, 50, 50, -25); +ctx.clearRect(100, 50, -50, -25); +_assertPixel(offscreenCanvas, 25,12, 0,0,0,0, "25,12", "0,0,0,0"); +_assertPixel(offscreenCanvas, 75,12, 0,0,0,0, "75,12", "0,0,0,0"); +_assertPixel(offscreenCanvas, 25,37, 0,0,0,0, "25,37", "0,0,0,0"); +_assertPixel(offscreenCanvas, 75,37, 0,0,0,0, "75,37", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html new file mode 100644 index 00000000000..8e3b241a5ba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html @@ -0,0 +1,49 @@ + + +OffscreenCanvas test: 2d.clearRect.nonfinite + + + + +

    2d.clearRect.nonfinite

    +

    clearRect() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js new file mode 100644 index 00000000000..bd512336e00 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.worker.js @@ -0,0 +1,45 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.nonfinite +// Description:clearRect() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.clearRect(Infinity, 0, 100, 50); +ctx.clearRect(-Infinity, 0, 100, 50); +ctx.clearRect(NaN, 0, 100, 50); +ctx.clearRect(0, Infinity, 100, 50); +ctx.clearRect(0, -Infinity, 100, 50); +ctx.clearRect(0, NaN, 100, 50); +ctx.clearRect(0, 0, Infinity, 50); +ctx.clearRect(0, 0, -Infinity, 50); +ctx.clearRect(0, 0, NaN, 50); +ctx.clearRect(0, 0, 100, Infinity); +ctx.clearRect(0, 0, 100, -Infinity); +ctx.clearRect(0, 0, 100, NaN); +ctx.clearRect(Infinity, Infinity, 100, 50); +ctx.clearRect(Infinity, Infinity, Infinity, 50); +ctx.clearRect(Infinity, Infinity, Infinity, Infinity); +ctx.clearRect(Infinity, Infinity, 100, Infinity); +ctx.clearRect(Infinity, 0, Infinity, 50); +ctx.clearRect(Infinity, 0, Infinity, Infinity); +ctx.clearRect(Infinity, 0, 100, Infinity); +ctx.clearRect(0, Infinity, Infinity, 50); +ctx.clearRect(0, Infinity, Infinity, Infinity); +ctx.clearRect(0, Infinity, 100, Infinity); +ctx.clearRect(0, 0, Infinity, Infinity); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html new file mode 100644 index 00000000000..00d2286fb56 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.clearRect.path + + + + +

    2d.clearRect.path

    +

    clearRect does not affect the current path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js new file mode 100644 index 00000000000..385672d9f29 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.path.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.path +// Description:clearRect does not affect the current path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect does not affect the current path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.rect(0, 0, 100, 50); +ctx.clearRect(0, 0, 16, 16); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html new file mode 100644 index 00000000000..54cbbfb201f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.clearRect.shadow + + + + +

    2d.clearRect.shadow

    +

    clearRect does not draw shadows

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js new file mode 100644 index 00000000000..86bd149a3f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.shadow +// Description:clearRect does not draw shadows +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect does not draw shadows"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#f00'; +ctx.shadowBlur = 0; +ctx.shadowOffsetX = 0; +ctx.shadowOffsetY = 50; +ctx.clearRect(0, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html new file mode 100644 index 00000000000..14278ab1a59 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.clearRect.transform + + + + +

    2d.clearRect.transform

    +

    clearRect is affected by transforms

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js new file mode 100644 index 00000000000..e5ea33355a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.transform.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.transform +// Description:clearRect is affected by transforms +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect is affected by transforms"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(10, 10); +ctx.translate(0, 5); +ctx.clearRect(0, -5, 10, 5); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html new file mode 100644 index 00000000000..d1f95530eb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.clearRect.zero + + + + +

    2d.clearRect.zero

    +

    clearRect of zero pixels has no effect

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js new file mode 100644 index 00000000000..00850c6b0f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.clearRect.zero.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.clearRect.zero +// Description:clearRect of zero pixels has no effect +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("clearRect of zero pixels has no effect"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.clearRect(0, 0, 100, 0); +ctx.clearRect(0, 0, 0, 50); +ctx.clearRect(0, 0, 0, 0); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html new file mode 100644 index 00000000000..2f6e6d1a9fe --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.fillRect.basic + + + + +

    2d.fillRect.basic

    +

    fillRect works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js new file mode 100644 index 00000000000..805561044ff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.basic.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.basic +// Description:fillRect works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html new file mode 100644 index 00000000000..ddc625dfbe6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.fillRect.clip + + + + +

    2d.fillRect.clip

    +

    fillRect is affected by clipping regions

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js new file mode 100644 index 00000000000..740a9de5e20 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.clip.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.clip +// Description:fillRect is affected by clipping regions +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect is affected by clipping regions"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(0, 0, 16, 16); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 16, 16); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html new file mode 100644 index 00000000000..ba525ce239c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.fillRect.negative + + + + +

    2d.fillRect.negative

    +

    fillRect of negative sizes works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js new file mode 100644 index 00000000000..df644d5fb38 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.negative.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.negative +// Description:fillRect of negative sizes works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect of negative sizes works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 25); +ctx.fillRect(100, 0, -50, 25); +ctx.fillRect(0, 50, 50, -25); +ctx.fillRect(100, 50, -50, -25); +_assertPixel(offscreenCanvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html new file mode 100644 index 00000000000..7bedee63276 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html @@ -0,0 +1,50 @@ + + +OffscreenCanvas test: 2d.fillRect.nonfinite + + + + +

    2d.fillRect.nonfinite

    +

    fillRect() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js new file mode 100644 index 00000000000..79455b29f61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.worker.js @@ -0,0 +1,46 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.nonfinite +// Description:fillRect() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(Infinity, 0, 100, 50); +ctx.fillRect(-Infinity, 0, 100, 50); +ctx.fillRect(NaN, 0, 100, 50); +ctx.fillRect(0, Infinity, 100, 50); +ctx.fillRect(0, -Infinity, 100, 50); +ctx.fillRect(0, NaN, 100, 50); +ctx.fillRect(0, 0, Infinity, 50); +ctx.fillRect(0, 0, -Infinity, 50); +ctx.fillRect(0, 0, NaN, 50); +ctx.fillRect(0, 0, 100, Infinity); +ctx.fillRect(0, 0, 100, -Infinity); +ctx.fillRect(0, 0, 100, NaN); +ctx.fillRect(Infinity, Infinity, 100, 50); +ctx.fillRect(Infinity, Infinity, Infinity, 50); +ctx.fillRect(Infinity, Infinity, Infinity, Infinity); +ctx.fillRect(Infinity, Infinity, 100, Infinity); +ctx.fillRect(Infinity, 0, Infinity, 50); +ctx.fillRect(Infinity, 0, Infinity, Infinity); +ctx.fillRect(Infinity, 0, 100, Infinity); +ctx.fillRect(0, Infinity, Infinity, 50); +ctx.fillRect(0, Infinity, Infinity, Infinity); +ctx.fillRect(0, Infinity, 100, Infinity); +ctx.fillRect(0, 0, Infinity, Infinity); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html new file mode 100644 index 00000000000..ff6530e9885 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.fillRect.path + + + + +

    2d.fillRect.path

    +

    fillRect does not affect the current path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js new file mode 100644 index 00000000000..7433620ed61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.path.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.path +// Description:fillRect does not affect the current path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect does not affect the current path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.beginPath(); +ctx.rect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 16, 16); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html new file mode 100644 index 00000000000..1399bbbfb62 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.fillRect.shadow + + + + +

    2d.fillRect.shadow

    +

    fillRect draws shadows

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js new file mode 100644 index 00000000000..7f056f50d3c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.shadow +// Description:fillRect draws shadows +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect draws shadows"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#0f0'; +ctx.shadowBlur = 0; +ctx.shadowOffsetX = 0; +ctx.shadowOffsetY = 50; +ctx.fillRect(0, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html new file mode 100644 index 00000000000..21b780a5529 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillRect.transform + + + + +

    2d.fillRect.transform

    +

    fillRect is affected by transforms

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js new file mode 100644 index 00000000000..d0bfaa9a4ba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.transform.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.transform +// Description:fillRect is affected by transforms +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect is affected by transforms"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.scale(10, 10); +ctx.translate(0, 5); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, -5, 10, 5); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html new file mode 100644 index 00000000000..b1309ee1f7c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.fillRect.zero + + + + +

    2d.fillRect.zero

    +

    fillRect of zero pixels has no effect

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js new file mode 100644 index 00000000000..afe3832cc1c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.fillRect.zero.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillRect.zero +// Description:fillRect of zero pixels has no effect +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect of zero pixels has no effect"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 0); +ctx.fillRect(0, 0, 0, 50); +ctx.fillRect(0, 0, 0, 0); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html new file mode 100644 index 00000000000..329e298974c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.strokeRect.basic + + + + +

    2d.strokeRect.basic

    +

    strokeRect works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js new file mode 100644 index 00000000000..13fd2ae9b0a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.basic +// Description:strokeRect works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.strokeRect(25, 24, 50, 2); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html new file mode 100644 index 00000000000..1f1c947d3e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.strokeRect.clip + + + + +

    2d.strokeRect.clip

    +

    strokeRect is affected by clipping regions

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js new file mode 100644 index 00000000000..dfb6705c06a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.clip +// Description:strokeRect is affected by clipping regions +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect is affected by clipping regions"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(0, 0, 16, 16); +ctx.clip(); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.strokeRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 16, 16); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html new file mode 100644 index 00000000000..35e4e0667e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.strokeRect.globalalpha + + + + +

    2d.strokeRect.globalalpha

    +

    strokeRect is affected by globalAlpha

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js new file mode 100644 index 00000000000..f24120034f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.globalalpha +// Description:strokeRect is affected by globalAlpha +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect is affected by globalAlpha"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalAlpha = 0; +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.strokeRect(25, 24, 50, 2); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html new file mode 100644 index 00000000000..44b8966e428 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.strokeRect.globalcomposite + + + + +

    2d.strokeRect.globalcomposite

    +

    strokeRect is not affected by globalCompositeOperation

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js new file mode 100644 index 00000000000..93be63c3ebb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.globalcomposite +// Description:strokeRect is not affected by globalCompositeOperation +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect is not affected by globalCompositeOperation"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'source-in'; +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.strokeRect(25, 24, 50, 2); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html new file mode 100644 index 00000000000..be5f9aa3c75 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.strokeRect.negative + + + + +

    2d.strokeRect.negative

    +

    strokeRect of negative sizes works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js new file mode 100644 index 00000000000..9c83950a9fc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.negative +// Description:strokeRect of negative sizes works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect of negative sizes works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 25; +ctx.strokeRect(12, 12, 26, 1); +ctx.strokeRect(88, 12, -26, 1); +ctx.strokeRect(12, 38, 26, -1); +ctx.strokeRect(88, 38, -26, -1); +_assertPixel(offscreenCanvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html new file mode 100644 index 00000000000..9198365876c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html @@ -0,0 +1,51 @@ + + +OffscreenCanvas test: 2d.strokeRect.nonfinite + + + + +

    2d.strokeRect.nonfinite

    +

    strokeRect() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js new file mode 100644 index 00000000000..7fb16811a0a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.worker.js @@ -0,0 +1,47 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.nonfinite +// Description:strokeRect() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 150; +ctx.strokeRect(Infinity, 0, 100, 50); +ctx.strokeRect(-Infinity, 0, 100, 50); +ctx.strokeRect(NaN, 0, 100, 50); +ctx.strokeRect(0, Infinity, 100, 50); +ctx.strokeRect(0, -Infinity, 100, 50); +ctx.strokeRect(0, NaN, 100, 50); +ctx.strokeRect(0, 0, Infinity, 50); +ctx.strokeRect(0, 0, -Infinity, 50); +ctx.strokeRect(0, 0, NaN, 50); +ctx.strokeRect(0, 0, 100, Infinity); +ctx.strokeRect(0, 0, 100, -Infinity); +ctx.strokeRect(0, 0, 100, NaN); +ctx.strokeRect(Infinity, Infinity, 100, 50); +ctx.strokeRect(Infinity, Infinity, Infinity, 50); +ctx.strokeRect(Infinity, Infinity, Infinity, Infinity); +ctx.strokeRect(Infinity, Infinity, 100, Infinity); +ctx.strokeRect(Infinity, 0, Infinity, 50); +ctx.strokeRect(Infinity, 0, Infinity, Infinity); +ctx.strokeRect(Infinity, 0, 100, Infinity); +ctx.strokeRect(0, Infinity, Infinity, 50); +ctx.strokeRect(0, Infinity, Infinity, Infinity); +ctx.strokeRect(0, Infinity, 100, Infinity); +ctx.strokeRect(0, 0, Infinity, Infinity); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html new file mode 100644 index 00000000000..dc49cbfbe69 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.strokeRect.path + + + + +

    2d.strokeRect.path

    +

    strokeRect does not affect the current path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js new file mode 100644 index 00000000000..b5908b1674f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.path.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.path +// Description:strokeRect does not affect the current path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect does not affect the current path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.beginPath(); +ctx.rect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 5; +ctx.strokeRect(0, 0, 16, 16); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html new file mode 100644 index 00000000000..a042d943589 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.strokeRect.shadow + + + + +

    2d.strokeRect.shadow

    +

    strokeRect draws shadows

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js new file mode 100644 index 00000000000..781e0b969c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.shadow +// Description:strokeRect draws shadows +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect draws shadows"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.shadowColor = '#0f0'; +ctx.shadowBlur = 0; +ctx.shadowOffsetX = 0; +ctx.shadowOffsetY = 50; +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.strokeRect(0, -75, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html new file mode 100644 index 00000000000..ba859b8d83e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.strokeRect.transform + + + + +

    2d.strokeRect.transform

    +

    fillRect is affected by transforms

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js new file mode 100644 index 00000000000..85bc6e8b23c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.transform +// Description:fillRect is affected by transforms +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("fillRect is affected by transforms"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.scale(10, 10); +ctx.translate(0, 5); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 5; +ctx.strokeRect(2.5, -2.6, 5, 0.2); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html new file mode 100644 index 00000000000..973b9d1af14 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.strokeRect.zero.1 + + + + +

    2d.strokeRect.zero.1

    +

    strokeRect of 0x0 pixels draws nothing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js new file mode 100644 index 00000000000..5d1f4664afc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.zero.1 +// Description:strokeRect of 0x0 pixels draws nothing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect of 0x0 pixels draws nothing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 250; +ctx.strokeRect(50, 25, 0, 0); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html new file mode 100644 index 00000000000..161e240839f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.strokeRect.zero.2 + + + + +

    2d.strokeRect.zero.2

    +

    strokeRect of 0x0 pixels draws nothing, including caps and joins

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js new file mode 100644 index 00000000000..bd7f8520836 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.zero.2 +// Description:strokeRect of 0x0 pixels draws nothing, including caps and joins +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect of 0x0 pixels draws nothing, including caps and joins"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 250; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.strokeRect(50, 25, 0, 0); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html new file mode 100644 index 00000000000..7566ba8482a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.strokeRect.zero.3 + + + + +

    2d.strokeRect.zero.3

    +

    strokeRect of Nx0 pixels draws a straight line

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js new file mode 100644 index 00000000000..0b73deb276a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.zero.3 +// Description:strokeRect of Nx0 pixels draws a straight line +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect of Nx0 pixels draws a straight line"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.strokeRect(0, 25, 100, 0); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html new file mode 100644 index 00000000000..e40d78d06df --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.strokeRect.zero.4 + + + + +

    2d.strokeRect.zero.4

    +

    strokeRect of Nx0 pixels draws a closed line with no caps

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js new file mode 100644 index 00000000000..e7de7a5dd18 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.zero.4 +// Description:strokeRect of Nx0 pixels draws a closed line with no caps +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect of Nx0 pixels draws a closed line with no caps"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 250; +ctx.lineCap = 'round'; +ctx.strokeRect(100, 25, 100, 0); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html new file mode 100644 index 00000000000..c23f675e825 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.strokeRect.zero.5 + + + + +

    2d.strokeRect.zero.5

    +

    strokeRect of Nx0 pixels draws a closed line with joins

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js new file mode 100644 index 00000000000..cb8224ed848 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeRect.zero.5 +// Description:strokeRect of Nx0 pixels draws a closed line with joins +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("strokeRect of Nx0 pixels draws a closed line with joins"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 250; +ctx.lineJoin = 'round'; +ctx.strokeRect(100, 25, 100, 0); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html new file mode 100644 index 00000000000..0e011add2d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.fillStyle.default + + + + +

    2d.fillStyle.default

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js new file mode 100644 index 00000000000..bd5af5228c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.default.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.default +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.fillStyle, '#000000', "ctx.fillStyle", "'#000000'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html new file mode 100644 index 00000000000..d21282a5900 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.fillStyle.get.semitransparent + + + + +

    2d.fillStyle.get.semitransparent

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js new file mode 100644 index 00000000000..6d544f17e22 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.get.semitransparent +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = 'rgba(255,255,255,0.45)'; +assert_regexp_match(ctx.fillStyle, /^rgba\(255, 255, 255, 0\.4\d+\)$/); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html new file mode 100644 index 00000000000..5da5b976751 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.fillStyle.get.solid + + + + +

    2d.fillStyle.get.solid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js new file mode 100644 index 00000000000..aeea44abd1c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.solid.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.get.solid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#fa0'; +_assertSame(ctx.fillStyle, '#ffaa00', "ctx.fillStyle", "'#ffaa00'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html new file mode 100644 index 00000000000..a390abbb873 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.fillStyle.get.transparent + + + + +

    2d.fillStyle.get.transparent

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js new file mode 100644 index 00000000000..3df91dd1a1c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.get.transparent.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.get.transparent +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = 'rgba(0,0,0,0)'; +_assertSame(ctx.fillStyle, 'rgba(0, 0, 0, 0)', "ctx.fillStyle", "'rgba(0, 0, 0, 0)'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html new file mode 100644 index 00000000000..8d23262029c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.fillStyle.invalidstring + + + + +

    2d.fillStyle.invalidstring

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js new file mode 100644 index 00000000000..50189bdf68f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidstring.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.invalidstring +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillStyle = 'invalid'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html new file mode 100644 index 00000000000..3d1043d28d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.fillStyle.invalidtype + + + + +

    2d.fillStyle.invalidtype

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js new file mode 100644 index 00000000000..422ae3e89b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.invalidtype.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.invalidtype +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillStyle = null; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html new file mode 100644 index 00000000000..f795694bde9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-1 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js new file mode 100644 index 00000000000..c147905d5f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html new file mode 100644 index 00000000000..a2c2c70d625 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-2 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js new file mode 100644 index 00000000000..d7a37d2c037 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html new file mode 100644 index 00000000000..a0bf4f37d0c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-3 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js new file mode 100644 index 00000000000..1709f493da6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html new file mode 100644 index 00000000000..a28f68948d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-4 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js new file mode 100644 index 00000000000..2935c51f291 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html new file mode 100644 index 00000000000..87a0935dab2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-5 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-5

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js new file mode 100644 index 00000000000..64c81080e3f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-5 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html new file mode 100644 index 00000000000..c18f9d90582 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-6 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js new file mode 100644 index 00000000000..fe33f4b2bba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html new file mode 100644 index 00000000000..3ad95db1557 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-7 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-7

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js new file mode 100644 index 00000000000..21d51d7d7f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-7 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html new file mode 100644 index 00000000000..9971b225ba1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-8 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-8

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js new file mode 100644 index 00000000000..b5bc64c8c8b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-8 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html new file mode 100644 index 00000000000..0d99d1457eb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsl-9 + + + + +

    2d.fillStyle.parse.css-color-4-hsl-9

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js new file mode 100644 index 00000000000..cae19531eb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsl-9 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html new file mode 100644 index 00000000000..7f03f71be60 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-1 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js new file mode 100644 index 00000000000..21b44ce7f8c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120 100.0% 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html new file mode 100644 index 00000000000..014957dee12 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-2 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js new file mode 100644 index 00000000000..7bf78b9286c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120 100.0% 50.0% / 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html new file mode 100644 index 00000000000..9fde7bd963d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-3 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js new file mode 100644 index 00000000000..ff6ab801761 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html new file mode 100644 index 00000000000..56699318a5c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-4 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js new file mode 100644 index 00000000000..f3910ef90f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%, 20%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html new file mode 100644 index 00000000000..1e1990f2fae --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-5 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-5

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js new file mode 100644 index 00000000000..c9631ec3025 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-5 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%, 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html new file mode 100644 index 00000000000..0f1b644ea21 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-6 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js new file mode 100644 index 00000000000..c6e4430d947 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120deg, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html new file mode 100644 index 00000000000..da290762d57 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-7 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-7

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js new file mode 100644 index 00000000000..cfeaefd06d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-7 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(133.33333333grad, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html new file mode 100644 index 00000000000..404277d8a0e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-8 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-8

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js new file mode 100644 index 00000000000..fb3415ad903 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-8 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(2.0943951024rad, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html new file mode 100644 index 00000000000..2bd5a10a97c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-hsla-9 + + + + +

    2d.fillStyle.parse.css-color-4-hsla-9

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js new file mode 100644 index 00000000000..1df1c82c8fc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-hsla-9 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(0.3333333333turn, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html new file mode 100644 index 00000000000..3312d05a426 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-1 + + + + +

    2d.fillStyle.parse.css-color-4-rgb-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js new file mode 100644 index 00000000000..4d1386a59b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgb-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0, 255.0, 0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html new file mode 100644 index 00000000000..716d4f807e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-2 + + + + +

    2d.fillStyle.parse.css-color-4-rgb-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js new file mode 100644 index 00000000000..100309e5bc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgb-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0, 255, 0, 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html new file mode 100644 index 00000000000..b0faa05949d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-3 + + + + +

    2d.fillStyle.parse.css-color-4-rgb-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js new file mode 100644 index 00000000000..6ac47795ed8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgb-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0, 255, 0, 20%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html new file mode 100644 index 00000000000..df858019a99 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-4 + + + + +

    2d.fillStyle.parse.css-color-4-rgb-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js new file mode 100644 index 00000000000..acdfb2df415 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgb-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0 255 0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html new file mode 100644 index 00000000000..b38903b0b23 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-5 + + + + +

    2d.fillStyle.parse.css-color-4-rgb-5

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js new file mode 100644 index 00000000000..7c44ddd21fa --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgb-5 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0 255 0 / 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html new file mode 100644 index 00000000000..c54d8dfd0e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgb-6 + + + + +

    2d.fillStyle.parse.css-color-4-rgb-6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js new file mode 100644 index 00000000000..21d62f62132 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgb-6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0 255 0 / 20%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html new file mode 100644 index 00000000000..dbc831db383 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-1 + + + + +

    2d.fillStyle.parse.css-color-4-rgba-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js new file mode 100644 index 00000000000..cbb68061075 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgba-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0, 255.0, 0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html new file mode 100644 index 00000000000..c1f9c6baf6b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-2 + + + + +

    2d.fillStyle.parse.css-color-4-rgba-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js new file mode 100644 index 00000000000..ee3a09a8698 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgba-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0, 255, 0, 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html new file mode 100644 index 00000000000..f992663df6a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-3 + + + + +

    2d.fillStyle.parse.css-color-4-rgba-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js new file mode 100644 index 00000000000..7b5f3926e41 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgba-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0, 255, 0, 20%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html new file mode 100644 index 00000000000..482c95fefc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-4 + + + + +

    2d.fillStyle.parse.css-color-4-rgba-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js new file mode 100644 index 00000000000..8e029350d38 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgba-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0 255 0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html new file mode 100644 index 00000000000..ddfff551d7c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-5 + + + + +

    2d.fillStyle.parse.css-color-4-rgba-5

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js new file mode 100644 index 00000000000..14d2b301537 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgba-5 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0 255 0 / 0.2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html new file mode 100644 index 00000000000..339cf5f918b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.css-color-4-rgba-6 + + + + +

    2d.fillStyle.parse.css-color-4-rgba-6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js new file mode 100644 index 00000000000..016c7cc51a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.css-color-4-rgba-6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0 255 0 / 20%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,51, "50,25", "0,255,0,51"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html new file mode 100644 index 00000000000..6637693b410 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hex3 + + + + +

    2d.fillStyle.parse.hex3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js new file mode 100644 index 00000000000..8ccfe6d694e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hex3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html new file mode 100644 index 00000000000..403ea903871 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hex4 + + + + +

    2d.fillStyle.parse.hex4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js new file mode 100644 index 00000000000..d8743c30ec2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hex4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = '#0f0f'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html new file mode 100644 index 00000000000..c2dbe904b56 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hex6 + + + + +

    2d.fillStyle.parse.hex6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js new file mode 100644 index 00000000000..b6fe583a879 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hex6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = '#00fF00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html new file mode 100644 index 00000000000..b09096eae0c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hex8 + + + + +

    2d.fillStyle.parse.hex8

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js new file mode 100644 index 00000000000..06b5fd0fbdc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hex8.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hex8 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = '#00ff00ff'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html new file mode 100644 index 00000000000..f6f99838484 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-1 + + + + +

    2d.fillStyle.parse.hsl-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js new file mode 100644 index 00000000000..503f5b658b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120, 100%, 50%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html new file mode 100644 index 00000000000..7df911580a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-2 + + + + +

    2d.fillStyle.parse.hsl-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js new file mode 100644 index 00000000000..bb9182a8b88 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl( -240 , 100% , 50% )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html new file mode 100644 index 00000000000..e56c95fb276 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-3 + + + + +

    2d.fillStyle.parse.hsl-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js new file mode 100644 index 00000000000..0809fd424e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(360120, 100%, 50%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html new file mode 100644 index 00000000000..f23a7705394 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-4 + + + + +

    2d.fillStyle.parse.hsl-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js new file mode 100644 index 00000000000..ccbc3cda88d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(-360240, 100%, 50%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html new file mode 100644 index 00000000000..0ef8a0a8cdd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-5 + + + + +

    2d.fillStyle.parse.hsl-5

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js new file mode 100644 index 00000000000..42a9f90924e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-5 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120.0, 100.0%, 50.0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html new file mode 100644 index 00000000000..420b787ec8a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-6 + + + + +

    2d.fillStyle.parse.hsl-6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js new file mode 100644 index 00000000000..9a5368620f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(+120, +100%, +50%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html new file mode 100644 index 00000000000..f586958cddc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-1 + + + + +

    2d.fillStyle.parse.hsl-clamp-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js new file mode 100644 index 00000000000..6c598606ef6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-clamp-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120, 200%, 50%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html new file mode 100644 index 00000000000..92c9c95e23a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-2 + + + + +

    2d.fillStyle.parse.hsl-clamp-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js new file mode 100644 index 00000000000..7aac1c98e7d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-clamp-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120, -200%, 49.9%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html new file mode 100644 index 00000000000..a6cf15069f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-3 + + + + +

    2d.fillStyle.parse.hsl-clamp-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js new file mode 100644 index 00000000000..341153b091d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-clamp-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120, 100%, 200%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html new file mode 100644 index 00000000000..ac414fd6be0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsl-clamp-4 + + + + +

    2d.fillStyle.parse.hsl-clamp-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js new file mode 100644 index 00000000000..403962afc64 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsl-clamp-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsl(120, 100%, -200%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html new file mode 100644 index 00000000000..be595d7a4cc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-1 + + + + +

    2d.fillStyle.parse.hsla-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js new file mode 100644 index 00000000000..8185fdd7c90 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, 100%, 50%, 0.499)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html new file mode 100644 index 00000000000..c1d0486dd7e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-2 + + + + +

    2d.fillStyle.parse.hsla-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js new file mode 100644 index 00000000000..91c882ec07e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla( 120.0 , 100.0% , 50.0% , 1 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html new file mode 100644 index 00000000000..80b0ecf3383 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-1 + + + + +

    2d.fillStyle.parse.hsla-clamp-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js new file mode 100644 index 00000000000..b031416601f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-clamp-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, 200%, 50%, 1)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html new file mode 100644 index 00000000000..ae4e637a229 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-2 + + + + +

    2d.fillStyle.parse.hsla-clamp-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js new file mode 100644 index 00000000000..671ca1ad390 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-clamp-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, -200%, 49.9%, 1)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html new file mode 100644 index 00000000000..9e35634b537 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-3 + + + + +

    2d.fillStyle.parse.hsla-clamp-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js new file mode 100644 index 00000000000..a6045c614ab --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-clamp-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, 100%, 200%, 1)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 255,255,255,255, "50,25", "255,255,255,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html new file mode 100644 index 00000000000..858b459c1f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-4 + + + + +

    2d.fillStyle.parse.hsla-clamp-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js new file mode 100644 index 00000000000..77be7be041b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-clamp-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, 100%, -200%, 1)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,255, "50,25", "0,0,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html new file mode 100644 index 00000000000..285108a6e74 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-5 + + + + +

    2d.fillStyle.parse.hsla-clamp-5

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js new file mode 100644 index 00000000000..d534d4d6c72 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-clamp-5 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, 100%, 50%, 2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html new file mode 100644 index 00000000000..8056511b633 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.hsla-clamp-6 + + + + +

    2d.fillStyle.parse.hsla-clamp-6

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js new file mode 100644 index 00000000000..32a77d921e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.hsla-clamp-6 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'hsla(120, 100%, 0%, -2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html new file mode 100644 index 00000000000..f0ea1a733ac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.html4 + + + + +

    2d.fillStyle.parse.html4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js new file mode 100644 index 00000000000..c954966c38a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.html4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.html4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'limE'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html new file mode 100644 index 00000000000..b23a3762ef3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-1 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsl-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js new file mode 100644 index 00000000000..27db125448a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsl-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html new file mode 100644 index 00000000000..2227d55fb0a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-2 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsl-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js new file mode 100644 index 00000000000..4edbae4d7ed --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsl-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html new file mode 100644 index 00000000000..dc7caad3f7f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-3 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsl-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js new file mode 100644 index 00000000000..4744f9e873c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsl-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html new file mode 100644 index 00000000000..affb65e76c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-4 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsl-4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js new file mode 100644 index 00000000000..545df307f75 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsl-4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0 100% 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html new file mode 100644 index 00000000000..407f6ee2cc2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-5 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsl-5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js new file mode 100644 index 00000000000..960e318414c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsl-5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 100%, 50% /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html new file mode 100644 index 00000000000..319676e2102 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-1 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsla-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js new file mode 100644 index 00000000000..0bbf5accd5e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsla-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsla(0, 100%, 50% / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html new file mode 100644 index 00000000000..001e1baa62b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-2 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsla-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js new file mode 100644 index 00000000000..c1e7c0a5663 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsla-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsla(0 100% 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html new file mode 100644 index 00000000000..4e9e59c0523 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-3 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-hsla-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js new file mode 100644 index 00000000000..bb45213c4fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-hsla-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsla(0, 100% 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html new file mode 100644 index 00000000000..ba0ca5e1bbb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-1 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgb-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js new file mode 100644 index 00000000000..17a8f440566 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgb-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html new file mode 100644 index 00000000000..42354ae8ca6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-2 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgb-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js new file mode 100644 index 00000000000..7f6efc6060e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgb-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html new file mode 100644 index 00000000000..402e6ad57f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-3 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgb-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js new file mode 100644 index 00000000000..f5d551c041c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgb-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html new file mode 100644 index 00000000000..2556a9c9b1e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-4 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgb-4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js new file mode 100644 index 00000000000..966f465868f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgb-4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(0 0 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html new file mode 100644 index 00000000000..c2fc1ee8f6c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-5 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgb-5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js new file mode 100644 index 00000000000..3a54246c70a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgb-5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(0, 0, 0 /)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html new file mode 100644 index 00000000000..f842efaf0e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-1 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgba-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js new file mode 100644 index 00000000000..88f7d35465f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgba-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255, 0, 0 / 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html new file mode 100644 index 00000000000..22660ca39be --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-2 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgba-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js new file mode 100644 index 00000000000..cd4b4890bd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgba-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255 0 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html new file mode 100644 index 00000000000..e89a715ea76 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-3 + + + + +

    2d.fillStyle.parse.invalid.css-color-4-rgba-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js new file mode 100644 index 00000000000..999e0b59990 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.css-color-4-rgba-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255, 0 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html new file mode 100644 index 00000000000..07ee3701851 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex1 + + + + +

    2d.fillStyle.parse.invalid.hex1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js new file mode 100644 index 00000000000..f595e108087 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html new file mode 100644 index 00000000000..330c4bac174 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex2 + + + + +

    2d.fillStyle.parse.invalid.hex2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js new file mode 100644 index 00000000000..6fb16f30dee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#f0'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html new file mode 100644 index 00000000000..0a69c2804d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex3 + + + + +

    2d.fillStyle.parse.invalid.hex3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js new file mode 100644 index 00000000000..832f4dea120 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#g00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html new file mode 100644 index 00000000000..5565e7002e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex4 + + + + +

    2d.fillStyle.parse.invalid.hex4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js new file mode 100644 index 00000000000..f7a7097acdf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#fg00'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html new file mode 100644 index 00000000000..b1e452c2272 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex5 + + + + +

    2d.fillStyle.parse.invalid.hex5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js new file mode 100644 index 00000000000..a931467b7a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#ff000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html new file mode 100644 index 00000000000..b0954ef1fe0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex6 + + + + +

    2d.fillStyle.parse.invalid.hex6

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js new file mode 100644 index 00000000000..750548d74e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex6 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#fg0000'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html new file mode 100644 index 00000000000..e53cb87a8bc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex7 + + + + +

    2d.fillStyle.parse.invalid.hex7

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js new file mode 100644 index 00000000000..7796a4e99b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex7 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#ff0000f'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html new file mode 100644 index 00000000000..a59332f040d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hex8 + + + + +

    2d.fillStyle.parse.invalid.hex8

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js new file mode 100644 index 00000000000..2156ef06cc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hex8 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '#fg0000ff'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html new file mode 100644 index 00000000000..fb1548478ea --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-1 + + + + +

    2d.fillStyle.parse.invalid.hsl-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js new file mode 100644 index 00000000000..f1b2a5086fc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsl-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0%, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html new file mode 100644 index 00000000000..7f50966e0b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-2 + + + + +

    2d.fillStyle.parse.invalid.hsl-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js new file mode 100644 index 00000000000..b09a92dd94a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsl-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(z, 100%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html new file mode 100644 index 00000000000..7244cd0e34c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-3 + + + + +

    2d.fillStyle.parse.invalid.hsl-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js new file mode 100644 index 00000000000..0b2a0652a35 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsl-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 0, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html new file mode 100644 index 00000000000..3577666a8c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-4 + + + + +

    2d.fillStyle.parse.invalid.hsl-4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js new file mode 100644 index 00000000000..f1743472213 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsl-4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 100%, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html new file mode 100644 index 00000000000..a3b907089e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-5 + + + + +

    2d.fillStyle.parse.invalid.hsl-5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js new file mode 100644 index 00000000000..331ec070233 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsl-5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 100.%, 50%)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html new file mode 100644 index 00000000000..9e80a6223b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsl-6 + + + + +

    2d.fillStyle.parse.invalid.hsl-6

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js new file mode 100644 index 00000000000..3cad84f77a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsl-6 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsl(0, 100%, 50%,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html new file mode 100644 index 00000000000..0904209ce36 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsla-1 + + + + +

    2d.fillStyle.parse.invalid.hsla-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js new file mode 100644 index 00000000000..011fbe7bd7d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsla-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsla(0%, 100%, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html new file mode 100644 index 00000000000..6e89e9d7007 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsla-2 + + + + +

    2d.fillStyle.parse.invalid.hsla-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js new file mode 100644 index 00000000000..9ac75b7dc52 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsla-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsla(0, 0, 50%, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html new file mode 100644 index 00000000000..82ca843a42d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.hsla-3 + + + + +

    2d.fillStyle.parse.invalid.hsla-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js new file mode 100644 index 00000000000..5f5126efc14 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.hsla-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'hsla(0, 0, 50%, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html new file mode 100644 index 00000000000..26bbd26b7d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-1 + + + + +

    2d.fillStyle.parse.invalid.name-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js new file mode 100644 index 00000000000..70b244089b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.name-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'darkbrown'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html new file mode 100644 index 00000000000..d112d5d6811 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-2 + + + + +

    2d.fillStyle.parse.invalid.name-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js new file mode 100644 index 00000000000..1aa0f528434 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.name-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'firebrick1'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html new file mode 100644 index 00000000000..07a0f6cc83b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-3 + + + + +

    2d.fillStyle.parse.invalid.name-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js new file mode 100644 index 00000000000..abc579a889a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.name-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'red blue'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html new file mode 100644 index 00000000000..a69c30e8764 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-4 + + + + +

    2d.fillStyle.parse.invalid.name-4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js new file mode 100644 index 00000000000..7b2f119d0e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.name-4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '"red"'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html new file mode 100644 index 00000000000..3f3ae631192 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.name-5 + + + + +

    2d.fillStyle.parse.invalid.name-5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js new file mode 100644 index 00000000000..a3f9cf144e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.name-5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = '"red'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html new file mode 100644 index 00000000000..3ba241bc908 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgb-1 + + + + +

    2d.fillStyle.parse.invalid.rgb-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js new file mode 100644 index 00000000000..c1ef405c6a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgb-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(255.0, 0, 0,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html new file mode 100644 index 00000000000..061784f9ea2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgb-2 + + + + +

    2d.fillStyle.parse.invalid.rgb-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js new file mode 100644 index 00000000000..e2c287ebe1f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgb-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(100%, 0, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html new file mode 100644 index 00000000000..16416672870 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgb-3 + + + + +

    2d.fillStyle.parse.invalid.rgb-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js new file mode 100644 index 00000000000..bdb9b6dc7a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgb-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgb(255, - 1, 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html new file mode 100644 index 00000000000..bc40569ca45 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-1 + + + + +

    2d.fillStyle.parse.invalid.rgba-1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js new file mode 100644 index 00000000000..290f175096d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgba-1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(100%, 0, 0, 1)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html new file mode 100644 index 00000000000..eded526dfa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-2 + + + + +

    2d.fillStyle.parse.invalid.rgba-2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js new file mode 100644 index 00000000000..038b3838ed8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgba-2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255, 0, 0, 1. 0)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html new file mode 100644 index 00000000000..dec7ace9295 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-3 + + + + +

    2d.fillStyle.parse.invalid.rgba-3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js new file mode 100644 index 00000000000..9bdf773ca09 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgba-3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255, 0, 0, 1.)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html new file mode 100644 index 00000000000..8b0aee56eab --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-4 + + + + +

    2d.fillStyle.parse.invalid.rgba-4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js new file mode 100644 index 00000000000..0db44c38836 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgba-4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255, 0, 0, '; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html new file mode 100644 index 00000000000..a3d9790a746 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.invalid.rgba-5 + + + + +

    2d.fillStyle.parse.invalid.rgba-5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js new file mode 100644 index 00000000000..e8317ecd30a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.invalid.rgba-5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#0f0'; +try { ctx.fillStyle = 'rgba(255, 0, 0, 1,)'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html new file mode 100644 index 00000000000..5c48aeef731 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-1 + + + + +

    2d.fillStyle.parse.rgb-clamp-1

    +

    + +

    Assumes colours are clamped to [0,255]. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js new file mode 100644 index 00000000000..b98c41cb310 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-clamp-1 +// Description: +// Note:

    Assumes colours are clamped to [0,255]. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(-1000, 1000, -1000)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html new file mode 100644 index 00000000000..3db018c5f08 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-2 + + + + +

    2d.fillStyle.parse.rgb-clamp-2

    +

    + +

    Assumes colours are clamped to [0,255]. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js new file mode 100644 index 00000000000..de7f906714d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-clamp-2 +// Description: +// Note:

    Assumes colours are clamped to [0,255]. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(-200%, 200%, -200%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html new file mode 100644 index 00000000000..bde23483776 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-3 + + + + +

    2d.fillStyle.parse.rgb-clamp-3

    +

    + +

    Assumes colours are clamped to [0,255]. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js new file mode 100644 index 00000000000..a594da0c17d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-clamp-3 +// Description: +// Note:

    Assumes colours are clamped to [0,255]. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(-2147483649, 4294967298, -18446744073709551619)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html new file mode 100644 index 00000000000..3668053c056 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-4 + + + + +

    2d.fillStyle.parse.rgb-clamp-4

    +

    + +

    Assumes colours are clamped to [0,255]. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js new file mode 100644 index 00000000000..0dcbcbc8338 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-clamp-4 +// Description: +// Note:

    Assumes colours are clamped to [0,255]. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(-1000000000000000000000000000000000000000, 1000000000000000000000000000000000000000, -1000000000000000000000000000000000000000)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html new file mode 100644 index 00000000000..04913c4384b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-clamp-5 + + + + +

    2d.fillStyle.parse.rgb-clamp-5

    +

    + +

    Assumes colours are clamped to [0,255]. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js new file mode 100644 index 00000000000..21ebeff24e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-clamp-5 +// Description: +// Note:

    Assumes colours are clamped to [0,255]. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html new file mode 100644 index 00000000000..31586c65a57 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-eof + + + + +

    2d.fillStyle.parse.rgb-eof

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js new file mode 100644 index 00000000000..ead4ddd5f9f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-eof +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0, 255, 0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html new file mode 100644 index 00000000000..2821ff2c31c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-num + + + + +

    2d.fillStyle.parse.rgb-num

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js new file mode 100644 index 00000000000..333fe0fd304 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-num +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0,255,0)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html new file mode 100644 index 00000000000..0fd927bfe8d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgb-percent + + + + +

    2d.fillStyle.parse.rgb-percent

    +

    + +

    CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...) + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js new file mode 100644 index 00000000000..67513fb524c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgb-percent +// Description: +// Note:

    CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...) + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgb(0% ,100% ,0%)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html new file mode 100644 index 00000000000..6e403249e69 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-clamp-1 + + + + +

    2d.fillStyle.parse.rgba-clamp-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js new file mode 100644 index 00000000000..561f23228d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-clamp-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0, 255, 0, -2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html new file mode 100644 index 00000000000..c65b4405602 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-clamp-2 + + + + +

    2d.fillStyle.parse.rgba-clamp-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js new file mode 100644 index 00000000000..7d7b27c6b5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-clamp-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0, 255, 0, 2)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html new file mode 100644 index 00000000000..5f05f788ff2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-eof + + + + +

    2d.fillStyle.parse.rgba-eof

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js new file mode 100644 index 00000000000..8fa8b51e97a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-eof +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0, 255, 0, 1'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html new file mode 100644 index 00000000000..8b75a3fa4ee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-num-1 + + + + +

    2d.fillStyle.parse.rgba-num-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js new file mode 100644 index 00000000000..2dbb92859ae --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-num-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba( 0 , 255 , 0 , .499 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html new file mode 100644 index 00000000000..c843b9ab1c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-num-2 + + + + +

    2d.fillStyle.parse.rgba-num-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js new file mode 100644 index 00000000000..3d8a26a03a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-num-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba( 0 , 255 , 0 , 0.499 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html new file mode 100644 index 00000000000..ccd02aecb1f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-percent + + + + +

    2d.fillStyle.parse.rgba-percent

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js new file mode 100644 index 00000000000..09521661fd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-percent +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba(0%,100%,0%,0.499)'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,127, "50,25", "0,255,0,127"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html new file mode 100644 index 00000000000..ba577fd9a95 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-1 + + + + +

    2d.fillStyle.parse.rgba-solid-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js new file mode 100644 index 00000000000..585e851b033 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-solid-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba( 0 , 255 , 0 , 1 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html new file mode 100644 index 00000000000..6fb884c14ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-2 + + + + +

    2d.fillStyle.parse.rgba-solid-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js new file mode 100644 index 00000000000..61265402a2a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-solid-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba( 0 , 255 , 0 , 1.0 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html new file mode 100644 index 00000000000..e48a586f213 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-3 + + + + +

    2d.fillStyle.parse.rgba-solid-3

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js new file mode 100644 index 00000000000..db4516adc65 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-solid-3 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba( 0 , 255 , 0 , +1 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html new file mode 100644 index 00000000000..5a48b8d1ad3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.rgba-solid-4 + + + + +

    2d.fillStyle.parse.rgba-solid-4

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js new file mode 100644 index 00000000000..181cc45bdee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.rgba-solid-4 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'rgba( -0 , 255 , +0 , 1 )'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html new file mode 100644 index 00000000000..e9c9726b769 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.svg-1 + + + + +

    2d.fillStyle.parse.svg-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js new file mode 100644 index 00000000000..71bcb605f6e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.svg-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'gray'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 128,128,128,255, "50,25", "128,128,128,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html new file mode 100644 index 00000000000..dcfec31d54d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.svg-2 + + + + +

    2d.fillStyle.parse.svg-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js new file mode 100644 index 00000000000..0ac805440e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.svg-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'grey'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 128,128,128,255, "50,25", "128,128,128,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html new file mode 100644 index 00000000000..ce35a742499 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.system + + + + +

    2d.fillStyle.parse.system

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js new file mode 100644 index 00000000000..ab5907deaf7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.system.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.system +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'ThreeDDarkShadow'; +assert_regexp_match(ctx.fillStyle, /^#(?!(FF0000|ff0000|f00)$)/); // test that it's not red + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html new file mode 100644 index 00000000000..3e7da89db94 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.transparent-1 + + + + +

    2d.fillStyle.parse.transparent-1

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js new file mode 100644 index 00000000000..10bb53b5e4d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.transparent-1 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'transparent'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html new file mode 100644 index 00000000000..9dd87625f5b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.fillStyle.parse.transparent-2 + + + + +

    2d.fillStyle.parse.transparent-2

    +

    + +

    + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js new file mode 100644 index 00000000000..0dd078467f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.fillStyle.parse.transparent-2 +// Description: +// Note:

    + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + + +ctx.fillStyle = '#f00'; +ctx.fillStyle = 'TrAnSpArEnT'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,0,0,0, "50,25", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html new file mode 100644 index 00000000000..372055807c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.gradient.empty + + + + +

    2d.gradient.empty

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js new file mode 100644 index 00000000000..146520e9d70 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.empty.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.empty +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(0, 0, 0, 50); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html new file mode 100644 index 00000000000..696c6e6afb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.alpha + + + + +

    2d.gradient.interpolate.alpha

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js new file mode 100644 index 00000000000..fe53db22029 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.alpha.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.alpha +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#ff0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, 'rgba(0,0,255, 0)'); +g.addColorStop(1, 'rgba(0,0,255, 1)'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 25,25, 191,191,63,255, "25,25", "191,191,63,255", 3); +_assertPixelApprox(offscreenCanvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 3); +_assertPixelApprox(offscreenCanvas, 75,25, 63,63,191,255, "75,25", "63,63,191,255", 3); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html new file mode 100644 index 00000000000..a924677855c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.colour + + + + +

    2d.gradient.interpolate.colour

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js new file mode 100644 index 00000000000..87cea53d523 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colour.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.colour +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, '#ff0'); +g.addColorStop(1, '#00f'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 25,25, 191,191,63,255, "25,25", "191,191,63,255", 3); +_assertPixelApprox(offscreenCanvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 3); +_assertPixelApprox(offscreenCanvas, 75,25, 63,63,191,255, "75,25", "63,63,191,255", 3); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html new file mode 100644 index 00000000000..19c4e47df54 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.colouralpha + + + + +

    2d.gradient.interpolate.colouralpha

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js new file mode 100644 index 00000000000..34c2d037757 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.colouralpha +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, 'rgba(255,255,0, 0)'); +g.addColorStop(1, 'rgba(0,0,255, 1)'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 25,25, 190,190,65,65, "25,25", "190,190,65,65", 3); +_assertPixelApprox(offscreenCanvas, 50,25, 126,126,128,128, "50,25", "126,126,128,128", 3); +_assertPixelApprox(offscreenCanvas, 75,25, 62,62,192,192, "75,25", "62,62,192,192", 3); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html new file mode 100644 index 00000000000..7f5cd7bc2b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.multiple + + + + +

    2d.gradient.interpolate.multiple

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js new file mode 100644 index 00000000000..33bdf88b04f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.multiple.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.multiple +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 200; +var g = ctx.createLinearGradient(0, 0, 200, 0); +g.addColorStop(0, '#ff0'); +g.addColorStop(0.5, '#0ff'); +g.addColorStop(1, '#f0f'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 200, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,255,127,255, "50,25", "127,255,127,255", 3); +_assertPixelApprox(offscreenCanvas, 100,25, 0,255,255,255, "100,25", "0,255,255,255", 3); +_assertPixelApprox(offscreenCanvas, 150,25, 127,127,255,255, "150,25", "127,127,255,255", 3); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html new file mode 100644 index 00000000000..f0fd9afab66 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.outside + + + + +

    2d.gradient.interpolate.outside

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js new file mode 100644 index 00000000000..9216d0fc511 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.outside.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.outside +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(25, 0, 75, 0); +g.addColorStop(0.4, '#0f0'); +g.addColorStop(0.6, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 20,25, 0,255,0,255, "20,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html new file mode 100644 index 00000000000..945873eea69 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html @@ -0,0 +1,49 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.overlap + + + + +

    2d.gradient.interpolate.overlap

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js new file mode 100644 index 00000000000..bf5a5a559c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap.worker.js @@ -0,0 +1,45 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.overlap +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 200; +var g = ctx.createLinearGradient(0, 0, 200, 0); +g.addColorStop(0, '#f00'); +g.addColorStop(0, '#ff0'); +g.addColorStop(0.25, '#00f'); +g.addColorStop(0.25, '#0f0'); +g.addColorStop(0.25, '#0f0'); +g.addColorStop(0.25, '#0f0'); +g.addColorStop(0.25, '#ff0'); +g.addColorStop(0.5, '#00f'); +g.addColorStop(0.5, '#0f0'); +g.addColorStop(0.75, '#00f'); +g.addColorStop(0.75, '#f00'); +g.addColorStop(0.75, '#ff0'); +g.addColorStop(0.5, '#0f0'); +g.addColorStop(0.5, '#0f0'); +g.addColorStop(0.5, '#ff0'); +g.addColorStop(1, '#00f'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 200, 50); +_assertPixelApprox(offscreenCanvas, 49,25, 0,0,255,255, "49,25", "0,0,255,255", 16); +_assertPixelApprox(offscreenCanvas, 51,25, 255,255,0,255, "51,25", "255,255,0,255", 16); +_assertPixelApprox(offscreenCanvas, 99,25, 0,0,255,255, "99,25", "0,0,255,255", 16); +_assertPixelApprox(offscreenCanvas, 101,25, 255,255,0,255, "101,25", "255,255,0,255", 16); +_assertPixelApprox(offscreenCanvas, 149,25, 0,0,255,255, "149,25", "0,0,255,255", 16); +_assertPixelApprox(offscreenCanvas, 151,25, 255,255,0,255, "151,25", "255,255,0,255", 16); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html new file mode 100644 index 00000000000..f20904e248d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.overlap2 + + + + +

    2d.gradient.interpolate.overlap2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js new file mode 100644 index 00000000000..42b84731b27 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.overlap2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ]; +for (var p = 0; p < ps.length; ++p) +{ + g.addColorStop(ps[p], '#0f0'); + for (var i = 0; i < 15; ++i) + g.addColorStop(ps[p], '#f00'); + g.addColorStop(ps[p], '#0f0'); +} +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 30,25, 0,255,0,255, "30,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 40,25, 0,255,0,255, "40,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 60,25, 0,255,0,255, "60,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,25, 0,255,0,255, "80,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html new file mode 100644 index 00000000000..c585bb0857b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.solid + + + + +

    2d.gradient.interpolate.solid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js new file mode 100644 index 00000000000..4b500080a73 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.solid.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.solid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html new file mode 100644 index 00000000000..ffdb32de87c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.vertical + + + + +

    2d.gradient.interpolate.vertical

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js new file mode 100644 index 00000000000..8212ad82608 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.vertical.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.vertical +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 0, 50); +g.addColorStop(0, '#ff0'); +g.addColorStop(1, '#00f'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,12, 191,191,63,255, "50,12", "191,191,63,255", 10); +_assertPixelApprox(offscreenCanvas, 50,25, 127,127,127,255, "50,25", "127,127,127,255", 5); +_assertPixelApprox(offscreenCanvas, 50,37, 63,63,191,255, "50,37", "63,63,191,255", 10); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html new file mode 100644 index 00000000000..7c8eea808e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.zerosize.fill + + + + +

    2d.gradient.interpolate.zerosize.fill

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js new file mode 100644 index 00000000000..4dbe1462382 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.zerosize.fill +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.rect(0, 0, 100, 50); +ctx.fill(); +_assertPixel(offscreenCanvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html new file mode 100644 index 00000000000..5eb37c86997 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.zerosize.fillRect + + + + +

    2d.gradient.interpolate.zerosize.fillRect

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js new file mode 100644 index 00000000000..935e16a7db9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.zerosize.fillRect +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 40,20, 0,255,0,255, "40,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html new file mode 100644 index 00000000000..7215a955483 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.zerosize.stroke + + + + +

    2d.gradient.interpolate.zerosize.stroke

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js new file mode 100644 index 00000000000..cda4dc46c16 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.zerosize.stroke +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.strokeStyle = g; +ctx.rect(20, 20, 60, 10); +ctx.stroke(); +_assertPixel(offscreenCanvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html new file mode 100644 index 00000000000..21c94eea7ff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.interpolate.zerosize.strokeRect + + + + +

    2d.gradient.interpolate.zerosize.strokeRect

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js new file mode 100644 index 00000000000..78b8e8f1246 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.interpolate.zerosize.strokeRect +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.strokeStyle = g; +ctx.strokeRect(20, 20, 60, 10); +_assertPixel(offscreenCanvas, 19,19, 0,255,0,255, "19,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,19, 0,255,0,255, "20,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,19, 0,255,0,255, "21,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 19,20, 0,255,0,255, "19,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,20, 0,255,0,255, "21,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 19,21, 0,255,0,255, "19,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,21, 0,255,0,255, "20,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,21, 0,255,0,255, "21,21", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html new file mode 100644 index 00000000000..47b1ee5b2fb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.gradient.linear.nonfinite + + + + +

    2d.gradient.linear.nonfinite

    +

    createLinearGradient() throws TypeError if arguments are not finite

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js new file mode 100644 index 00000000000..502921f61f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.nonfinite.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.linear.nonfinite +// Description:createLinearGradient() throws TypeError if arguments are not finite +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createLinearGradient() throws TypeError if arguments are not finite"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, 0, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(-Infinity, 0, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(NaN, 0, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, Infinity, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, -Infinity, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, NaN, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, Infinity, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, -Infinity, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, NaN, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, 1, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, 1, -Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, 1, NaN); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, Infinity, 1, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, Infinity, 1, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, 0, Infinity, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(Infinity, 0, 1, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, Infinity, Infinity, 0); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, Infinity, 1, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createLinearGradient(0, 0, Infinity, Infinity); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html new file mode 100644 index 00000000000..43b17d6106c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.gradient.linear.transform.1 + + + + +

    2d.gradient.linear.transform.1

    +

    Linear gradient coordinates are relative to the coordinate space at the time of filling

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js new file mode 100644 index 00000000000..f775d85095f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.1.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.linear.transform.1 +// Description:Linear gradient coordinates are relative to the coordinate space at the time of filling +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Linear gradient coordinates are relative to the coordinate space at the time of filling"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 200, 0); +g.addColorStop(0, '#f00'); +g.addColorStop(0.25, '#0f0'); +g.addColorStop(0.75, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.translate(-50, 0); +ctx.fillRect(50, 0, 100, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html new file mode 100644 index 00000000000..44c95e7c052 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.gradient.linear.transform.2 + + + + +

    2d.gradient.linear.transform.2

    +

    Linear gradient coordinates are relative to the coordinate space at the time of filling

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js new file mode 100644 index 00000000000..bca8df0af4b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.2.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.linear.transform.2 +// Description:Linear gradient coordinates are relative to the coordinate space at the time of filling +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Linear gradient coordinates are relative to the coordinate space at the time of filling"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.translate(100, 0); +var g = ctx.createLinearGradient(0, 0, 200, 0); +g.addColorStop(0, '#f00'); +g.addColorStop(0.25, '#0f0'); +g.addColorStop(0.75, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.translate(-150, 0); +ctx.fillRect(50, 0, 100, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html new file mode 100644 index 00000000000..963b7eadb11 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.gradient.linear.transform.3 + + + + +

    2d.gradient.linear.transform.3

    +

    Linear gradient transforms do not experience broken caching effects

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js new file mode 100644 index 00000000000..6acfd00ef92 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.linear.transform.3.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.linear.transform.3 +// Description:Linear gradient transforms do not experience broken caching effects +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Linear gradient transforms do not experience broken caching effects"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 200, 0); +g.addColorStop(0, '#f00'); +g.addColorStop(0.25, '#0f0'); +g.addColorStop(0.75, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(-50, 0); +ctx.fillRect(50, 0, 100, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html new file mode 100644 index 00000000000..1aec24c65db --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.gradient.object.compare + + + + +

    2d.gradient.object.compare

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js new file mode 100644 index 00000000000..affd64388b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.compare.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.object.compare +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g1 = ctx.createLinearGradient(0, 0, 100, 0); +var g2 = ctx.createLinearGradient(0, 0, 100, 0); +_assertDifferent(g1, g2, "g1", "g2"); +ctx.fillStyle = g1; +_assertSame(ctx.fillStyle, g1, "ctx.fillStyle", "g1"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html new file mode 100644 index 00000000000..eeb62426d04 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.gradient.object.crosscanvas + + + + +

    2d.gradient.object.crosscanvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js new file mode 100644 index 00000000000..9699977a6fe --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.crosscanvas.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.object.crosscanvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var g = offscreenCanvas2.getContext('2d').createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html new file mode 100644 index 00000000000..795673bad7d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.gradient.object.invalidcolour + + + + +

    2d.gradient.object.invalidcolour

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js new file mode 100644 index 00000000000..1fa62f3b17e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidcolour.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.object.invalidcolour +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +assert_throws("SYNTAX_ERR", function() { g.addColorStop(0, ""); }); +assert_throws("SYNTAX_ERR", function() { g.addColorStop(0, 'null'); }); +assert_throws("SYNTAX_ERR", function() { g.addColorStop(0, 'undefined'); }); +assert_throws("SYNTAX_ERR", function() { g.addColorStop(0, null); }); +assert_throws("SYNTAX_ERR", function() { g.addColorStop(0, undefined); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html new file mode 100644 index 00000000000..2dd87fb47cf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.gradient.object.invalidoffset + + + + +

    2d.gradient.object.invalidoffset

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js new file mode 100644 index 00000000000..28f7111579f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.invalidoffset.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.object.invalidoffset +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(0, 0, 100, 0); +assert_throws("INDEX_SIZE_ERR", function() { g.addColorStop(-1, '#000'); }); +assert_throws("INDEX_SIZE_ERR", function() { g.addColorStop(2, '#000'); }); +assert_throws(new TypeError(), function() { g.addColorStop(Infinity, '#000'); }); +assert_throws(new TypeError(), function() { g.addColorStop(-Infinity, '#000'); }); +assert_throws(new TypeError(), function() { g.addColorStop(NaN, '#000'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html new file mode 100644 index 00000000000..c7f36a31993 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.gradient.object.update + + + + +

    2d.gradient.object.update

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js new file mode 100644 index 00000000000..028d9342416 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.object.update.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.object.update +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createLinearGradient(-100, 0, 200, 0); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +g.addColorStop(0.1, '#0f0'); +g.addColorStop(0.9, '#0f0'); +ctx.fillRect(0, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html new file mode 100644 index 00000000000..6819e1601ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.behind + + + + +

    2d.gradient.radial.cone.behind

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js new file mode 100644 index 00000000000..397ff4ead14 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.behind.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.behind +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html new file mode 100644 index 00000000000..0c81b81e842 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.beside + + + + +

    2d.gradient.radial.cone.beside

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js new file mode 100644 index 00000000000..145e5119e2e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.beside.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.beside +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html new file mode 100644 index 00000000000..51457750b61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.bottom + + + + +

    2d.gradient.radial.cone.bottom

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js new file mode 100644 index 00000000000..daa24b06cd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.bottom +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html new file mode 100644 index 00000000000..8f6c3025d9f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.cylinder + + + + +

    2d.gradient.radial.cone.cylinder

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js new file mode 100644 index 00000000000..85f249571be --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.cylinder +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html new file mode 100644 index 00000000000..c5b46bef906 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.front + + + + +

    2d.gradient.radial.cone.front

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js new file mode 100644 index 00000000000..a7758e9e6b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.front.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.front +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html new file mode 100644 index 00000000000..a7025577781 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.shape1 + + + + +

    2d.gradient.radial.cone.shape1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js new file mode 100644 index 00000000000..41323f632a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.shape1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var tol = 1; // tolerance to avoid antialiasing artifacts +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(30+tol, 40); +ctx.lineTo(110, -20+tol); +ctx.lineTo(110, 100-tol); +ctx.fill(); +var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html new file mode 100644 index 00000000000..f4f8bb551dd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.shape2 + + + + +

    2d.gradient.radial.cone.shape2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js new file mode 100644 index 00000000000..4a0b9adf460 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.shape2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var tol = 1; // tolerance to avoid antialiasing artifacts +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(30-tol, 40); +ctx.lineTo(110, -20-tol); +ctx.lineTo(110, 100+tol); +ctx.fill(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html new file mode 100644 index 00000000000..36f439ea700 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.cone.top + + + + +

    2d.gradient.radial.cone.top

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js new file mode 100644 index 00000000000..4275e56f782 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.cone.top.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.cone.top +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html new file mode 100644 index 00000000000..9bbf489b80d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.equal + + + + +

    2d.gradient.radial.equal

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js new file mode 100644 index 00000000000..f5224a32af0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.equal.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.equal +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html new file mode 100644 index 00000000000..2cdcd8843eb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.inside1 + + + + +

    2d.gradient.radial.inside1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js new file mode 100644 index 00000000000..9a3f95a1f2d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside1.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.inside1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html new file mode 100644 index 00000000000..0a79dbef2db --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.inside2 + + + + +

    2d.gradient.radial.inside2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js new file mode 100644 index 00000000000..4715d4e2bb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside2.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.inside2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html new file mode 100644 index 00000000000..25d276edf43 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.gradient.radial.inside3 + + + + +

    2d.gradient.radial.inside3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js new file mode 100644 index 00000000000..b1f5530c146 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.inside3.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.inside3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); +g.addColorStop(0, '#f00'); +g.addColorStop(0.993, '#f00'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html new file mode 100644 index 00000000000..7de3114838c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.gradient.radial.negative + + + + +

    2d.gradient.radial.negative

    +

    createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js new file mode 100644 index 00000000000..c6a98cacdfe --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.negative.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.negative +// Description:createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); }); +assert_throws("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); }); +assert_throws("INDEX_SIZE_ERR", function() { ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html new file mode 100644 index 00000000000..22dbe277aa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html @@ -0,0 +1,98 @@ + + +OffscreenCanvas test: 2d.gradient.radial.nonfinite + + + + +

    2d.gradient.radial.nonfinite

    +

    createRadialGradient() throws TypeError if arguments are not finite

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js new file mode 100644 index 00000000000..bbd2e95a2ee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.nonfinite.worker.js @@ -0,0 +1,94 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.nonfinite +// Description:createRadialGradient() throws TypeError if arguments are not finite +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createRadialGradient() throws TypeError if arguments are not finite"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(-Infinity, 0, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(NaN, 0, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, -Infinity, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, NaN, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, NaN, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, -Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, NaN, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, -Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, NaN, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, 0, -Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, 0, NaN); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, Infinity, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, Infinity, 1, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, Infinity, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(Infinity, 0, 1, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, Infinity, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, Infinity, 1, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, 0, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, Infinity, 0, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, 1); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, Infinity, 0, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createRadialGradient(0, 0, 1, 0, Infinity, Infinity); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html new file mode 100644 index 00000000000..ba0676bb7a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.outside1 + + + + +

    2d.gradient.radial.outside1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js new file mode 100644 index 00000000000..58280a6e45d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside1.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.outside1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#0f0'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html new file mode 100644 index 00000000000..24c3a739e24 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.outside2 + + + + +

    2d.gradient.radial.outside2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js new file mode 100644 index 00000000000..7f1b101bdda --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside2.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.outside2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html new file mode 100644 index 00000000000..42589dd1dfc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.gradient.radial.outside3 + + + + +

    2d.gradient.radial.outside3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js new file mode 100644 index 00000000000..3c41392126c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.outside3.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.outside3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); +g.addColorStop(0, '#0f0'); +g.addColorStop(0.001, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html new file mode 100644 index 00000000000..7fc343028fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.touch1 + + + + +

    2d.gradient.radial.touch1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js new file mode 100644 index 00000000000..d176c01393b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch1.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.touch1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html new file mode 100644 index 00000000000..1c8597d0c61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.gradient.radial.touch2 + + + + +

    2d.gradient.radial.touch2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js new file mode 100644 index 00000000000..2ffbc757bee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch2.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.touch2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150); +g.addColorStop(0, '#f00'); +g.addColorStop(0.01, '#0f0'); +g.addColorStop(0.99, '#0f0'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html new file mode 100644 index 00000000000..1a8a81e0789 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.gradient.radial.touch3 + + + + +

    2d.gradient.radial.touch3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js new file mode 100644 index 00000000000..4ea9b8650ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.touch3.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.touch3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50); +g.addColorStop(0, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html new file mode 100644 index 00000000000..a3b466f9aec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.gradient.radial.transform.1 + + + + +

    2d.gradient.radial.transform.1

    +

    Radial gradient coordinates are relative to the coordinate space at the time of filling

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js new file mode 100644 index 00000000000..368349187dd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.1.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.transform.1 +// Description:Radial gradient coordinates are relative to the coordinate space at the time of filling +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Radial gradient coordinates are relative to the coordinate space at the time of filling"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); +g.addColorStop(0, '#0f0'); +g.addColorStop(0.5, '#0f0'); +g.addColorStop(0.51, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.translate(50, 25); +ctx.scale(10, 10); +ctx.fillRect(-5, -2.5, 10, 5); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html new file mode 100644 index 00000000000..2ea3d2a0bef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.gradient.radial.transform.2 + + + + +

    2d.gradient.radial.transform.2

    +

    Radial gradient coordinates are relative to the coordinate space at the time of filling

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js new file mode 100644 index 00000000000..1519c337346 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.2.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.transform.2 +// Description:Radial gradient coordinates are relative to the coordinate space at the time of filling +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Radial gradient coordinates are relative to the coordinate space at the time of filling"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.translate(100, 0); +var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); +g.addColorStop(0, '#0f0'); +g.addColorStop(0.5, '#0f0'); +g.addColorStop(0.51, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.translate(-50, 25); +ctx.scale(10, 10); +ctx.fillRect(-5, -2.5, 10, 5); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html new file mode 100644 index 00000000000..eb3f7ba0280 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.gradient.radial.transform.3 + + + + +

    2d.gradient.radial.transform.3

    +

    Radial gradient transforms do not experience broken caching effects

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js new file mode 100644 index 00000000000..5239376db48 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.gradient.radial.transform.3.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.gradient.radial.transform.3 +// Description:Radial gradient transforms do not experience broken caching effects +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Radial gradient transforms do not experience broken caching effects"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); +g.addColorStop(0, '#0f0'); +g.addColorStop(0.5, '#0f0'); +g.addColorStop(0.51, '#f00'); +g.addColorStop(1, '#f00'); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(50, 25); +ctx.scale(10, 10); +ctx.fillRect(-5, -2.5, 10, 5); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html new file mode 100644 index 00000000000..b3be4e9816d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.pattern.basic.canvas + + + + +

    2d.pattern.basic.canvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js new file mode 100644 index 00000000000..a9969f65222 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.canvas.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.basic.canvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 0, 100, 50); +var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); +ctx.fillStyle = pattern; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html new file mode 100644 index 00000000000..730fb02383c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.pattern.basic.image + + + + +

    2d.pattern.basic.image

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js new file mode 100644 index 00000000000..2d4dfd8ee6f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.image.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.basic.image +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html new file mode 100644 index 00000000000..fcaecbce760 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.pattern.basic.nocontext + + + + +

    2d.pattern.basic.nocontext

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js new file mode 100644 index 00000000000..a5dacef885e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.nocontext.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.basic.nocontext +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillStyle = pattern; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html new file mode 100644 index 00000000000..4652c407ccf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.pattern.basic.zerocanvas + + + + +

    2d.pattern.basic.zerocanvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js new file mode 100644 index 00000000000..326ce535d45 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.basic.zerocanvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 0; +offscreenCanvas.height = 10; +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 10, "offscreenCanvas.height", "10"); +assert_throws("INVALID_STATE_ERR", function() { ctx.createPattern(offscreenCanvas, 'repeat'); }); +offscreenCanvas.width = 10; +offscreenCanvas.height = 0; +_assertSame(offscreenCanvas.width, 10, "offscreenCanvas.width", "10"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); +assert_throws("INVALID_STATE_ERR", function() { ctx.createPattern(offscreenCanvas, 'repeat'); }); +offscreenCanvas.width = 0; +offscreenCanvas.height = 0; +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); +assert_throws("INVALID_STATE_ERR", function() { ctx.createPattern(offscreenCanvas, 'repeat'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html new file mode 100644 index 00000000000..f7d0c5fdf61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.pattern.crosscanvas + + + + +

    2d.pattern.crosscanvas

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js new file mode 100644 index 00000000000..6d3ba31bace --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.crosscanvas.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.crosscanvas +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var pattern = offscreenCanvas2.getContext('2d').createPattern(response, 'no-repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html new file mode 100644 index 00000000000..30fd65a26b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.image.null + + + + +

    2d.pattern.image.null

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js new file mode 100644 index 00000000000..454e619a8b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.null.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.image.null +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createPattern(null, 'repeat'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html new file mode 100644 index 00000000000..bcc4ad00cb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.image.string + + + + +

    2d.pattern.image.string

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js new file mode 100644 index 00000000000..6d732e7b200 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.string.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.image.string +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createPattern('../images/red.png', 'repeat'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html new file mode 100644 index 00000000000..f0347ea9732 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.image.undefined + + + + +

    2d.pattern.image.undefined

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js new file mode 100644 index 00000000000..8ed51b6c1bb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.image.undefined.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.image.undefined +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createPattern(undefined, 'repeat'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html new file mode 100644 index 00000000000..23c7e78ad9f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.pattern.modify.canvas1 + + + + +

    2d.pattern.modify.canvas1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js new file mode 100644 index 00000000000..6ca4d6da35a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas1.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.modify.canvas1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 0, 100, 50); +var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = pattern; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html new file mode 100644 index 00000000000..f7488fcca7e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.pattern.modify.canvas2 + + + + +

    2d.pattern.modify.canvas2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js new file mode 100644 index 00000000000..a872bb8ea2b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.modify.canvas2.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.modify.canvas2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 0, 100, 50); +var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); +ctx.fillStyle = pattern; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = pattern; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html new file mode 100644 index 00000000000..925e5cb5ea8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.pattern.paint.norepeat.basic + + + + +

    2d.pattern.paint.norepeat.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js new file mode 100644 index 00000000000..9316317d60a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.norepeat.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html new file mode 100644 index 00000000000..2b81da144b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.pattern.paint.norepeat.coord1 + + + + +

    2d.pattern.paint.norepeat.coord1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js new file mode 100644 index 00000000000..4210eaa4f9f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.norepeat.coord1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(50, 0, 50, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 0); + ctx.fillRect(-50, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html new file mode 100644 index 00000000000..bdc3ab954f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.pattern.paint.norepeat.coord2 + + + + +

    2d.pattern.paint.norepeat.coord2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js new file mode 100644 index 00000000000..226db04e1c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.norepeat.coord2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.fillStyle = pattern; + ctx.translate(50, 0); + ctx.fillRect(-50, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html new file mode 100644 index 00000000000..8c027af2a4c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.pattern.paint.norepeat.coord3 + + + + +

    2d.pattern.paint.norepeat.coord3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js new file mode 100644 index 00000000000..da93c53d292 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.norepeat.coord3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 25); + ctx.fillRect(-50, -25, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html new file mode 100644 index 00000000000..916272fcade --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.pattern.paint.norepeat.outside + + + + +

    2d.pattern.paint.norepeat.outside

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js new file mode 100644 index 00000000000..d8b59007076 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.norepeat.outside +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + ctx.fillRect(-100, 0, 100, 50); + ctx.fillRect(0, 50, 100, 50); + ctx.fillRect(100, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html new file mode 100644 index 00000000000..42576fa5f8c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.pattern.paint.orientation.canvas + + + + +

    2d.pattern.paint.orientation.canvas

    +

    Canvas patterns do not get flipped when painted

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js new file mode 100644 index 00000000000..3a7b8521c1e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.orientation.canvas +// Description:Canvas patterns do not get flipped when painted +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Canvas patterns do not get flipped when painted"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 100, 25); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 25, 100, 25); +var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); +ctx.fillStyle = pattern; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 25); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html new file mode 100644 index 00000000000..0b9bda31b80 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.pattern.paint.orientation.image + + + + +

    2d.pattern.paint.orientation.image

    +

    Image patterns do not get flipped when painted

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js new file mode 100644 index 00000000000..a1fa022c6fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.orientation.image.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.orientation.image +// Description:Image patterns do not get flipped when painted +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Image patterns do not get flipped when painted"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rrgg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.save(); + ctx.translate(0, -103); + ctx.fillRect(0, 103, 100, 50); + ctx.restore(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 25); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html new file mode 100644 index 00000000000..e2dd06a5b54 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeat.basic + + + + +

    2d.pattern.paint.repeat.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js new file mode 100644 index 00000000000..062c5956c46 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeat.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html new file mode 100644 index 00000000000..b7d9a57a6d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html @@ -0,0 +1,44 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeat.coord1 + + + + +

    2d.pattern.paint.repeat.coord1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js new file mode 100644 index 00000000000..9f442a8d51e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.worker.js @@ -0,0 +1,40 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeat.coord1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(-128, -78); + ctx.fillRect(128, 78, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html new file mode 100644 index 00000000000..ff5b67de77f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeat.coord2 + + + + +

    2d.pattern.paint.repeat.coord2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js new file mode 100644 index 00000000000..5e2f1216c48 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeat.coord2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/grgr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html new file mode 100644 index 00000000000..02c45fd5281 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeat.coord3 + + + + +

    2d.pattern.paint.repeat.coord3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js new file mode 100644 index 00000000000..622bcecfba5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeat.coord3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(-128, -78); + ctx.fillRect(128, 78, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html new file mode 100644 index 00000000000..6489e235dce --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html @@ -0,0 +1,44 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeat.outside + + + + +

    2d.pattern.paint.repeat.outside

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js new file mode 100644 index 00000000000..246bccecd87 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.worker.js @@ -0,0 +1,40 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeat.outside +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 25); + ctx.fillRect(-50, -25, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html new file mode 100644 index 00000000000..13e7b8d30bf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeatx.basic + + + + +

    2d.pattern.paint.repeatx.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js new file mode 100644 index 00000000000..aba01182d9d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeatx.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 16); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html new file mode 100644 index 00000000000..1fc2e52184d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeatx.coord1 + + + + +

    2d.pattern.paint.repeatx.coord1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js new file mode 100644 index 00000000000..e4777e05d29 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeatx.coord1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.translate(0, 16); + ctx.fillRect(0, -16, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 16); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html new file mode 100644 index 00000000000..c6ec1223cdb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeatx.outside + + + + +

    2d.pattern.paint.repeatx.outside

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js new file mode 100644 index 00000000000..fc8a4a013c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeatx.outside +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 16); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html new file mode 100644 index 00000000000..f678f1c28ff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeaty.basic + + + + +

    2d.pattern.paint.repeaty.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js new file mode 100644 index 00000000000..40dfda945be --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeaty.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 16, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html new file mode 100644 index 00000000000..6d3e3434d55 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeaty.coord1 + + + + +

    2d.pattern.paint.repeaty.coord1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js new file mode 100644 index 00000000000..108c462f6ec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeaty.coord1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.translate(48, 0); + ctx.fillRect(-48, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html new file mode 100644 index 00000000000..5790bdaf748 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.pattern.paint.repeaty.outside + + + + +

    2d.pattern.paint.repeaty.outside

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js new file mode 100644 index 00000000000..49586743408 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.paint.repeaty.outside +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html new file mode 100644 index 00000000000..0b082dfa974 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.case + + + + +

    2d.pattern.repeat.case

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js new file mode 100644 index 00000000000..0130fe39be6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.case.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.case +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, "Repeat"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html new file mode 100644 index 00000000000..009736cc1ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.empty + + + + +

    2d.pattern.repeat.empty

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js new file mode 100644 index 00000000000..8042a3c79e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.empty.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.empty +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-1x1.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, ""); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 200, 50); + _assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); + _assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + _assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html new file mode 100644 index 00000000000..7e78ae015ae --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.null + + + + +

    2d.pattern.repeat.null

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js new file mode 100644 index 00000000000..ee623df1f15 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.null.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.null +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assert(ctx.createPattern(offscreenCanvas, null) != null, "ctx.createPattern(offscreenCanvas, null) != null"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html new file mode 100644 index 00000000000..7f85f3e479c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.nullsuffix + + + + +

    2d.pattern.repeat.nullsuffix

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js new file mode 100644 index 00000000000..c6ed1417d16 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.nullsuffix +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, "repeat\0"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html new file mode 100644 index 00000000000..298ba9976dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.undefined + + + + +

    2d.pattern.repeat.undefined

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js new file mode 100644 index 00000000000..3a275b82633 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.undefined.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.undefined +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, undefined); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html new file mode 100644 index 00000000000..79e379ec475 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.unrecognised + + + + +

    2d.pattern.repeat.unrecognised

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js new file mode 100644 index 00000000000..08c076b6cff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.unrecognised +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, "invalid"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html new file mode 100644 index 00000000000..c8f4ccf5f70 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.pattern.repeat.unrecognisednull + + + + +

    2d.pattern.repeat.unrecognisednull

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js new file mode 100644 index 00000000000..fc4a45510c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.pattern.repeat.unrecognisednull +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("SYNTAX_ERR", function() { ctx.createPattern(offscreenCanvas, "null"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html new file mode 100644 index 00000000000..0697685828e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.strokeStyle.default + + + + +

    2d.strokeStyle.default

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js new file mode 100644 index 00000000000..498f2f99ad9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/fill-and-stroke-styles/2d.strokeStyle.default.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.strokeStyle.default +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.strokeStyle, '#000000', "ctx.strokeStyle", "'#000000'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/image-smoothing/image.smoothing.html b/tests/wpt/web-platform-tests/offscreen-canvas/image-smoothing/image.smoothing.html new file mode 100644 index 00000000000..a78524c51d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/image-smoothing/image.smoothing.html @@ -0,0 +1,128 @@ + + +OffscreenCanvasRenderingContext2D imageSmoothingEnabled test + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/image-smoothing/image.smoothing.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/image-smoothing/image.smoothing.worker.js new file mode 100644 index 00000000000..4c37e84b1f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/image-smoothing/image.smoothing.worker.js @@ -0,0 +1,126 @@ +// spec link: https://html.spec.whatwg.org/#the-offscreen-2d-rendering-context + +importScripts("/resources/testharness.js"); + +function createTestImage() { + var image = new OffscreenCanvas(100, 50); + var imgctx = image.getContext('2d'); + imgctx.fillStyle = "#F00"; + imgctx.fillRect(0, 0, 2, 2); + imgctx.fillStyle = "#0F0"; + imgctx.fillRect(0, 0, 1, 1); + return image; +} + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + assert_true(ctx.imageSmoothingEnabled); +}, "When the context is created, imageSmoothingEnabled must be set to true."); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + ctx.imageSmoothingEnabled = false; + assert_false(ctx.imageSmoothingEnabled); +}, "On getting imageSmoothingEnabled, the user agent must return the last value it was set to."); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + var image = createTestImage(); + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_not_equals(pixels[0], 0); + assert_not_equals(pixels[1], 255); +}, "Test that image smoothing is actually on by default."); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + ctx.imageSmoothingEnabled = true; + var image = createTestImage(); + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_not_equals(pixels[0], 0); + assert_not_equals(pixels[1], 255); +}, "Test that image smoothing works when imageSmoothingEnabled is set to true"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + var image = createTestImage(); + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with drawImage()."); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + var image = createTestImage(); + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.fillStyle = ctx.createPattern(image, 'repeat'); + ctx.fillRect(0, 0, 10, 10); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fillRect and createPattern()."); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + var image = createTestImage(); + ctx.imageSmoothingEnabled = false; + ctx.fillStyle = ctx.createPattern(image, 'repeat'); + ctx.scale(10, 10); + ctx.rect(0, 0, 10, 10); + ctx.fill(); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fill() and createPattern()."); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + var image = createTestImage(); + ctx.strokeStyle = ctx.createPattern(image, 'repeat'); + ctx.lineWidth = 5; + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(10, 10); + ctx.stroke(); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern()."); + +test(function() { + var repaints = 5; + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + + function draw() { + ctx.clearRect(0, 0, 10, 10); + ctx.setTransform(1, 0, 0, 1, 0, 0); + var image = createTestImage(); + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); + } + + while (repaints > 0) { + draw(); + repaints = repaints - 1; + } + +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) still works after repaints."); + +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.butt.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.butt.html new file mode 100644 index 00000000000..21ca86b29b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.butt.html @@ -0,0 +1,53 @@ + + +OffscreenCanvas test: 2d.line.cap.butt + + + + +

    2d.line.cap.butt

    +

    lineCap 'butt' is rendered correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js new file mode 100644 index 00000000000..b9d503c8051 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.butt.worker.js @@ -0,0 +1,49 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.butt +// Description:lineCap 'butt' is rendered correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineCap 'butt' is rendered correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineCap = 'butt'; +ctx.lineWidth = 20; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(15, 15, 20, 20); +ctx.beginPath(); +ctx.moveTo(25, 15); +ctx.lineTo(25, 35); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(75, 15); +ctx.lineTo(75, 35); +ctx.stroke(); +ctx.fillRect(65, 15, 20, 20); +_assertPixel(offscreenCanvas, 25,14, 0,255,0,255, "25,14", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,15, 0,255,0,255, "25,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,16, 0,255,0,255, "25,16", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,34, 0,255,0,255, "25,34", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,35, 0,255,0,255, "25,35", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,36, 0,255,0,255, "25,36", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,14, 0,255,0,255, "75,14", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,15, 0,255,0,255, "75,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,16, 0,255,0,255, "75,16", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,34, 0,255,0,255, "75,34", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,36, 0,255,0,255, "75,36", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.closed.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.closed.html new file mode 100644 index 00000000000..66b08530f54 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.closed.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.line.cap.closed + + + + +

    2d.line.cap.closed

    +

    Line caps are not drawn at the corners of an unclosed rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js new file mode 100644 index 00000000000..f5237d6c2b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.closed.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.closed +// Description:Line caps are not drawn at the corners of an unclosed rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Line caps are not drawn at the corners of an unclosed rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineJoin = 'bevel'; +ctx.lineCap = 'square'; +ctx.lineWidth = 400; +ctx.beginPath(); +ctx.moveTo(200, 200); +ctx.lineTo(200, 1000); +ctx.lineTo(1000, 1000); +ctx.lineTo(1000, 200); +ctx.closePath(); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.invalid.html new file mode 100644 index 00000000000..cbf7cebc8bf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.invalid.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.line.cap.invalid + + + + +

    2d.line.cap.invalid

    +

    Setting lineCap to invalid values is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js new file mode 100644 index 00000000000..4c3495f277a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.invalid.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.invalid +// Description:Setting lineCap to invalid values is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting lineCap to invalid values is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineCap = 'butt' +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'butt'; +ctx.lineCap = 'invalid'; +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'butt'; +ctx.lineCap = 'ROUND'; +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'butt'; +ctx.lineCap = 'round\0'; +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'butt'; +ctx.lineCap = 'round '; +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'butt'; +ctx.lineCap = ""; +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'butt'; +ctx.lineCap = 'bevel'; +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.open.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.open.html new file mode 100644 index 00000000000..8b7a599c32b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.open.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.line.cap.open + + + + +

    2d.line.cap.open

    +

    Line caps are drawn at the corners of an unclosed rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.open.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.open.worker.js new file mode 100644 index 00000000000..b67dc5798bd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.open.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.open +// Description:Line caps are drawn at the corners of an unclosed rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Line caps are drawn at the corners of an unclosed rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineJoin = 'bevel'; +ctx.lineCap = 'square'; +ctx.lineWidth = 400; +ctx.beginPath(); +ctx.moveTo(200, 200); +ctx.lineTo(200, 1000); +ctx.lineTo(1000, 1000); +ctx.lineTo(1000, 200); +ctx.lineTo(200, 200); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.round.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.round.html new file mode 100644 index 00000000000..fb383cba9bd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.round.html @@ -0,0 +1,62 @@ + + +OffscreenCanvas test: 2d.line.cap.round + + + + +

    2d.line.cap.round

    +

    lineCap 'round' is rendered correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.round.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.round.worker.js new file mode 100644 index 00000000000..7592393b3cb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.round.worker.js @@ -0,0 +1,58 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.round +// Description:lineCap 'round' is rendered correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineCap 'round' is rendered correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var tol = 1; // tolerance to avoid antialiasing artifacts +ctx.lineCap = 'round'; +ctx.lineWidth = 20; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(35-tol, 15); +ctx.arc(25, 15, 10-tol, 0, Math.PI, true); +ctx.arc(25, 35, 10-tol, Math.PI, 0, true); +ctx.fill(); +ctx.beginPath(); +ctx.moveTo(25, 15); +ctx.lineTo(25, 35); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(75, 15); +ctx.lineTo(75, 35); +ctx.stroke(); +ctx.beginPath(); +ctx.moveTo(85+tol, 15); +ctx.arc(75, 15, 10+tol, 0, Math.PI, true); +ctx.arc(75, 35, 10+tol, Math.PI, 0, true); +ctx.fill(); +_assertPixel(offscreenCanvas, 17,6, 0,255,0,255, "17,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 32,6, 0,255,0,255, "32,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 17,43, 0,255,0,255, "17,43", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,43, 0,255,0,255, "25,43", "0,255,0,255"); +_assertPixel(offscreenCanvas, 32,43, 0,255,0,255, "32,43", "0,255,0,255"); +_assertPixel(offscreenCanvas, 67,6, 0,255,0,255, "67,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 82,6, 0,255,0,255, "82,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 67,43, 0,255,0,255, "67,43", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,43, 0,255,0,255, "75,43", "0,255,0,255"); +_assertPixel(offscreenCanvas, 82,43, 0,255,0,255, "82,43", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.square.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.square.html new file mode 100644 index 00000000000..ef9646e6328 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.square.html @@ -0,0 +1,53 @@ + + +OffscreenCanvas test: 2d.line.cap.square + + + + +

    2d.line.cap.square

    +

    lineCap 'square' is rendered correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.square.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.square.worker.js new file mode 100644 index 00000000000..6e07a801e12 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.square.worker.js @@ -0,0 +1,49 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.square +// Description:lineCap 'square' is rendered correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineCap 'square' is rendered correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineCap = 'square'; +ctx.lineWidth = 20; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(15, 5, 20, 40); +ctx.beginPath(); +ctx.moveTo(25, 15); +ctx.lineTo(25, 35); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(75, 15); +ctx.lineTo(75, 35); +ctx.stroke(); +ctx.fillRect(65, 5, 20, 40); +_assertPixel(offscreenCanvas, 25,4, 0,255,0,255, "25,4", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,5, 0,255,0,255, "25,5", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,6, 0,255,0,255, "25,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,44, 0,255,0,255, "25,44", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,45, 0,255,0,255, "25,45", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,46, 0,255,0,255, "25,46", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,4, 0,255,0,255, "75,4", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,5, 0,255,0,255, "75,5", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,6, 0,255,0,255, "75,6", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,44, 0,255,0,255, "75,44", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,45, 0,255,0,255, "75,45", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,46, 0,255,0,255, "75,46", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.valid.html new file mode 100644 index 00000000000..16a4f48d210 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.valid.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.line.cap.valid + + + + +

    2d.line.cap.valid

    +

    Setting lineCap to valid values works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js new file mode 100644 index 00000000000..b364f3d1c68 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cap.valid.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cap.valid +// Description:Setting lineCap to valid values works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting lineCap to valid values works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineCap = 'butt' +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +ctx.lineCap = 'round'; +_assertSame(ctx.lineCap, 'round', "ctx.lineCap", "'round'"); +ctx.lineCap = 'square'; +_assertSame(ctx.lineCap, 'square', "ctx.lineCap", "'square'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cross.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cross.html new file mode 100644 index 00000000000..31fc3f35009 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cross.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.line.cross + + + + +

    2d.line.cross

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cross.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cross.worker.js new file mode 100644 index 00000000000..b85231e87da --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.cross.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.cross +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 200; +ctx.lineJoin = 'bevel'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(110, 50); +ctx.lineTo(110, 60); +ctx.lineTo(100, 60); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.defaults.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.defaults.html new file mode 100644 index 00000000000..e9fc509b5d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.defaults.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.line.defaults + + + + +

    2d.line.defaults

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.defaults.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.defaults.worker.js new file mode 100644 index 00000000000..672bee54eff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.defaults.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.defaults +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1"); +_assertSame(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'"); +_assertSame(ctx.lineJoin, 'miter', "ctx.lineJoin", "'miter'"); +_assertSame(ctx.miterLimit, 10, "ctx.miterLimit", "10"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.bevel.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.bevel.html new file mode 100644 index 00000000000..c721d29b900 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.bevel.html @@ -0,0 +1,66 @@ + + +OffscreenCanvas test: 2d.line.join.bevel + + + + +

    2d.line.join.bevel

    +

    lineJoin 'bevel' is rendered correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js new file mode 100644 index 00000000000..94d9efb72ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.bevel.worker.js @@ -0,0 +1,62 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.bevel +// Description:lineJoin 'bevel' is rendered correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineJoin 'bevel' is rendered correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var tol = 1; // tolerance to avoid antialiasing artifacts +ctx.lineJoin = 'bevel'; +ctx.lineWidth = 20; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(10, 10, 20, 20); +ctx.fillRect(20, 20, 20, 20); +ctx.beginPath(); +ctx.moveTo(30, 20); +ctx.lineTo(40-tol, 20); +ctx.lineTo(30, 10+tol); +ctx.fill(); +ctx.beginPath(); +ctx.moveTo(10, 20); +ctx.lineTo(30, 20); +ctx.lineTo(30, 40); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(60, 20); +ctx.lineTo(80, 20); +ctx.lineTo(80, 40); +ctx.stroke(); +ctx.fillRect(60, 10, 20, 20); +ctx.fillRect(70, 20, 20, 20); +ctx.beginPath(); +ctx.moveTo(80, 20); +ctx.lineTo(90+tol, 20); +ctx.lineTo(80, 10-tol); +ctx.fill(); +_assertPixel(offscreenCanvas, 34,16, 0,255,0,255, "34,16", "0,255,0,255"); +_assertPixel(offscreenCanvas, 34,15, 0,255,0,255, "34,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 35,15, 0,255,0,255, "35,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 36,15, 0,255,0,255, "36,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); +_assertPixel(offscreenCanvas, 84,16, 0,255,0,255, "84,16", "0,255,0,255"); +_assertPixel(offscreenCanvas, 84,15, 0,255,0,255, "84,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 85,15, 0,255,0,255, "85,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 86,15, 0,255,0,255, "86,15", "0,255,0,255"); +_assertPixel(offscreenCanvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.closed.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.closed.html new file mode 100644 index 00000000000..874ef833ded --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.closed.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.line.join.closed + + + + +

    2d.line.join.closed

    +

    Line joins are drawn at the corner of a closed rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.closed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.closed.worker.js new file mode 100644 index 00000000000..195f5000268 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.closed.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.closed +// Description:Line joins are drawn at the corner of a closed rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Line joins are drawn at the corner of a closed rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineJoin = 'miter'; +ctx.lineWidth = 200; +ctx.beginPath(); +ctx.moveTo(100, 50); +ctx.lineTo(100, 1000); +ctx.lineTo(1000, 1000); +ctx.lineTo(1000, 50); +ctx.closePath(); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.invalid.html new file mode 100644 index 00000000000..e1533689519 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.invalid.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.line.join.invalid + + + + +

    2d.line.join.invalid

    +

    Setting lineJoin to invalid values is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js new file mode 100644 index 00000000000..1f3fb4ae9cc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.invalid.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.invalid +// Description:Setting lineJoin to invalid values is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting lineJoin to invalid values is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineJoin = 'bevel' +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'bevel'; +ctx.lineJoin = 'invalid'; +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'bevel'; +ctx.lineJoin = 'ROUND'; +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'bevel'; +ctx.lineJoin = 'round\0'; +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'bevel'; +ctx.lineJoin = 'round '; +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'bevel'; +ctx.lineJoin = ""; +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'bevel'; +ctx.lineJoin = 'butt'; +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.miter.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.miter.html new file mode 100644 index 00000000000..9a463ed7c47 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.miter.html @@ -0,0 +1,57 @@ + + +OffscreenCanvas test: 2d.line.join.miter + + + + +

    2d.line.join.miter

    +

    lineJoin 'miter' is rendered correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.miter.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.miter.worker.js new file mode 100644 index 00000000000..2d432fca99a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.miter.worker.js @@ -0,0 +1,53 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.miter +// Description:lineJoin 'miter' is rendered correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineJoin 'miter' is rendered correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineJoin = 'miter'; +ctx.lineWidth = 20; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(10, 10, 30, 20); +ctx.fillRect(20, 10, 20, 30); +ctx.beginPath(); +ctx.moveTo(10, 20); +ctx.lineTo(30, 20); +ctx.lineTo(30, 40); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(60, 20); +ctx.lineTo(80, 20); +ctx.lineTo(80, 40); +ctx.stroke(); +ctx.fillRect(60, 10, 30, 20); +ctx.fillRect(70, 10, 20, 30); +_assertPixel(offscreenCanvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 39,11, 0,255,0,255, "39,11", "0,255,0,255"); +_assertPixel(offscreenCanvas, 40,10, 0,255,0,255, "40,10", "0,255,0,255"); +_assertPixel(offscreenCanvas, 41,9, 0,255,0,255, "41,9", "0,255,0,255"); +_assertPixel(offscreenCanvas, 42,8, 0,255,0,255, "42,8", "0,255,0,255"); +_assertPixel(offscreenCanvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 89,11, 0,255,0,255, "89,11", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); +_assertPixel(offscreenCanvas, 91,9, 0,255,0,255, "91,9", "0,255,0,255"); +_assertPixel(offscreenCanvas, 92,8, 0,255,0,255, "92,8", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.open.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.open.html new file mode 100644 index 00000000000..83b55b5116c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.open.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.line.join.open + + + + +

    2d.line.join.open

    +

    Line joins are not drawn at the corner of an unclosed rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.open.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.open.worker.js new file mode 100644 index 00000000000..f8466311e2a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.open.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.open +// Description:Line joins are not drawn at the corner of an unclosed rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Line joins are not drawn at the corner of an unclosed rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineJoin = 'miter'; +ctx.lineWidth = 200; +ctx.beginPath(); +ctx.moveTo(100, 50); +ctx.lineTo(100, 1000); +ctx.lineTo(1000, 1000); +ctx.lineTo(1000, 50); +ctx.lineTo(100, 50); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.parallel.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.parallel.html new file mode 100644 index 00000000000..52fa3981149 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.parallel.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.line.join.parallel + + + + +

    2d.line.join.parallel

    +

    Line joins are drawn at 180-degree joins

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js new file mode 100644 index 00000000000..e13b32d7561 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.parallel.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.parallel +// Description:Line joins are drawn at 180-degree joins +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Line joins are drawn at 180-degree joins"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 300; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.moveTo(-100, 25); +ctx.lineTo(0, 25); +ctx.lineTo(-100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.round.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.round.html new file mode 100644 index 00000000000..26ce2d93802 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.round.html @@ -0,0 +1,64 @@ + + +OffscreenCanvas test: 2d.line.join.round + + + + +

    2d.line.join.round

    +

    lineJoin 'round' is rendered correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.round.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.round.worker.js new file mode 100644 index 00000000000..0c5166318ef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.round.worker.js @@ -0,0 +1,60 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.round +// Description:lineJoin 'round' is rendered correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineJoin 'round' is rendered correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var tol = 1; // tolerance to avoid antialiasing artifacts +ctx.lineJoin = 'round'; +ctx.lineWidth = 20; +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(10, 10, 20, 20); +ctx.fillRect(20, 20, 20, 20); +ctx.beginPath(); +ctx.moveTo(30, 20); +ctx.arc(30, 20, 10-tol, 0, 2*Math.PI, true); +ctx.fill(); +ctx.beginPath(); +ctx.moveTo(10, 20); +ctx.lineTo(30, 20); +ctx.lineTo(30, 40); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(60, 20); +ctx.lineTo(80, 20); +ctx.lineTo(80, 40); +ctx.stroke(); +ctx.fillRect(60, 10, 20, 20); +ctx.fillRect(70, 20, 20, 20); +ctx.beginPath(); +ctx.moveTo(80, 20); +ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); +ctx.fill(); +_assertPixel(offscreenCanvas, 36,14, 0,255,0,255, "36,14", "0,255,0,255"); +_assertPixel(offscreenCanvas, 36,13, 0,255,0,255, "36,13", "0,255,0,255"); +_assertPixel(offscreenCanvas, 37,13, 0,255,0,255, "37,13", "0,255,0,255"); +_assertPixel(offscreenCanvas, 38,13, 0,255,0,255, "38,13", "0,255,0,255"); +_assertPixel(offscreenCanvas, 38,12, 0,255,0,255, "38,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 86,14, 0,255,0,255, "86,14", "0,255,0,255"); +_assertPixel(offscreenCanvas, 86,13, 0,255,0,255, "86,13", "0,255,0,255"); +_assertPixel(offscreenCanvas, 87,13, 0,255,0,255, "87,13", "0,255,0,255"); +_assertPixel(offscreenCanvas, 88,13, 0,255,0,255, "88,13", "0,255,0,255"); +_assertPixel(offscreenCanvas, 88,12, 0,255,0,255, "88,12", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.valid.html new file mode 100644 index 00000000000..16ce035178e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.valid.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.line.join.valid + + + + +

    2d.line.join.valid

    +

    Setting lineJoin to valid values works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.valid.worker.js new file mode 100644 index 00000000000..161803b8034 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.join.valid.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.join.valid +// Description:Setting lineJoin to valid values works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting lineJoin to valid values works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineJoin = 'bevel' +_assertSame(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'"); +ctx.lineJoin = 'round'; +_assertSame(ctx.lineJoin, 'round', "ctx.lineJoin", "'round'"); +ctx.lineJoin = 'miter'; +_assertSame(ctx.lineJoin, 'miter', "ctx.lineJoin", "'miter'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.acute.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.acute.html new file mode 100644 index 00000000000..62de53227f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.acute.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.line.miter.acute + + + + +

    2d.line.miter.acute

    +

    Miter joins are drawn correctly with acute angles

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js new file mode 100644 index 00000000000..63f909e5652 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.acute.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.acute +// Description:Miter joins are drawn correctly with acute angles +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Miter joins are drawn correctly with acute angles"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 200; +ctx.lineJoin = 'miter'; +ctx.strokeStyle = '#0f0'; +ctx.miterLimit = 2.614; +ctx.beginPath(); +ctx.moveTo(100, 1000); +ctx.lineTo(100, 100); +ctx.lineTo(1000, 1000); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.miterLimit = 2.613; +ctx.beginPath(); +ctx.moveTo(100, 1000); +ctx.lineTo(100, 100); +ctx.lineTo(1000, 1000); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.exceeded.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.exceeded.html new file mode 100644 index 00000000000..f15309b2d0d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.exceeded.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.line.miter.exceeded + + + + +

    2d.line.miter.exceeded

    +

    Miter joins are not drawn when the miter limit is exceeded

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js new file mode 100644 index 00000000000..02b1653fdec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.exceeded.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.exceeded +// Description:Miter joins are not drawn when the miter limit is exceeded +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Miter joins are not drawn when the miter limit is exceeded"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 400; +ctx.lineJoin = 'miter'; +ctx.strokeStyle = '#f00'; +ctx.miterLimit = 1.414; +ctx.beginPath(); +ctx.moveTo(200, 1000); +ctx.lineTo(200, 200); +ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.invalid.html new file mode 100644 index 00000000000..e8d8863a9e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.invalid.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.line.miter.invalid + + + + +

    2d.line.miter.invalid

    +

    Setting miterLimit to invalid values is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js new file mode 100644 index 00000000000..1628f786d34 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.invalid.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.invalid +// Description:Setting miterLimit to invalid values is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting miterLimit to invalid values is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.miterLimit = 1.5; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); +ctx.miterLimit = 1.5; +ctx.miterLimit = 0; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); +ctx.miterLimit = 1.5; +ctx.miterLimit = -1; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); +ctx.miterLimit = 1.5; +ctx.miterLimit = Infinity; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); +ctx.miterLimit = 1.5; +ctx.miterLimit = -Infinity; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); +ctx.miterLimit = 1.5; +ctx.miterLimit = NaN; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.lineedge.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.lineedge.html new file mode 100644 index 00000000000..d6f8a607720 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.lineedge.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.line.miter.lineedge + + + + +

    2d.line.miter.lineedge

    +

    Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js new file mode 100644 index 00000000000..a0d1aaac76f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.lineedge.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.lineedge +// Description:Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 200; +ctx.lineJoin = 'miter'; +ctx.strokeStyle = '#f00'; +ctx.miterLimit = 1.414; +ctx.beginPath(); +ctx.strokeRect(100, 25, 200, 0); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.obtuse.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.obtuse.html new file mode 100644 index 00000000000..2e87a873072 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.obtuse.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.line.miter.obtuse + + + + +

    2d.line.miter.obtuse

    +

    Miter joins are drawn correctly with obtuse angles

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js new file mode 100644 index 00000000000..5796352c9b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.obtuse.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.obtuse +// Description:Miter joins are drawn correctly with obtuse angles +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Miter joins are drawn correctly with obtuse angles"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 1600; +ctx.lineJoin = 'miter'; +ctx.strokeStyle = '#0f0'; +ctx.miterLimit = 1.083; +ctx.beginPath(); +ctx.moveTo(800, 10000); +ctx.lineTo(800, 300); +ctx.lineTo(10000, -8900); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.miterLimit = 1.082; +ctx.beginPath(); +ctx.moveTo(800, 10000); +ctx.lineTo(800, 300); +ctx.lineTo(10000, -8900); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.rightangle.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.rightangle.html new file mode 100644 index 00000000000..a7121f550dd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.rightangle.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.line.miter.rightangle + + + + +

    2d.line.miter.rightangle

    +

    Miter joins are not drawn when the miter limit is exceeded, on exact right angles

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js new file mode 100644 index 00000000000..717d7f2307d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.rightangle.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.rightangle +// Description:Miter joins are not drawn when the miter limit is exceeded, on exact right angles +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Miter joins are not drawn when the miter limit is exceeded, on exact right angles"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 400; +ctx.lineJoin = 'miter'; +ctx.strokeStyle = '#f00'; +ctx.miterLimit = 1.414; +ctx.beginPath(); +ctx.moveTo(200, 1000); +ctx.lineTo(200, 200); +ctx.lineTo(1000, 200); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.valid.html new file mode 100644 index 00000000000..8cd86b847aa --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.valid.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.line.miter.valid + + + + +

    2d.line.miter.valid

    +

    Setting miterLimit to valid values works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js new file mode 100644 index 00000000000..60af1953be7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.valid.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.valid +// Description:Setting miterLimit to valid values works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting miterLimit to valid values works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.miterLimit = 1.5; +_assertSame(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); +ctx.miterLimit = "1e1"; +_assertSame(ctx.miterLimit, 10, "ctx.miterLimit", "10"); +ctx.miterLimit = 1/1024; +_assertSame(ctx.miterLimit, 1/1024, "ctx.miterLimit", "1/1024"); +ctx.miterLimit = 1000; +_assertSame(ctx.miterLimit, 1000, "ctx.miterLimit", "1000"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.within.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.within.html new file mode 100644 index 00000000000..12f10b268cb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.within.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.line.miter.within + + + + +

    2d.line.miter.within

    +

    Miter joins are drawn when the miter limit is not quite exceeded

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.within.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.within.worker.js new file mode 100644 index 00000000000..c2e94635b6e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.miter.within.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.miter.within +// Description:Miter joins are drawn when the miter limit is not quite exceeded +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Miter joins are drawn when the miter limit is not quite exceeded"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 400; +ctx.lineJoin = 'miter'; +ctx.strokeStyle = '#0f0'; +ctx.miterLimit = 1.416; +ctx.beginPath(); +ctx.moveTo(200, 1000); +ctx.lineTo(200, 200); +ctx.lineTo(1000, 201); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.union.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.union.html new file mode 100644 index 00000000000..626a1a5852e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.union.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.line.union + + + + +

    2d.line.union

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.union.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.union.worker.js new file mode 100644 index 00000000000..e2c66689b84 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.union.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.union +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 24); +ctx.lineTo(100, 25); +ctx.lineTo(0, 26); +ctx.closePath(); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,1, 0,255,0,255, "48,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,1, 0,255,0,255, "25,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.basic.html new file mode 100644 index 00000000000..1dd1bbf7bdd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.basic.html @@ -0,0 +1,56 @@ + + +OffscreenCanvas test: 2d.line.width.basic + + + + +

    2d.line.width.basic

    +

    lineWidth determines the width of line strokes

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.basic.worker.js new file mode 100644 index 00000000000..e1e8a05d40e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.basic.worker.js @@ -0,0 +1,52 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.width.basic +// Description:lineWidth determines the width of line strokes +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineWidth determines the width of line strokes"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 20; +// Draw a green line over a red box, to check the line is not too small +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(15, 15, 20, 20); +ctx.beginPath(); +ctx.moveTo(25, 15); +ctx.lineTo(25, 35); +ctx.stroke(); +// Draw a green box over a red line, to check the line is not too large +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(75, 15); +ctx.lineTo(75, 35); +ctx.stroke(); +ctx.fillRect(65, 15, 20, 20); +_assertPixel(offscreenCanvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.invalid.html new file mode 100644 index 00000000000..2f72c8d07ae --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.invalid.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.line.width.invalid + + + + +

    2d.line.width.invalid

    +

    Setting lineWidth to invalid values is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js new file mode 100644 index 00000000000..2c3be82a8e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.invalid.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.width.invalid +// Description:Setting lineWidth to invalid values is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting lineWidth to invalid values is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineWidth = 1.5; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); +ctx.lineWidth = 1.5; +ctx.lineWidth = 0; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); +ctx.lineWidth = 1.5; +ctx.lineWidth = -1; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); +ctx.lineWidth = 1.5; +ctx.lineWidth = Infinity; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); +ctx.lineWidth = 1.5; +ctx.lineWidth = -Infinity; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); +ctx.lineWidth = 1.5; +ctx.lineWidth = NaN; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.scaledefault.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.scaledefault.html new file mode 100644 index 00000000000..bb4607ffc18 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.scaledefault.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.line.width.scaledefault + + + + +

    2d.line.width.scaledefault

    +

    Default lineWidth strokes are affected by scale transformations

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js new file mode 100644 index 00000000000..7fedaedae4c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.scaledefault.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.width.scaledefault +// Description:Default lineWidth strokes are affected by scale transformations +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Default lineWidth strokes are affected by scale transformations"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(50, 50); +ctx.strokeStyle = '#0f0'; +ctx.moveTo(0, 0.5); +ctx.lineTo(2, 0.5); +ctx.stroke(); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,5, 0,255,0,255, "50,5", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.transformed.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.transformed.html new file mode 100644 index 00000000000..72370f59266 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.transformed.html @@ -0,0 +1,62 @@ + + +OffscreenCanvas test: 2d.line.width.transformed + + + + +

    2d.line.width.transformed

    +

    Line stroke widths are affected by scale transformations

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js new file mode 100644 index 00000000000..7bd4efbadff --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.transformed.worker.js @@ -0,0 +1,58 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.width.transformed +// Description:Line stroke widths are affected by scale transformations +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Line stroke widths are affected by scale transformations"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 4; +// Draw a green line over a red box, to check the line is not too small +ctx.fillStyle = '#f00'; +ctx.strokeStyle = '#0f0'; +ctx.fillRect(15, 15, 20, 20); +ctx.save(); + ctx.scale(5, 1); + ctx.beginPath(); + ctx.moveTo(5, 15); + ctx.lineTo(5, 35); + ctx.stroke(); +ctx.restore(); +// Draw a green box over a red line, to check the line is not too large +ctx.fillStyle = '#0f0'; +ctx.strokeStyle = '#f00'; +ctx.save(); + ctx.scale(-5, 1); + ctx.beginPath(); + ctx.moveTo(-15, 15); + ctx.lineTo(-15, 35); + ctx.stroke(); +ctx.restore(); +ctx.fillRect(65, 15, 20, 20); +_assertPixel(offscreenCanvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.valid.html new file mode 100644 index 00000000000..6cfb199bc5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.valid.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.line.width.valid + + + + +

    2d.line.width.valid

    +

    Setting lineWidth to valid values works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.valid.worker.js new file mode 100644 index 00000000000..8e7498ff25f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/line-styles/2d.line.width.valid.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.line.width.valid +// Description:Setting lineWidth to valid values works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting lineWidth to valid values works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineWidth = 1.5; +_assertSame(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); +ctx.lineWidth = "1e1"; +_assertSame(ctx.lineWidth, 10, "ctx.lineWidth", "10"); +ctx.lineWidth = 1/1024; +_assertSame(ctx.lineWidth, 1/1024, "ctx.lineWidth", "1/1024"); +ctx.lineWidth = 1000; +_assertSame(ctx.lineWidth, 1000, "ctx.lineWidth", "1000"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.1.html new file mode 100644 index 00000000000..1a4cfe9cc66 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.angle.1 + + + + +

    2d.path.arc.angle.1

    +

    arc() draws pi/2 .. -pi anticlockwise correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js new file mode 100644 index 00000000000..18536c988eb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.angle.1 +// Description:arc() draws pi/2 .. -pi anticlockwise correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws pi/2 .. -pi anticlockwise correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 0); +ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.2.html new file mode 100644 index 00000000000..ac1a5a66296 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.angle.2 + + + + +

    2d.path.arc.angle.2

    +

    arc() draws -3pi/2 .. -pi anticlockwise correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js new file mode 100644 index 00000000000..7a7def978a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.angle.2 +// Description:arc() draws -3pi/2 .. -pi anticlockwise correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws -3pi/2 .. -pi anticlockwise correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 0); +ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.3.html new file mode 100644 index 00000000000..06840240780 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.3.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.angle.3 + + + + +

    2d.path.arc.angle.3

    +

    arc() wraps angles mod 2pi when anticlockwise and end > start+2pi

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js new file mode 100644 index 00000000000..4c4bfa8992c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.3.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.angle.3 +// Description:arc() wraps angles mod 2pi when anticlockwise and end > start+2pi +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() wraps angles mod 2pi when anticlockwise and end > start+2pi"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 0); +ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.4.html new file mode 100644 index 00000000000..f47669ccf9f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.4.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.arc.angle.4 + + + + +

    2d.path.arc.angle.4

    +

    arc() draws a full circle when clockwise and end > start+2pi

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js new file mode 100644 index 00000000000..675808c9735 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.4.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.angle.4 +// Description:arc() draws a full circle when clockwise and end > start+2pi +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws a full circle when clockwise and end > start+2pi"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); +ctx.fill(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.5.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.5.html new file mode 100644 index 00000000000..9020ff19e8c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.5.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.angle.5 + + + + +

    2d.path.arc.angle.5

    +

    arc() wraps angles mod 2pi when clockwise and start > end+2pi

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js new file mode 100644 index 00000000000..ba5c52198c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.5.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.angle.5 +// Description:arc() wraps angles mod 2pi when clockwise and start > end+2pi +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() wraps angles mod 2pi when clockwise and start > end+2pi"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 0); +ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.6.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.6.html new file mode 100644 index 00000000000..9a9d9dd5cbc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.6.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.arc.angle.6 + + + + +

    2d.path.arc.angle.6

    +

    arc() draws a full circle when anticlockwise and start > end+2pi

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js new file mode 100644 index 00000000000..7201b69dba1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.angle.6.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.angle.6 +// Description:arc() draws a full circle when anticlockwise and start > end+2pi +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws a full circle when anticlockwise and start > end+2pi"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); +ctx.fill(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.default.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.default.html new file mode 100644 index 00000000000..077fe888373 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.default.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.default + + + + +

    2d.path.arc.default

    +

    arc() with missing last argument defaults to clockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.default.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.default.worker.js new file mode 100644 index 00000000000..f6db49f0d2d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.default.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.default +// Description:arc() with missing last argument defaults to clockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with missing last argument defaults to clockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 0); +ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.empty.html new file mode 100644 index 00000000000..ec669b049e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.empty.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.empty + + + + +

    2d.path.arc.empty

    +

    arc() with an empty path does not draw a straight line to the start point

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js new file mode 100644 index 00000000000..f78e4a92a3a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.empty.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.empty +// Description:arc() with an empty path does not draw a straight line to the start point +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with an empty path does not draw a straight line to the start point"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.arc(200, 25, 5, 0, 2*Math.PI, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.end.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.end.html new file mode 100644 index 00000000000..649c3043696 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.end.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.arc.end + + + + +

    2d.path.arc.end

    +

    arc() adds the end point of the arc to the subpath

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.end.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.end.worker.js new file mode 100644 index 00000000000..3782a6d82cf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.end.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.end +// Description:arc() adds the end point of the arc to the subpath +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() adds the end point of the arc to the subpath"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(-100, 0); +ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); +ctx.lineTo(100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.negative.html new file mode 100644 index 00000000000..c46d56ce819 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.negative.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.path.arc.negative + + + + +

    2d.path.arc.negative

    +

    arc() with negative radius throws INDEX_SIZE_ERR

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js new file mode 100644 index 00000000000..e389aafbf86 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.negative.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.negative +// Description:arc() with negative radius throws INDEX_SIZE_ERR +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with negative radius throws INDEX_SIZE_ERR"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("INDEX_SIZE_ERR", function() { ctx.arc(0, 0, -1, 0, 0, true); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonempty.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonempty.html new file mode 100644 index 00000000000..75c70da4265 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonempty.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.arc.nonempty + + + + +

    2d.path.arc.nonempty

    +

    arc() with a non-empty path does draw a straight line to the start point

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js new file mode 100644 index 00000000000..4446654dacc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonempty.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.nonempty +// Description:arc() with a non-empty path does draw a straight line to the start point +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with a non-empty path does draw a straight line to the start point"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arc(200, 25, 5, 0, 2*Math.PI, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html new file mode 100644 index 00000000000..e6743e41fc6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonfinite.html @@ -0,0 +1,74 @@ + + +OffscreenCanvas test: 2d.path.arc.nonfinite + + + + +

    2d.path.arc.nonfinite

    +

    arc() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js new file mode 100644 index 00000000000..6a81cfec503 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.nonfinite.worker.js @@ -0,0 +1,70 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.nonfinite +// Description:arc() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.arc(Infinity, 0, 50, 0, 2*Math.PI, true); +ctx.arc(-Infinity, 0, 50, 0, 2*Math.PI, true); +ctx.arc(NaN, 0, 50, 0, 2*Math.PI, true); +ctx.arc(0, Infinity, 50, 0, 2*Math.PI, true); +ctx.arc(0, -Infinity, 50, 0, 2*Math.PI, true); +ctx.arc(0, NaN, 50, 0, 2*Math.PI, true); +ctx.arc(0, 0, Infinity, 0, 2*Math.PI, true); +ctx.arc(0, 0, -Infinity, 0, 2*Math.PI, true); +ctx.arc(0, 0, NaN, 0, 2*Math.PI, true); +ctx.arc(0, 0, 50, Infinity, 2*Math.PI, true); +ctx.arc(0, 0, 50, -Infinity, 2*Math.PI, true); +ctx.arc(0, 0, 50, NaN, 2*Math.PI, true); +ctx.arc(0, 0, 50, 0, Infinity, true); +ctx.arc(0, 0, 50, 0, -Infinity, true); +ctx.arc(0, 0, 50, 0, NaN, true); +ctx.arc(Infinity, Infinity, 50, 0, 2*Math.PI, true); +ctx.arc(Infinity, Infinity, Infinity, 0, 2*Math.PI, true); +ctx.arc(Infinity, Infinity, Infinity, Infinity, 2*Math.PI, true); +ctx.arc(Infinity, Infinity, Infinity, Infinity, Infinity, true); +ctx.arc(Infinity, Infinity, Infinity, 0, Infinity, true); +ctx.arc(Infinity, Infinity, 50, Infinity, 2*Math.PI, true); +ctx.arc(Infinity, Infinity, 50, Infinity, Infinity, true); +ctx.arc(Infinity, Infinity, 50, 0, Infinity, true); +ctx.arc(Infinity, 0, Infinity, 0, 2*Math.PI, true); +ctx.arc(Infinity, 0, Infinity, Infinity, 2*Math.PI, true); +ctx.arc(Infinity, 0, Infinity, Infinity, Infinity, true); +ctx.arc(Infinity, 0, Infinity, 0, Infinity, true); +ctx.arc(Infinity, 0, 50, Infinity, 2*Math.PI, true); +ctx.arc(Infinity, 0, 50, Infinity, Infinity, true); +ctx.arc(Infinity, 0, 50, 0, Infinity, true); +ctx.arc(0, Infinity, Infinity, 0, 2*Math.PI, true); +ctx.arc(0, Infinity, Infinity, Infinity, 2*Math.PI, true); +ctx.arc(0, Infinity, Infinity, Infinity, Infinity, true); +ctx.arc(0, Infinity, Infinity, 0, Infinity, true); +ctx.arc(0, Infinity, 50, Infinity, 2*Math.PI, true); +ctx.arc(0, Infinity, 50, Infinity, Infinity, true); +ctx.arc(0, Infinity, 50, 0, Infinity, true); +ctx.arc(0, 0, Infinity, Infinity, 2*Math.PI, true); +ctx.arc(0, 0, Infinity, Infinity, Infinity, true); +ctx.arc(0, 0, Infinity, 0, Infinity, true); +ctx.arc(0, 0, 50, Infinity, Infinity, true); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.1.html new file mode 100644 index 00000000000..d6dd79309dd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.1.html @@ -0,0 +1,50 @@ + + +OffscreenCanvas test: 2d.path.arc.scale.1 + + + + +

    2d.path.arc.scale.1

    +

    Non-uniformly scaled arcs are the right shape

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js new file mode 100644 index 00000000000..f35ba459afd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.1.worker.js @@ -0,0 +1,46 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.scale.1 +// Description:Non-uniformly scaled arcs are the right shape +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Non-uniformly scaled arcs are the right shape"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(2, 0.5); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.arc(25, 50, 56, 0, 2*Math.PI, false); +ctx.fill(); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(-25, 50); +ctx.arc(-25, 50, 24, 0, 2*Math.PI, false); +ctx.moveTo(75, 50); +ctx.arc(75, 50, 24, 0, 2*Math.PI, false); +ctx.moveTo(25, -25); +ctx.arc(25, -25, 24, 0, 2*Math.PI, false); +ctx.moveTo(25, 125); +ctx.arc(25, 125, 24, 0, 2*Math.PI, false); +ctx.fill(); +_assertPixel(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.2.html new file mode 100644 index 00000000000..c3dfddef12c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.2.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.path.arc.scale.2 + + + + +

    2d.path.arc.scale.2

    +

    Highly scaled arcs are the right shape

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js new file mode 100644 index 00000000000..4ace0218af7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.scale.2.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.scale.2 +// Description:Highly scaled arcs are the right shape +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Highly scaled arcs are the right shape"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(100, 100); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 1.2; +ctx.beginPath(); +ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html new file mode 100644 index 00000000000..fbab5d11f20 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.arc.selfintersect.1 + + + + +

    2d.path.arc.selfintersect.1

    +

    arc() with lineWidth > 2*radius is drawn sensibly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js new file mode 100644 index 00000000000..31483542356 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.1.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.selfintersect.1 +// Description:arc() with lineWidth > 2*radius is drawn sensibly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with lineWidth > 2*radius is drawn sensibly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 200; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.arc(100, 50, 25, 0, -Math.PI/2, true); +ctx.stroke(); +ctx.beginPath(); +ctx.arc(0, 0, 25, 0, -Math.PI/2, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html new file mode 100644 index 00000000000..e96b8f2bc8b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.path.arc.selfintersect.2 + + + + +

    2d.path.arc.selfintersect.2

    +

    arc() with lineWidth > 2*radius is drawn sensibly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js new file mode 100644 index 00000000000..bf29cd12ddc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.selfintersect.2.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.selfintersect.2 +// Description:arc() with lineWidth > 2*radius is drawn sensibly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with lineWidth > 2*radius is drawn sensibly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 180; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.arc(-50, 50, 25, 0, -Math.PI/2, true); +ctx.stroke(); +ctx.beginPath(); +ctx.arc(100, 0, 25, 0, -Math.PI/2, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); +_assertPixel(offscreenCanvas, 97,1, 0,255,0,255, "97,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 97,2, 0,255,0,255, "97,2", "0,255,0,255"); +_assertPixel(offscreenCanvas, 97,3, 0,255,0,255, "97,3", "0,255,0,255"); +_assertPixel(offscreenCanvas, 2,48, 0,255,0,255, "2,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.1.html new file mode 100644 index 00000000000..8be62a1dba0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.1.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.arc.shape.1 + + + + +

    2d.path.arc.shape.1

    +

    arc() from 0 to pi does not draw anything in the wrong half

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js new file mode 100644 index 00000000000..3be6bc6fd45 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.1.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.shape.1 +// Description:arc() from 0 to pi does not draw anything in the wrong half +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() from 0 to pi does not draw anything in the wrong half"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.arc(50, 50, 50, 0, Math.PI, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.2.html new file mode 100644 index 00000000000..d9b53d9db77 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.2.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.arc.shape.2 + + + + +

    2d.path.arc.shape.2

    +

    arc() from 0 to pi draws stuff in the right half

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js new file mode 100644 index 00000000000..98e7b1ddc5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.2.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.shape.2 +// Description:arc() from 0 to pi draws stuff in the right half +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() from 0 to pi draws stuff in the right half"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 100; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.arc(50, 50, 50, 0, Math.PI, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 20,48, 0,255,0,255, "20,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.3.html new file mode 100644 index 00000000000..03b44d772ac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.3.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.arc.shape.3 + + + + +

    2d.path.arc.shape.3

    +

    arc() from 0 to -pi/2 does not draw anything in the wrong quadrant

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js new file mode 100644 index 00000000000..1f09f586aee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.3.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.shape.3 +// Description:arc() from 0 to -pi/2 does not draw anything in the wrong quadrant +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() from 0 to -pi/2 does not draw anything in the wrong quadrant"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 100; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.arc(0, 50, 50, 0, -Math.PI/2, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.4.html new file mode 100644 index 00000000000..68767de525f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.4.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.arc.shape.4 + + + + +

    2d.path.arc.shape.4

    +

    arc() from 0 to -pi/2 draws stuff in the right quadrant

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js new file mode 100644 index 00000000000..d299c5b675c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.4.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.shape.4 +// Description:arc() from 0 to -pi/2 draws stuff in the right quadrant +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() from 0 to -pi/2 draws stuff in the right quadrant"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 150; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.5.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.5.html new file mode 100644 index 00000000000..e6a2aadbc82 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.5.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.arc.shape.5 + + + + +

    2d.path.arc.shape.5

    +

    arc() from 0 to 5pi does not draw crazy things

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js new file mode 100644 index 00000000000..21a0ca3c77d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.shape.5.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.shape.5 +// Description:arc() from 0 to 5pi does not draw crazy things +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() from 0 to 5pi does not draw crazy things"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 200; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.arc(300, 0, 100, 0, 5*Math.PI, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html new file mode 100644 index 00000000000..5595e3284a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.twopie.1 + + + + +

    2d.path.arc.twopie.1

    +

    arc() draws nothing when end = start + 2pi-e and anticlockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js new file mode 100644 index 00000000000..552557154a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.twopie.1 +// Description:arc() draws nothing when end = start + 2pi-e and anticlockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws nothing when end = start + 2pi-e and anticlockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html new file mode 100644 index 00000000000..4ea42b2d3ec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.twopie.2 + + + + +

    2d.path.arc.twopie.2

    +

    arc() draws a full circle when end = start + 2pi-e and clockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js new file mode 100644 index 00000000000..d9f41d85da8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.twopie.2 +// Description:arc() draws a full circle when end = start + 2pi-e and clockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws a full circle when end = start + 2pi-e and clockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html new file mode 100644 index 00000000000..01bae074db8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.3.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.twopie.3 + + + + +

    2d.path.arc.twopie.3

    +

    arc() draws a full circle when end = start + 2pi+e and anticlockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js new file mode 100644 index 00000000000..41c400e7f13 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.3.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.twopie.3 +// Description:arc() draws a full circle when end = start + 2pi+e and anticlockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws a full circle when end = start + 2pi+e and anticlockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html new file mode 100644 index 00000000000..9906377045a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.4.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.twopie.4 + + + + +

    2d.path.arc.twopie.4

    +

    arc() draws nothing when end = start + 2pi+e and clockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js new file mode 100644 index 00000000000..241071fd835 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.twopie.4.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.twopie.4 +// Description:arc() draws nothing when end = start + 2pi+e and clockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws nothing when end = start + 2pi+e and clockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.1.html new file mode 100644 index 00000000000..60b73e041fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.zero.1 + + + + +

    2d.path.arc.zero.1

    +

    arc() draws nothing when startAngle = endAngle and anticlockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js new file mode 100644 index 00000000000..91f15d4e956 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.zero.1 +// Description:arc() draws nothing when startAngle = endAngle and anticlockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws nothing when startAngle = endAngle and anticlockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.arc(50, 25, 50, 0, 0, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.2.html new file mode 100644 index 00000000000..306e5312807 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arc.zero.2 + + + + +

    2d.path.arc.zero.2

    +

    arc() draws nothing when startAngle = endAngle and clockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js new file mode 100644 index 00000000000..4238b7dac86 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zero.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.zero.2 +// Description:arc() draws nothing when startAngle = endAngle and clockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() draws nothing when startAngle = endAngle and clockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.arc(50, 25, 50, 0, 0, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,20, 0,255,0,255, "50,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html new file mode 100644 index 00000000000..ed77c3b7a86 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zeroradius.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.arc.zeroradius + + + + +

    2d.path.arc.zeroradius

    +

    arc() with zero radius draws a line to the start point

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js new file mode 100644 index 00000000000..fb12a8f438c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arc.zeroradius.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arc.zeroradius +// Description:arc() with zero radius draws a line to the start point +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arc() with zero radius draws a line to the start point"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00' +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arc(200, 25, 0, 0, Math.PI, true); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html new file mode 100644 index 00000000000..1f73025683b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.path.arcTo.coincide.1 + + + + +

    2d.path.arcTo.coincide.1

    +

    arcTo() has no effect if P0 = P1

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js new file mode 100644 index 00000000000..a646c364019 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.1.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.coincide.1 +// Description:arcTo() has no effect if P0 = P1 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() has no effect if P0 = P1"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(0, 25, 50, 1000, 1); +ctx.lineTo(100, 25); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.arcTo(50, 25, 100, 25, 1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,1, 0,255,0,255, "50,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,48, 0,255,0,255, "50,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html new file mode 100644 index 00000000000..d77d5de62ba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.arcTo.coincide.2 + + + + +

    2d.path.arcTo.coincide.2

    +

    arcTo() draws a straight line to P1 if P1 = P2

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js new file mode 100644 index 00000000000..5459619f342 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.coincide.2.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.coincide.2 +// Description:arcTo() draws a straight line to P1 if P1 = P2 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() draws a straight line to P1 if P1 = P2"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(100, 25, 100, 25, 1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html new file mode 100644 index 00000000000..e1cd1495eca --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.arcTo.collinear.1 + + + + +

    2d.path.arcTo.collinear.1

    +

    arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js new file mode 100644 index 00000000000..580cac8dbf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.1.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.collinear.1 +// Description:arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(100, 25, 200, 25, 1); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(-100, 25); +ctx.arcTo(0, 25, 100, 25, 1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html new file mode 100644 index 00000000000..1287b57ff89 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.arcTo.collinear.2 + + + + +

    2d.path.arcTo.collinear.2

    +

    arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js new file mode 100644 index 00000000000..ceeae492e0a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.2.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.collinear.2 +// Description:arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(100, 25, 10, 25, 1); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 25); +ctx.arcTo(200, 25, 110, 25, 1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html new file mode 100644 index 00000000000..0c56e4dbade --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.path.arcTo.collinear.3 + + + + +

    2d.path.arcTo.collinear.3

    +

    arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js new file mode 100644 index 00000000000..536bd0d8363 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.collinear.3.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.collinear.3 +// Description:arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(100, 25, -100, 25, 1); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 25); +ctx.arcTo(200, 25, 0, 25, 1); +ctx.stroke(); +ctx.beginPath(); +ctx.moveTo(-100, 25); +ctx.arcTo(0, 25, -200, 25, 1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html new file mode 100644 index 00000000000..8b54906377c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.arcTo.ensuresubpath.1 + + + + +

    2d.path.arcTo.ensuresubpath.1

    +

    If there is no subpath, the first control point is added (and nothing is drawn up to it)

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js new file mode 100644 index 00000000000..cefcf11e8d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.ensuresubpath.1 +// Description:If there is no subpath, the first control point is added (and nothing is drawn up to it) +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the first control point is added (and nothing is drawn up to it)"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.arcTo(100, 50, 200, 50, 0.1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html new file mode 100644 index 00000000000..8056389a311 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.arcTo.ensuresubpath.2 + + + + +

    2d.path.arcTo.ensuresubpath.2

    +

    If there is no subpath, the first control point is added

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js new file mode 100644 index 00000000000..d6ab04e1d39 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.ensuresubpath.2.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.ensuresubpath.2 +// Description:If there is no subpath, the first control point is added +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the first control point is added"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing +ctx.lineTo(100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.negative.html new file mode 100644 index 00000000000..d258d0bd659 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.negative.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.path.arcTo.negative + + + + +

    2d.path.arcTo.negative

    +

    arcTo() with negative radius throws an exception

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js new file mode 100644 index 00000000000..b95f4c5165a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.negative.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.negative +// Description:arcTo() with negative radius throws an exception +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with negative radius throws an exception"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("INDEX_SIZE_ERR", function() { ctx.arcTo(0, 0, 0, 0, -1); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html new file mode 100644 index 00000000000..2226f57139b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.html @@ -0,0 +1,72 @@ + + +OffscreenCanvas test: 2d.path.arcTo.nonfinite + + + + +

    2d.path.arcTo.nonfinite

    +

    arcTo() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js new file mode 100644 index 00000000000..c8b007591ce --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.nonfinite.worker.js @@ -0,0 +1,68 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.nonfinite +// Description:arcTo() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.arcTo(Infinity, 50, 0, 50, 0); +ctx.arcTo(-Infinity, 50, 0, 50, 0); +ctx.arcTo(NaN, 50, 0, 50, 0); +ctx.arcTo(0, Infinity, 0, 50, 0); +ctx.arcTo(0, -Infinity, 0, 50, 0); +ctx.arcTo(0, NaN, 0, 50, 0); +ctx.arcTo(0, 50, Infinity, 50, 0); +ctx.arcTo(0, 50, -Infinity, 50, 0); +ctx.arcTo(0, 50, NaN, 50, 0); +ctx.arcTo(0, 50, 0, Infinity, 0); +ctx.arcTo(0, 50, 0, -Infinity, 0); +ctx.arcTo(0, 50, 0, NaN, 0); +ctx.arcTo(0, 50, 0, 50, Infinity); +ctx.arcTo(0, 50, 0, 50, -Infinity); +ctx.arcTo(0, 50, 0, 50, NaN); +ctx.arcTo(Infinity, Infinity, 0, 50, 0); +ctx.arcTo(Infinity, Infinity, Infinity, 50, 0); +ctx.arcTo(Infinity, Infinity, Infinity, Infinity, 0); +ctx.arcTo(Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.arcTo(Infinity, Infinity, Infinity, 50, Infinity); +ctx.arcTo(Infinity, Infinity, 0, Infinity, 0); +ctx.arcTo(Infinity, Infinity, 0, Infinity, Infinity); +ctx.arcTo(Infinity, Infinity, 0, 50, Infinity); +ctx.arcTo(Infinity, 50, Infinity, 50, 0); +ctx.arcTo(Infinity, 50, Infinity, Infinity, 0); +ctx.arcTo(Infinity, 50, Infinity, Infinity, Infinity); +ctx.arcTo(Infinity, 50, Infinity, 50, Infinity); +ctx.arcTo(Infinity, 50, 0, Infinity, 0); +ctx.arcTo(Infinity, 50, 0, Infinity, Infinity); +ctx.arcTo(Infinity, 50, 0, 50, Infinity); +ctx.arcTo(0, Infinity, Infinity, 50, 0); +ctx.arcTo(0, Infinity, Infinity, Infinity, 0); +ctx.arcTo(0, Infinity, Infinity, Infinity, Infinity); +ctx.arcTo(0, Infinity, Infinity, 50, Infinity); +ctx.arcTo(0, Infinity, 0, Infinity, 0); +ctx.arcTo(0, Infinity, 0, Infinity, Infinity); +ctx.arcTo(0, Infinity, 0, 50, Infinity); +ctx.arcTo(0, 50, Infinity, Infinity, 0); +ctx.arcTo(0, 50, Infinity, Infinity, Infinity); +ctx.arcTo(0, 50, Infinity, 50, Infinity); +ctx.arcTo(0, 50, 0, Infinity, Infinity); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.scale.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.scale.html new file mode 100644 index 00000000000..69490ea5817 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.scale.html @@ -0,0 +1,42 @@ + + +OffscreenCanvas test: 2d.path.arcTo.scale + + + + +

    2d.path.arcTo.scale

    +

    arcTo scales the curve, not just the control points

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js new file mode 100644 index 00000000000..80b3419f20d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.scale.worker.js @@ -0,0 +1,38 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.scale +// Description:arcTo scales the curve, not just the control points +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo scales the curve, not just the control points"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 50); +ctx.translate(100, 0); +ctx.scale(0.1, 1); +ctx.arcTo(50, 50, 50, 0, 50); +ctx.lineTo(-1000, 0); +ctx.fill(); +_assertPixel(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html new file mode 100644 index 00000000000..fe944137cb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.html @@ -0,0 +1,53 @@ + + +OffscreenCanvas test: 2d.path.arcTo.shape.curve1 + + + + +

    2d.path.arcTo.shape.curve1

    +

    arcTo() curves in the right kind of shape

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js new file mode 100644 index 00000000000..2e7e3d9c118 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve1.worker.js @@ -0,0 +1,49 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.shape.curve1 +// Description:arcTo() curves in the right kind of shape +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() curves in the right kind of shape"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var tol = 1.5; // tolerance to avoid antialiasing artifacts +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 10; +ctx.beginPath(); +ctx.moveTo(10, 25); +ctx.arcTo(75, 25, 75, 60, 20); +ctx.stroke(); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.rect(10, 20, 45, 10); +ctx.moveTo(80, 45); +ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); +ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); +_assertPixel(offscreenCanvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); +_assertPixel(offscreenCanvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); +_assertPixel(offscreenCanvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); +_assertPixel(offscreenCanvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); +_assertPixel(offscreenCanvas, 65,45, 0,255,0,255, "65,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html new file mode 100644 index 00000000000..926b043f651 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.html @@ -0,0 +1,52 @@ + + +OffscreenCanvas test: 2d.path.arcTo.shape.curve2 + + + + +

    2d.path.arcTo.shape.curve2

    +

    arcTo() curves in the right kind of shape

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js new file mode 100644 index 00000000000..f2fafb06474 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.curve2.worker.js @@ -0,0 +1,48 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.shape.curve2 +// Description:arcTo() curves in the right kind of shape +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() curves in the right kind of shape"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var tol = 1.5; // tolerance to avoid antialiasing artifacts +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.beginPath(); +ctx.rect(10, 20, 45, 10); +ctx.moveTo(80, 45); +ctx.arc(55, 45, 25-tol, 0, -Math.PI/2, true); +ctx.arc(55, 45, 15+tol, -Math.PI/2, 0, false); +ctx.fill(); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 10; +ctx.beginPath(); +ctx.moveTo(10, 25); +ctx.arcTo(75, 25, 75, 60, 20); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 55,19, 0,255,0,255, "55,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 55,20, 0,255,0,255, "55,20", "0,255,0,255"); +_assertPixel(offscreenCanvas, 55,21, 0,255,0,255, "55,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 64,22, 0,255,0,255, "64,22", "0,255,0,255"); +_assertPixel(offscreenCanvas, 65,21, 0,255,0,255, "65,21", "0,255,0,255"); +_assertPixel(offscreenCanvas, 72,28, 0,255,0,255, "72,28", "0,255,0,255"); +_assertPixel(offscreenCanvas, 73,27, 0,255,0,255, "73,27", "0,255,0,255"); +_assertPixel(offscreenCanvas, 78,36, 0,255,0,255, "78,36", "0,255,0,255"); +_assertPixel(offscreenCanvas, 79,35, 0,255,0,255, "79,35", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,44, 0,255,0,255, "80,44", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,45, 0,255,0,255, "80,45", "0,255,0,255"); +_assertPixel(offscreenCanvas, 80,46, 0,255,0,255, "80,46", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html new file mode 100644 index 00000000000..a3341c04f1c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.arcTo.shape.end + + + + +

    2d.path.arcTo.shape.end

    +

    arcTo() does not draw anything from P1 to P2

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js new file mode 100644 index 00000000000..52716753194 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.end.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.shape.end +// Description:arcTo() does not draw anything from P1 to P2 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() does not draw anything from P1 to P2"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.moveTo(-100, -100); +ctx.arcTo(-100, 25, 200, 25, 10); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html new file mode 100644 index 00000000000..5071526e49c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.arcTo.shape.start + + + + +

    2d.path.arcTo.shape.start

    +

    arcTo() draws a straight line from P0 to P1

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js new file mode 100644 index 00000000000..84835686d16 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.shape.start.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.shape.start +// Description:arcTo() draws a straight line from P0 to P1 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() draws a straight line from P0 to P1"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(200, 25, 200, 50, 10); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html new file mode 100644 index 00000000000..a6989d0dfec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.transformation.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.path.arcTo.transformation + + + + +

    2d.path.arcTo.transformation

    +

    arcTo joins up to the last subpath point correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js new file mode 100644 index 00000000000..a545bd3d51f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.transformation.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.transformation +// Description:arcTo joins up to the last subpath point correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo joins up to the last subpath point correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 50); +ctx.translate(100, 0); +ctx.arcTo(50, 50, 50, 0, 50); +ctx.lineTo(-100, 0); +ctx.fill(); +_assertPixel(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html new file mode 100644 index 00000000000..77f69f59358 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.arcTo.zero.1 + + + + +

    2d.path.arcTo.zero.1

    +

    arcTo() with zero radius draws a straight line from P0 to P1

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js new file mode 100644 index 00000000000..d1d2e87b4ca --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.1.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.zero.1 +// Description:arcTo() with zero radius draws a straight line from P0 to P1 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with zero radius draws a straight line from P0 to P1"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(100, 25, 100, 100, 0); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(0, -25); +ctx.arcTo(50, -25, 50, 50, 0); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html new file mode 100644 index 00000000000..debe3d31482 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.arcTo.zero.2 + + + + +

    2d.path.arcTo.zero.2

    +

    arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js new file mode 100644 index 00000000000..3ff55ce50c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.arcTo.zero.2.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.arcTo.zero.2 +// Description:arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.strokeStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.arcTo(100, 25, -100, 25, 0); +ctx.stroke(); +ctx.strokeStyle = '#f00'; +ctx.beginPath(); +ctx.moveTo(100, 25); +ctx.arcTo(200, 25, 50, 25, 0); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.beginPath.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.beginPath.html new file mode 100644 index 00000000000..46c47d74bdc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.beginPath.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.path.beginPath + + + + +

    2d.path.beginPath

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.beginPath.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.beginPath.worker.js new file mode 100644 index 00000000000..30069e36992 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.beginPath.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.beginPath +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.rect(0, 0, 100, 50); +ctx.beginPath(); +ctx.fillStyle = '#f00'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html new file mode 100644 index 00000000000..42f2f046b0e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.bezierCurveTo.basic + + + + +

    2d.path.bezierCurveTo.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js new file mode 100644 index 00000000000..57e10844fea --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.basic.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.bezierCurveTo.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html new file mode 100644 index 00000000000..29ceb0d5189 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.bezierCurveTo.ensuresubpath.1 + + + + +

    2d.path.bezierCurveTo.ensuresubpath.1

    +

    If there is no subpath, the first control point is added (and nothing is drawn up to it)

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js new file mode 100644 index 00000000000..5c942267046 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.bezierCurveTo.ensuresubpath.1 +// Description:If there is no subpath, the first control point is added (and nothing is drawn up to it) +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the first control point is added (and nothing is drawn up to it)"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html new file mode 100644 index 00000000000..937773b1763 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.bezierCurveTo.ensuresubpath.2 + + + + +

    2d.path.bezierCurveTo.ensuresubpath.2

    +

    If there is no subpath, the first control point is added

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js new file mode 100644 index 00000000000..d4411450670 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.bezierCurveTo.ensuresubpath.2 +// Description:If there is no subpath, the first control point is added +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the first control point is added"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html new file mode 100644 index 00000000000..58de700726e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.html @@ -0,0 +1,106 @@ + + +OffscreenCanvas test: 2d.path.bezierCurveTo.nonfinite + + + + +

    2d.path.bezierCurveTo.nonfinite

    +

    bezierCurveTo() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js new file mode 100644 index 00000000000..6b199dde180 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.nonfinite.worker.js @@ -0,0 +1,102 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.bezierCurveTo.nonfinite +// Description:bezierCurveTo() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("bezierCurveTo() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, 50); +ctx.bezierCurveTo(-Infinity, 50, 0, 50, 0, 50); +ctx.bezierCurveTo(NaN, 50, 0, 50, 0, 50); +ctx.bezierCurveTo(0, Infinity, 0, 50, 0, 50); +ctx.bezierCurveTo(0, -Infinity, 0, 50, 0, 50); +ctx.bezierCurveTo(0, NaN, 0, 50, 0, 50); +ctx.bezierCurveTo(0, 50, Infinity, 50, 0, 50); +ctx.bezierCurveTo(0, 50, -Infinity, 50, 0, 50); +ctx.bezierCurveTo(0, 50, NaN, 50, 0, 50); +ctx.bezierCurveTo(0, 50, 0, Infinity, 0, 50); +ctx.bezierCurveTo(0, 50, 0, -Infinity, 0, 50); +ctx.bezierCurveTo(0, 50, 0, NaN, 0, 50); +ctx.bezierCurveTo(0, 50, 0, 50, Infinity, 50); +ctx.bezierCurveTo(0, 50, 0, 50, -Infinity, 50); +ctx.bezierCurveTo(0, 50, 0, 50, NaN, 50); +ctx.bezierCurveTo(0, 50, 0, 50, 0, Infinity); +ctx.bezierCurveTo(0, 50, 0, 50, 0, -Infinity); +ctx.bezierCurveTo(0, 50, 0, 50, 0, NaN); +ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, 50); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, 50); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, 50); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, 50); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, 50); +ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, 50); +ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, Infinity); +ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, 50); +ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, 50); +ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, Infinity); +ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, 50); +ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, Infinity); +ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, 50); +ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, 50); +ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, Infinity); +ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, 50); +ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, Infinity); +ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, Infinity); +ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, 50); +ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, 50); +ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, 50); +ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, Infinity); +ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, 50); +ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, Infinity); +ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, Infinity); +ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, 50); +ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, 50); +ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, Infinity); +ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, 50); +ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, Infinity); +ctx.bezierCurveTo(0, Infinity, 0, 50, 0, Infinity); +ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, 50); +ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, 50); +ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, Infinity); +ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, 50); +ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, Infinity); +ctx.bezierCurveTo(0, 50, Infinity, 50, 0, Infinity); +ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, 50); +ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, Infinity); +ctx.bezierCurveTo(0, 50, 0, Infinity, 0, Infinity); +ctx.bezierCurveTo(0, 50, 0, 50, Infinity, Infinity); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html new file mode 100644 index 00000000000..2e9623584a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.bezierCurveTo.scaled + + + + +

    2d.path.bezierCurveTo.scaled

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js new file mode 100644 index 00000000000..7c05de12e6e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.scaled.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.bezierCurveTo.scaled +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(1000, 1000); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 0.055; +ctx.beginPath(); +ctx.moveTo(-2, 3.1); +ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html new file mode 100644 index 00000000000..c601b6ba567 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.bezierCurveTo.shape + + + + +

    2d.path.bezierCurveTo.shape

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js new file mode 100644 index 00000000000..ebdeda14a27 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.bezierCurveTo.shape.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.bezierCurveTo.shape +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 55; +ctx.beginPath(); +ctx.moveTo(-2000, 3100); +ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.1.html new file mode 100644 index 00000000000..4d61e3d8e84 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.clip.basic.1 + + + + +

    2d.path.clip.basic.1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js new file mode 100644 index 00000000000..391d745f65e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.basic.1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(0, 0, 100, 50); +ctx.clip(); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.2.html new file mode 100644 index 00000000000..4591f77457e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.clip.basic.2 + + + + +

    2d.path.clip.basic.2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js new file mode 100644 index 00000000000..965a328450f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.basic.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.basic.2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(-100, 0, 100, 50); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.empty.html new file mode 100644 index 00000000000..39555a97a77 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.empty.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.path.clip.empty + + + + +

    2d.path.clip.empty

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js new file mode 100644 index 00000000000..d22b27ec22c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.empty.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.empty +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.intersect.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.intersect.html new file mode 100644 index 00000000000..d7bc3bd2459 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.intersect.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.clip.intersect + + + + +

    2d.path.clip.intersect

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js new file mode 100644 index 00000000000..6dd021cdfa7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.intersect.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.intersect +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(0, 0, 50, 50); +ctx.clip(); +ctx.beginPath(); +ctx.rect(50, 0, 50, 50) +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.unaffected.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.unaffected.html new file mode 100644 index 00000000000..bf5d541835b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.unaffected.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.clip.unaffected + + + + +

    2d.path.clip.unaffected

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js new file mode 100644 index 00000000000..ce6bbd00e07 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.unaffected.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.unaffected +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.beginPath(); +ctx.moveTo(0, 0); +ctx.lineTo(0, 50); +ctx.lineTo(100, 50); +ctx.lineTo(100, 0); +ctx.clip(); +ctx.lineTo(0, 0); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.1.html new file mode 100644 index 00000000000..bae8e94cd37 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.1.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.path.clip.winding.1 + + + + +

    2d.path.clip.winding.1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js new file mode 100644 index 00000000000..5865147c09d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.1.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.winding.1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.moveTo(-10, -10); +ctx.lineTo(110, -10); +ctx.lineTo(110, 60); +ctx.lineTo(-10, 60); +ctx.lineTo(-10, -10); +ctx.lineTo(0, 0); +ctx.lineTo(0, 50); +ctx.lineTo(100, 50); +ctx.lineTo(100, 0); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.2.html new file mode 100644 index 00000000000..ec2568970cf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.2.html @@ -0,0 +1,42 @@ + + +OffscreenCanvas test: 2d.path.clip.winding.2 + + + + +

    2d.path.clip.winding.2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js new file mode 100644 index 00000000000..649c4346ad0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.clip.winding.2.worker.js @@ -0,0 +1,38 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.clip.winding.2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.moveTo(-10, -10); +ctx.lineTo(110, -10); +ctx.lineTo(110, 60); +ctx.lineTo(-10, 60); +ctx.lineTo(-10, -10); +ctx.clip(); +ctx.beginPath(); +ctx.moveTo(0, 0); +ctx.lineTo(0, 50); +ctx.lineTo(100, 50); +ctx.lineTo(100, 0); +ctx.lineTo(0, 0); +ctx.clip(); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.empty.html new file mode 100644 index 00000000000..8cc5168d358 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.empty.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.path.closePath.empty + + + + +

    2d.path.closePath.empty

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js new file mode 100644 index 00000000000..be09fff5ebd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.empty.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.closePath.empty +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.closePath(); +ctx.fillStyle = '#f00'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.newline.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.newline.html new file mode 100644 index 00000000000..3f4f1839f7e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.newline.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.closePath.newline + + + + +

    2d.path.closePath.newline

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js new file mode 100644 index 00000000000..04f3392e688 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.newline.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.closePath.newline +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.moveTo(-100, 25); +ctx.lineTo(-100, -100); +ctx.lineTo(200, -100); +ctx.lineTo(200, 25); +ctx.closePath(); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html new file mode 100644 index 00000000000..b30fbd69862 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.closePath.nextpoint + + + + +

    2d.path.closePath.nextpoint

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js new file mode 100644 index 00000000000..f590e76ffd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.closePath.nextpoint.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.closePath.nextpoint +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.moveTo(-100, 25); +ctx.lineTo(-100, -1000); +ctx.closePath(); +ctx.lineTo(1000, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html new file mode 100644 index 00000000000..e13ea6f760e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.basic.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.fill.closed.basic + + + + +

    2d.path.fill.closed.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js new file mode 100644 index 00000000000..3d3c3c72326 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.basic.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.closed.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html new file mode 100644 index 00000000000..7fdbe47a946 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.fill.closed.unaffected + + + + +

    2d.path.fill.closed.unaffected

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js new file mode 100644 index 00000000000..473dad64af3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.closed.unaffected.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.closed.unaffected +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#00f'; +ctx.fillRect(0, 0, 100, 50); +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.lineTo(100, 50); +ctx.fillStyle = '#f00'; +ctx.fill(); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 90,10, 0,255,0,255, "90,10", "0,255,0,255"); +_assertPixel(offscreenCanvas, 10,40, 0,255,0,255, "10,40", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.overlap.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.overlap.html new file mode 100644 index 00000000000..b8c6f2ad4a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.overlap.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.fill.overlap + + + + +

    2d.path.fill.overlap

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js new file mode 100644 index 00000000000..5e5301b8203 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.overlap.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.overlap +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#000'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.rect(0, 0, 100, 50); +ctx.closePath(); +ctx.rect(10, 10, 80, 30); +ctx.fill(); +_assertPixelApprox(offscreenCanvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.add.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.add.html new file mode 100644 index 00000000000..d01c5df8f48 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.add.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.fill.winding.add + + + + +

    2d.path.fill.winding.add

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js new file mode 100644 index 00000000000..37df3d5a9a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.add.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.winding.add +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.moveTo(-10, -10); +ctx.lineTo(110, -10); +ctx.lineTo(110, 60); +ctx.lineTo(-10, 60); +ctx.lineTo(-10, -10); +ctx.lineTo(0, 0); +ctx.lineTo(100, 0); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html new file mode 100644 index 00000000000..32afbf60327 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.fill.winding.subtract.1 + + + + +

    2d.path.fill.winding.subtract.1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js new file mode 100644 index 00000000000..37f6c71171b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.1.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.winding.subtract.1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.moveTo(-10, -10); +ctx.lineTo(110, -10); +ctx.lineTo(110, 60); +ctx.lineTo(-10, 60); +ctx.lineTo(-10, -10); +ctx.lineTo(0, 0); +ctx.lineTo(0, 50); +ctx.lineTo(100, 50); +ctx.lineTo(100, 0); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html new file mode 100644 index 00000000000..3742632f21a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.fill.winding.subtract.2 + + + + +

    2d.path.fill.winding.subtract.2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js new file mode 100644 index 00000000000..864cfd5f3e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.2.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.winding.subtract.2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.moveTo(-10, -10); +ctx.lineTo(110, -10); +ctx.lineTo(110, 60); +ctx.lineTo(-10, 60); +ctx.moveTo(0, 0); +ctx.lineTo(0, 50); +ctx.lineTo(100, 50); +ctx.lineTo(100, 0); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html new file mode 100644 index 00000000000..693806a04d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.html @@ -0,0 +1,42 @@ + + +OffscreenCanvas test: 2d.path.fill.winding.subtract.3 + + + + +

    2d.path.fill.winding.subtract.3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js new file mode 100644 index 00000000000..276b0cbc7c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.fill.winding.subtract.3.worker.js @@ -0,0 +1,38 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.fill.winding.subtract.3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.moveTo(-10, -10); +ctx.lineTo(110, -10); +ctx.lineTo(110, 60); +ctx.lineTo(-10, 60); +ctx.lineTo(-10, -10); +ctx.lineTo(-20, -20); +ctx.lineTo(120, -20); +ctx.lineTo(120, 70); +ctx.lineTo(-20, 70); +ctx.lineTo(-20, -20); +ctx.lineTo(0, 0); +ctx.lineTo(0, 50); +ctx.lineTo(100, 50); +ctx.lineTo(100, 0); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.initial.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.initial.html new file mode 100644 index 00000000000..d46744d00ec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.initial.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.path.initial + + + + +

    2d.path.initial

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.initial.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.initial.worker.js new file mode 100644 index 00000000000..5856714876e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.initial.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.initial +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.closePath(); +ctx.fillStyle = '#f00'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html new file mode 100644 index 00000000000..4558af168b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.arc + + + + +

    2d.path.isPointInPath.arc

    +

    isPointInPath() works on arcs

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js new file mode 100644 index 00000000000..9a6e76e05bb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.arc.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.arc +// Description:isPointInPath() works on arcs +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() works on arcs"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.arc(50, 25, 10, 0, Math.PI, false); +_assertSame(ctx.isPointInPath(50, 10), false, "ctx.isPointInPath(50, 10)", "false"); +_assertSame(ctx.isPointInPath(50, 20), false, "ctx.isPointInPath(50, 20)", "false"); +_assertSame(ctx.isPointInPath(50, 30), true, "ctx.isPointInPath(50, 30)", "true"); +_assertSame(ctx.isPointInPath(50, 40), false, "ctx.isPointInPath(50, 40)", "false"); +_assertSame(ctx.isPointInPath(30, 20), false, "ctx.isPointInPath(30, 20)", "false"); +_assertSame(ctx.isPointInPath(70, 20), false, "ctx.isPointInPath(70, 20)", "false"); +_assertSame(ctx.isPointInPath(30, 30), false, "ctx.isPointInPath(30, 30)", "false"); +_assertSame(ctx.isPointInPath(70, 30), false, "ctx.isPointInPath(70, 30)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html new file mode 100644 index 00000000000..774ef7664f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.basic.1 + + + + +

    2d.path.isPointInPath.basic.1

    +

    isPointInPath() detects whether the point is inside the path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js new file mode 100644 index 00000000000..8e2fbee4960 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.1.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.basic.1 +// Description:isPointInPath() detects whether the point is inside the path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() detects whether the point is inside the path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(0, 0, 20, 20); +_assertSame(ctx.isPointInPath(10, 10), true, "ctx.isPointInPath(10, 10)", "true"); +_assertSame(ctx.isPointInPath(30, 10), false, "ctx.isPointInPath(30, 10)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html new file mode 100644 index 00000000000..9216c73fd4d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.basic.2 + + + + +

    2d.path.isPointInPath.basic.2

    +

    isPointInPath() detects whether the point is inside the path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js new file mode 100644 index 00000000000..b2bf9410ba7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.basic.2.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.basic.2 +// Description:isPointInPath() detects whether the point is inside the path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() detects whether the point is inside the path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(20, 0, 20, 20); +_assertSame(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false"); +_assertSame(ctx.isPointInPath(30, 10), true, "ctx.isPointInPath(30, 10)", "true"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html new file mode 100644 index 00000000000..51901846622 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.html @@ -0,0 +1,45 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.bezier + + + + +

    2d.path.isPointInPath.bezier

    +

    isPointInPath() works on Bezier curves

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js new file mode 100644 index 00000000000..5d2f9e0089f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bezier.worker.js @@ -0,0 +1,41 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.bezier +// Description:isPointInPath() works on Bezier curves +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() works on Bezier curves"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(25, 25); +ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); +_assertSame(ctx.isPointInPath(25, 20), false, "ctx.isPointInPath(25, 20)", "false"); +_assertSame(ctx.isPointInPath(25, 30), false, "ctx.isPointInPath(25, 30)", "false"); +_assertSame(ctx.isPointInPath(30, 20), true, "ctx.isPointInPath(30, 20)", "true"); +_assertSame(ctx.isPointInPath(30, 30), false, "ctx.isPointInPath(30, 30)", "false"); +_assertSame(ctx.isPointInPath(40, 2), false, "ctx.isPointInPath(40, 2)", "false"); +_assertSame(ctx.isPointInPath(40, 20), true, "ctx.isPointInPath(40, 20)", "true"); +_assertSame(ctx.isPointInPath(40, 30), false, "ctx.isPointInPath(40, 30)", "false"); +_assertSame(ctx.isPointInPath(40, 47), false, "ctx.isPointInPath(40, 47)", "false"); +_assertSame(ctx.isPointInPath(45, 20), true, "ctx.isPointInPath(45, 20)", "true"); +_assertSame(ctx.isPointInPath(45, 30), false, "ctx.isPointInPath(45, 30)", "false"); +_assertSame(ctx.isPointInPath(55, 20), false, "ctx.isPointInPath(55, 20)", "false"); +_assertSame(ctx.isPointInPath(55, 30), true, "ctx.isPointInPath(55, 30)", "true"); +_assertSame(ctx.isPointInPath(60, 2), false, "ctx.isPointInPath(60, 2)", "false"); +_assertSame(ctx.isPointInPath(60, 20), false, "ctx.isPointInPath(60, 20)", "false"); +_assertSame(ctx.isPointInPath(60, 30), true, "ctx.isPointInPath(60, 30)", "true"); +_assertSame(ctx.isPointInPath(60, 47), false, "ctx.isPointInPath(60, 47)", "false"); +_assertSame(ctx.isPointInPath(70, 20), false, "ctx.isPointInPath(70, 20)", "false"); +_assertSame(ctx.isPointInPath(70, 30), true, "ctx.isPointInPath(70, 30)", "true"); +_assertSame(ctx.isPointInPath(75, 20), false, "ctx.isPointInPath(75, 20)", "false"); +_assertSame(ctx.isPointInPath(75, 30), false, "ctx.isPointInPath(75, 30)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html new file mode 100644 index 00000000000..8703eeffe50 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.bigarc + + + + +

    2d.path.isPointInPath.bigarc

    +

    isPointInPath() works on unclosed arcs larger than 2pi

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js new file mode 100644 index 00000000000..974ff759234 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.bigarc.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.bigarc +// Description:isPointInPath() works on unclosed arcs larger than 2pi +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() works on unclosed arcs larger than 2pi"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.arc(50, 25, 10, 0, 7, false); +_assertSame(ctx.isPointInPath(50, 10), false, "ctx.isPointInPath(50, 10)", "false"); +_assertSame(ctx.isPointInPath(50, 20), true, "ctx.isPointInPath(50, 20)", "true"); +_assertSame(ctx.isPointInPath(50, 30), true, "ctx.isPointInPath(50, 30)", "true"); +_assertSame(ctx.isPointInPath(50, 40), false, "ctx.isPointInPath(50, 40)", "false"); +_assertSame(ctx.isPointInPath(30, 20), false, "ctx.isPointInPath(30, 20)", "false"); +_assertSame(ctx.isPointInPath(70, 20), false, "ctx.isPointInPath(70, 20)", "false"); +_assertSame(ctx.isPointInPath(30, 30), false, "ctx.isPointInPath(30, 30)", "false"); +_assertSame(ctx.isPointInPath(70, 30), false, "ctx.isPointInPath(70, 30)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html new file mode 100644 index 00000000000..6d6d87d001f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.edge + + + + +

    2d.path.isPointInPath.edge

    +

    isPointInPath() counts points on the path as being inside

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js new file mode 100644 index 00000000000..8bf9b19b2a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.edge.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.edge +// Description:isPointInPath() counts points on the path as being inside +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() counts points on the path as being inside"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(0, 0, 20, 20); +_assertSame(ctx.isPointInPath(0, 0), true, "ctx.isPointInPath(0, 0)", "true"); +_assertSame(ctx.isPointInPath(10, 0), true, "ctx.isPointInPath(10, 0)", "true"); +_assertSame(ctx.isPointInPath(20, 0), true, "ctx.isPointInPath(20, 0)", "true"); +_assertSame(ctx.isPointInPath(20, 10), true, "ctx.isPointInPath(20, 10)", "true"); +_assertSame(ctx.isPointInPath(20, 20), true, "ctx.isPointInPath(20, 20)", "true"); +_assertSame(ctx.isPointInPath(10, 20), true, "ctx.isPointInPath(10, 20)", "true"); +_assertSame(ctx.isPointInPath(0, 20), true, "ctx.isPointInPath(0, 20)", "true"); +_assertSame(ctx.isPointInPath(0, 10), true, "ctx.isPointInPath(0, 10)", "true"); +_assertSame(ctx.isPointInPath(10, -0.01), false, "ctx.isPointInPath(10, -0.01)", "false"); +_assertSame(ctx.isPointInPath(10, 20.01), false, "ctx.isPointInPath(10, 20.01)", "false"); +_assertSame(ctx.isPointInPath(-0.01, 10), false, "ctx.isPointInPath(-0.01, 10)", "false"); +_assertSame(ctx.isPointInPath(20.01, 10), false, "ctx.isPointInPath(20.01, 10)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html new file mode 100644 index 00000000000..9219d50dd0d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.empty + + + + +

    2d.path.isPointInPath.empty

    +

    isPointInPath() works when there is no path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js new file mode 100644 index 00000000000..822838400b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.empty.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.empty +// Description:isPointInPath() works when there is no path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() works when there is no path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.isPointInPath(0, 0), false, "ctx.isPointInPath(0, 0)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html new file mode 100644 index 00000000000..6e6bd2ef36f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.nonfinite + + + + +

    2d.path.isPointInPath.nonfinite

    +

    isPointInPath() returns false for non-finite arguments

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js new file mode 100644 index 00000000000..91c2d36c5a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.nonfinite.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.nonfinite +// Description:isPointInPath() returns false for non-finite arguments +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() returns false for non-finite arguments"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(-100, -50, 200, 100); +_assertSame(ctx.isPointInPath(Infinity, 0), false, "ctx.isPointInPath(Infinity, 0)", "false"); +_assertSame(ctx.isPointInPath(-Infinity, 0), false, "ctx.isPointInPath(-Infinity, 0)", "false"); +_assertSame(ctx.isPointInPath(NaN, 0), false, "ctx.isPointInPath(NaN, 0)", "false"); +_assertSame(ctx.isPointInPath(0, Infinity), false, "ctx.isPointInPath(0, Infinity)", "false"); +_assertSame(ctx.isPointInPath(0, -Infinity), false, "ctx.isPointInPath(0, -Infinity)", "false"); +_assertSame(ctx.isPointInPath(0, NaN), false, "ctx.isPointInPath(0, NaN)", "false"); +_assertSame(ctx.isPointInPath(NaN, NaN), false, "ctx.isPointInPath(NaN, NaN)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html new file mode 100644 index 00000000000..c3175989b6d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.outside + + + + +

    2d.path.isPointInPath.outside

    +

    isPointInPath() works on paths outside the canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js new file mode 100644 index 00000000000..11b81d215ca --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.outside.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.outside +// Description:isPointInPath() works on paths outside the canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() works on paths outside the canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(0, -100, 20, 20); +ctx.rect(20, -10, 20, 20); +_assertSame(ctx.isPointInPath(10, -110), false, "ctx.isPointInPath(10, -110)", "false"); +_assertSame(ctx.isPointInPath(10, -90), true, "ctx.isPointInPath(10, -90)", "true"); +_assertSame(ctx.isPointInPath(10, -70), false, "ctx.isPointInPath(10, -70)", "false"); +_assertSame(ctx.isPointInPath(30, -20), false, "ctx.isPointInPath(30, -20)", "false"); +_assertSame(ctx.isPointInPath(30, 0), true, "ctx.isPointInPath(30, 0)", "true"); +_assertSame(ctx.isPointInPath(30, 20), false, "ctx.isPointInPath(30, 20)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html new file mode 100644 index 00000000000..ddf7b2793f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.subpath + + + + +

    2d.path.isPointInPath.subpath

    +

    isPointInPath() uses the current path, not just the subpath

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js new file mode 100644 index 00000000000..a453c805db8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.subpath.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.subpath +// Description:isPointInPath() uses the current path, not just the subpath +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() uses the current path, not just the subpath"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(0, 0, 20, 20); +ctx.beginPath(); +ctx.rect(20, 0, 20, 20); +ctx.closePath(); +ctx.rect(40, 0, 20, 20); +_assertSame(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false"); +_assertSame(ctx.isPointInPath(30, 10), true, "ctx.isPointInPath(30, 10)", "true"); +_assertSame(ctx.isPointInPath(50, 10), true, "ctx.isPointInPath(50, 10)", "true"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html new file mode 100644 index 00000000000..a1e87660db7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.transform.1 + + + + +

    2d.path.isPointInPath.transform.1

    +

    isPointInPath() handles transformations correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js new file mode 100644 index 00000000000..bebc6d63955 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.transform.1 +// Description:isPointInPath() handles transformations correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() handles transformations correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.translate(50, 0); +ctx.rect(0, 0, 20, 20); +_assertSame(ctx.isPointInPath(-40, 10), false, "ctx.isPointInPath(-40, 10)", "false"); +_assertSame(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false"); +_assertSame(ctx.isPointInPath(49, 10), false, "ctx.isPointInPath(49, 10)", "false"); +_assertSame(ctx.isPointInPath(51, 10), true, "ctx.isPointInPath(51, 10)", "true"); +_assertSame(ctx.isPointInPath(69, 10), true, "ctx.isPointInPath(69, 10)", "true"); +_assertSame(ctx.isPointInPath(71, 10), false, "ctx.isPointInPath(71, 10)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html new file mode 100644 index 00000000000..1995295fab2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.transform.2 + + + + +

    2d.path.isPointInPath.transform.2

    +

    isPointInPath() handles transformations correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js new file mode 100644 index 00000000000..a092cb9a673 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.transform.2 +// Description:isPointInPath() handles transformations correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() handles transformations correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.rect(50, 0, 20, 20); +ctx.translate(50, 0); +_assertSame(ctx.isPointInPath(-40, 10), false, "ctx.isPointInPath(-40, 10)", "false"); +_assertSame(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false"); +_assertSame(ctx.isPointInPath(49, 10), false, "ctx.isPointInPath(49, 10)", "false"); +_assertSame(ctx.isPointInPath(51, 10), true, "ctx.isPointInPath(51, 10)", "true"); +_assertSame(ctx.isPointInPath(69, 10), true, "ctx.isPointInPath(69, 10)", "true"); +_assertSame(ctx.isPointInPath(71, 10), false, "ctx.isPointInPath(71, 10)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html new file mode 100644 index 00000000000..b43e1042dd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.transform.3 + + + + +

    2d.path.isPointInPath.transform.3

    +

    isPointInPath() handles transformations correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js new file mode 100644 index 00000000000..cd244a68b2d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.3.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.transform.3 +// Description:isPointInPath() handles transformations correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() handles transformations correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.scale(-1, 1); +ctx.rect(-70, 0, 20, 20); +_assertSame(ctx.isPointInPath(-40, 10), false, "ctx.isPointInPath(-40, 10)", "false"); +_assertSame(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false"); +_assertSame(ctx.isPointInPath(49, 10), false, "ctx.isPointInPath(49, 10)", "false"); +_assertSame(ctx.isPointInPath(51, 10), true, "ctx.isPointInPath(51, 10)", "true"); +_assertSame(ctx.isPointInPath(69, 10), true, "ctx.isPointInPath(69, 10)", "true"); +_assertSame(ctx.isPointInPath(71, 10), false, "ctx.isPointInPath(71, 10)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html new file mode 100644 index 00000000000..e79562400b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.transform.4 + + + + +

    2d.path.isPointInPath.transform.4

    +

    isPointInPath() handles transformations correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js new file mode 100644 index 00000000000..6ec20136161 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.transform.4.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.transform.4 +// Description:isPointInPath() handles transformations correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() handles transformations correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.translate(50, 0); +ctx.rect(50, 0, 20, 20); +ctx.translate(0, 50); +_assertSame(ctx.isPointInPath(60, 10), false, "ctx.isPointInPath(60, 10)", "false"); +_assertSame(ctx.isPointInPath(110, 10), true, "ctx.isPointInPath(110, 10)", "true"); +_assertSame(ctx.isPointInPath(110, 60), false, "ctx.isPointInPath(110, 60)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html new file mode 100644 index 00000000000..f05a39d7ad6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.unclosed + + + + +

    2d.path.isPointInPath.unclosed

    +

    isPointInPath() works on unclosed subpaths

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js new file mode 100644 index 00000000000..316e791b2f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.unclosed.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.unclosed +// Description:isPointInPath() works on unclosed subpaths +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() works on unclosed subpaths"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(20, 0); +ctx.lineTo(20, 20); +ctx.lineTo(0, 20); +_assertSame(ctx.isPointInPath(10, 10), true, "ctx.isPointInPath(10, 10)", "true"); +_assertSame(ctx.isPointInPath(30, 10), false, "ctx.isPointInPath(30, 10)", "false"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html new file mode 100644 index 00000000000..8b0e07f101e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.path.isPointInPath.winding + + + + +

    2d.path.isPointInPath.winding

    +

    isPointInPath() uses the non-zero winding number rule

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js new file mode 100644 index 00000000000..fde0a17edd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.isPointInPath.winding.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.isPointInPath.winding +// Description:isPointInPath() uses the non-zero winding number rule +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("isPointInPath() uses the non-zero winding number rule"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Create a square ring, using opposite windings to make a hole in the centre +ctx.moveTo(0, 0); +ctx.lineTo(50, 0); +ctx.lineTo(50, 50); +ctx.lineTo(0, 50); +ctx.lineTo(0, 0); +ctx.lineTo(10, 10); +ctx.lineTo(10, 40); +ctx.lineTo(40, 40); +ctx.lineTo(40, 10); +ctx.lineTo(10, 10); +_assertSame(ctx.isPointInPath(5, 5), true, "ctx.isPointInPath(5, 5)", "true"); +_assertSame(ctx.isPointInPath(25, 5), true, "ctx.isPointInPath(25, 5)", "true"); +_assertSame(ctx.isPointInPath(45, 5), true, "ctx.isPointInPath(45, 5)", "true"); +_assertSame(ctx.isPointInPath(5, 25), true, "ctx.isPointInPath(5, 25)", "true"); +_assertSame(ctx.isPointInPath(25, 25), false, "ctx.isPointInPath(25, 25)", "false"); +_assertSame(ctx.isPointInPath(45, 25), true, "ctx.isPointInPath(45, 25)", "true"); +_assertSame(ctx.isPointInPath(5, 45), true, "ctx.isPointInPath(5, 45)", "true"); +_assertSame(ctx.isPointInPath(25, 45), true, "ctx.isPointInPath(25, 45)", "true"); +_assertSame(ctx.isPointInPath(45, 45), true, "ctx.isPointInPath(45, 45)", "true"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.basic.html new file mode 100644 index 00000000000..fe4ffec3fe8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.basic.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.lineTo.basic + + + + +

    2d.path.lineTo.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js new file mode 100644 index 00000000000..c070975b21d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.basic.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.lineTo.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.lineTo(100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html new file mode 100644 index 00000000000..9216819a54c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.lineTo.ensuresubpath.1 + + + + +

    2d.path.lineTo.ensuresubpath.1

    +

    If there is no subpath, the point is added and nothing is drawn

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js new file mode 100644 index 00000000000..701ffdd41d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.lineTo.ensuresubpath.1 +// Description:If there is no subpath, the point is added and nothing is drawn +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the point is added and nothing is drawn"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.lineTo(100, 50); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html new file mode 100644 index 00000000000..fb9b04d5a5d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.lineTo.ensuresubpath.2 + + + + +

    2d.path.lineTo.ensuresubpath.2

    +

    If there is no subpath, the point is added and used for subsequent drawing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js new file mode 100644 index 00000000000..699e44048cb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.ensuresubpath.2.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.lineTo.ensuresubpath.2 +// Description:If there is no subpath, the point is added and used for subsequent drawing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the point is added and used for subsequent drawing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.lineTo(0, 25); +ctx.lineTo(100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html new file mode 100644 index 00000000000..05768c0cd85 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.lineTo.nextpoint + + + + +

    2d.path.lineTo.nextpoint

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js new file mode 100644 index 00000000000..2262b8bc102 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nextpoint.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.lineTo.nextpoint +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.moveTo(-100, -100); +ctx.lineTo(0, 25); +ctx.lineTo(100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html new file mode 100644 index 00000000000..4ea20937954 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.path.lineTo.nonfinite.details + + + + +

    2d.path.lineTo.nonfinite.details

    +

    lineTo() with Infinity/NaN for first arg still converts the second arg

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js new file mode 100644 index 00000000000..13d615306ce --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.details.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.lineTo.nonfinite.details +// Description:lineTo() with Infinity/NaN for first arg still converts the second arg +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineTo() with Infinity/NaN for first arg still converts the second arg"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +for (var arg1 of [Infinity, -Infinity, NaN]) { + var converted = false; + ctx.lineTo(arg1, { valueOf: function() { converted = true; return 0; } }); + _assert(converted, "converted"); +} + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html new file mode 100644 index 00000000000..8dd773e8207 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.path.lineTo.nonfinite + + + + +

    2d.path.lineTo.nonfinite

    +

    lineTo() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js new file mode 100644 index 00000000000..4f97b9b2da2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.lineTo.nonfinite.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.lineTo.nonfinite +// Description:lineTo() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("lineTo() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.lineTo(Infinity, 50); +ctx.lineTo(-Infinity, 50); +ctx.lineTo(NaN, 50); +ctx.lineTo(0, Infinity); +ctx.lineTo(0, -Infinity); +ctx.lineTo(0, NaN); +ctx.lineTo(Infinity, Infinity); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.basic.html new file mode 100644 index 00000000000..36e14ac114b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.basic.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.moveTo.basic + + + + +

    2d.path.moveTo.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js new file mode 100644 index 00000000000..d4b928a66c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.basic.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.moveTo.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.rect(0, 0, 10, 50); +ctx.moveTo(100, 0); +ctx.lineTo(10, 0); +ctx.lineTo(10, 50); +ctx.lineTo(100, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 90,25, 0,255,0,255, "90,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html new file mode 100644 index 00000000000..41f45143869 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.multiple.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.moveTo.multiple + + + + +

    2d.path.moveTo.multiple

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js new file mode 100644 index 00000000000..7d64884961a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.multiple.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.moveTo.multiple +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.moveTo(0, 25); +ctx.moveTo(100, 25); +ctx.moveTo(0, 25); +ctx.lineTo(100, 25); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html new file mode 100644 index 00000000000..390a26154a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.moveTo.newsubpath + + + + +

    2d.path.moveTo.newsubpath

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js new file mode 100644 index 00000000000..3dac6081120 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.newsubpath.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.moveTo.newsubpath +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.moveTo(0, 0); +ctx.moveTo(100, 0); +ctx.moveTo(100, 50); +ctx.moveTo(0, 50); +ctx.fillStyle = '#f00'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html new file mode 100644 index 00000000000..100259a4a40 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.moveTo.nonfinite + + + + +

    2d.path.moveTo.nonfinite

    +

    moveTo() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js new file mode 100644 index 00000000000..84d89720767 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.moveTo.nonfinite.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.moveTo.nonfinite +// Description:moveTo() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("moveTo() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.moveTo(Infinity, 50); +ctx.moveTo(-Infinity, 50); +ctx.moveTo(NaN, 50); +ctx.moveTo(0, Infinity); +ctx.moveTo(0, -Infinity); +ctx.moveTo(0, NaN); +ctx.moveTo(Infinity, Infinity); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html new file mode 100644 index 00000000000..957b890137e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.quadraticCurveTo.basic + + + + +

    2d.path.quadraticCurveTo.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js new file mode 100644 index 00000000000..d074dfa57c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.basic.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.quadraticCurveTo.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.moveTo(0, 25); +ctx.quadraticCurveTo(100, 25, 100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html new file mode 100644 index 00000000000..8f3c10f90c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.quadraticCurveTo.ensuresubpath.1 + + + + +

    2d.path.quadraticCurveTo.ensuresubpath.1

    +

    If there is no subpath, the first control point is added (and nothing is drawn up to it)

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js new file mode 100644 index 00000000000..67b0bb22289 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.quadraticCurveTo.ensuresubpath.1 +// Description:If there is no subpath, the first control point is added (and nothing is drawn up to it) +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the first control point is added (and nothing is drawn up to it)"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.quadraticCurveTo(100, 50, 200, 50); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 95,45, 0,255,0,255, "95,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html new file mode 100644 index 00000000000..0a61ecd83c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.path.quadraticCurveTo.ensuresubpath.2 + + + + +

    2d.path.quadraticCurveTo.ensuresubpath.2

    +

    If there is no subpath, the first control point is added

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js new file mode 100644 index 00000000000..a8b87cccc84 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.quadraticCurveTo.ensuresubpath.2 +// Description:If there is no subpath, the first control point is added +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("If there is no subpath, the first control point is added"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.beginPath(); +ctx.quadraticCurveTo(0, 25, 100, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 5,45, 0,255,0,255, "5,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html new file mode 100644 index 00000000000..9806ca08c6d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.html @@ -0,0 +1,54 @@ + + +OffscreenCanvas test: 2d.path.quadraticCurveTo.nonfinite + + + + +

    2d.path.quadraticCurveTo.nonfinite

    +

    quadraticCurveTo() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js new file mode 100644 index 00000000000..48410532555 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.nonfinite.worker.js @@ -0,0 +1,50 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.quadraticCurveTo.nonfinite +// Description:quadraticCurveTo() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("quadraticCurveTo() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.quadraticCurveTo(Infinity, 50, 0, 50); +ctx.quadraticCurveTo(-Infinity, 50, 0, 50); +ctx.quadraticCurveTo(NaN, 50, 0, 50); +ctx.quadraticCurveTo(0, Infinity, 0, 50); +ctx.quadraticCurveTo(0, -Infinity, 0, 50); +ctx.quadraticCurveTo(0, NaN, 0, 50); +ctx.quadraticCurveTo(0, 50, Infinity, 50); +ctx.quadraticCurveTo(0, 50, -Infinity, 50); +ctx.quadraticCurveTo(0, 50, NaN, 50); +ctx.quadraticCurveTo(0, 50, 0, Infinity); +ctx.quadraticCurveTo(0, 50, 0, -Infinity); +ctx.quadraticCurveTo(0, 50, 0, NaN); +ctx.quadraticCurveTo(Infinity, Infinity, 0, 50); +ctx.quadraticCurveTo(Infinity, Infinity, Infinity, 50); +ctx.quadraticCurveTo(Infinity, Infinity, Infinity, Infinity); +ctx.quadraticCurveTo(Infinity, Infinity, 0, Infinity); +ctx.quadraticCurveTo(Infinity, 50, Infinity, 50); +ctx.quadraticCurveTo(Infinity, 50, Infinity, Infinity); +ctx.quadraticCurveTo(Infinity, 50, 0, Infinity); +ctx.quadraticCurveTo(0, Infinity, Infinity, 50); +ctx.quadraticCurveTo(0, Infinity, Infinity, Infinity); +ctx.quadraticCurveTo(0, Infinity, 0, Infinity); +ctx.quadraticCurveTo(0, 50, Infinity, Infinity); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html new file mode 100644 index 00000000000..9d1ec4fd4bc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.quadraticCurveTo.scaled + + + + +

    2d.path.quadraticCurveTo.scaled

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js new file mode 100644 index 00000000000..2e4106ed9c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.scaled.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.quadraticCurveTo.scaled +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(1000, 1000); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 0.055; +ctx.beginPath(); +ctx.moveTo(-1, 1.05); +ctx.quadraticCurveTo(0, -1, 1.2, 1.05); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html new file mode 100644 index 00000000000..40e454a7e41 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.quadraticCurveTo.shape + + + + +

    2d.path.quadraticCurveTo.shape

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js new file mode 100644 index 00000000000..e8710f9adb0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.quadraticCurveTo.shape.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.quadraticCurveTo.shape +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 55; +ctx.beginPath(); +ctx.moveTo(-1000, 1050); +ctx.quadraticCurveTo(0, -1000, 1200, 1050); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.basic.html new file mode 100644 index 00000000000..059668ab9db --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.basic.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.path.rect.basic + + + + +

    2d.path.rect.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js new file mode 100644 index 00000000000..abcacad5bfb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.basic.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.rect(0, 0, 100, 50); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.closed.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.closed.html new file mode 100644 index 00000000000..943d7c91938 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.closed.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.closed + + + + +

    2d.path.rect.closed

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js new file mode 100644 index 00000000000..9a2b7e5623c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.closed.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.closed +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 200; +ctx.lineJoin = 'miter'; +ctx.rect(100, 50, 100, 100); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.1.html new file mode 100644 index 00000000000..b44c6a84a31 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.end.1 + + + + +

    2d.path.rect.end.1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js new file mode 100644 index 00000000000..72b2d8aff1c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.end.1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 100; +ctx.rect(200, 100, 400, 1000); +ctx.lineTo(-2000, -1000); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.2.html new file mode 100644 index 00000000000..a48b27d61b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.2.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.rect.end.2 + + + + +

    2d.path.rect.end.2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js new file mode 100644 index 00000000000..a9718745a39 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.end.2.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.end.2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 450; +ctx.lineCap = 'round'; +ctx.lineJoin = 'bevel'; +ctx.rect(150, 150, 2000, 2000); +ctx.lineTo(160, 160); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,1, 0,255,0,255, "98,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 1,48, 0,255,0,255, "1,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.negative.html new file mode 100644 index 00000000000..55edbabd31e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.negative.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.rect.negative + + + + +

    2d.path.rect.negative

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js new file mode 100644 index 00000000000..4ee0b730fd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.negative.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.negative +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.fillStyle = '#0f0'; +ctx.rect(0, 0, 50, 25); +ctx.rect(100, 0, -50, 25); +ctx.rect(0, 50, 50, -25); +ctx.rect(100, 50, -50, -25); +ctx.fill(); +_assertPixel(offscreenCanvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html new file mode 100644 index 00000000000..982e8b9c189 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.newsubpath.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.rect.newsubpath + + + + +

    2d.path.rect.newsubpath

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js new file mode 100644 index 00000000000..1bacdaad0c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.newsubpath.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.newsubpath +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.moveTo(-100, 25); +ctx.lineTo(-50, 25); +ctx.rect(200, 25, 1, 1); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html new file mode 100644 index 00000000000..d3c62e5e692 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.nonfinite.html @@ -0,0 +1,54 @@ + + +OffscreenCanvas test: 2d.path.rect.nonfinite + + + + +

    2d.path.rect.nonfinite

    +

    rect() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js new file mode 100644 index 00000000000..35582fd664b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.nonfinite.worker.js @@ -0,0 +1,50 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.nonfinite +// Description:rect() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rect() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.moveTo(0, 0); +ctx.lineTo(100, 0); +ctx.rect(Infinity, 50, 1, 1); +ctx.rect(-Infinity, 50, 1, 1); +ctx.rect(NaN, 50, 1, 1); +ctx.rect(0, Infinity, 1, 1); +ctx.rect(0, -Infinity, 1, 1); +ctx.rect(0, NaN, 1, 1); +ctx.rect(0, 50, Infinity, 1); +ctx.rect(0, 50, -Infinity, 1); +ctx.rect(0, 50, NaN, 1); +ctx.rect(0, 50, 1, Infinity); +ctx.rect(0, 50, 1, -Infinity); +ctx.rect(0, 50, 1, NaN); +ctx.rect(Infinity, Infinity, 1, 1); +ctx.rect(Infinity, Infinity, Infinity, 1); +ctx.rect(Infinity, Infinity, Infinity, Infinity); +ctx.rect(Infinity, Infinity, 1, Infinity); +ctx.rect(Infinity, 50, Infinity, 1); +ctx.rect(Infinity, 50, Infinity, Infinity); +ctx.rect(Infinity, 50, 1, Infinity); +ctx.rect(0, Infinity, Infinity, 1); +ctx.rect(0, Infinity, Infinity, Infinity); +ctx.rect(0, Infinity, 1, Infinity); +ctx.rect(0, 50, Infinity, Infinity); +ctx.lineTo(100, 50); +ctx.lineTo(0, 50); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 90,45, 0,255,0,255, "90,45", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html new file mode 100644 index 00000000000..7ca1af59d50 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.selfintersect.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.selfintersect + + + + +

    2d.path.rect.selfintersect

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js new file mode 100644 index 00000000000..0c261b643d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.selfintersect.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.selfintersect +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 90; +ctx.beginPath(); +ctx.rect(45, 20, 10, 10); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.winding.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.winding.html new file mode 100644 index 00000000000..4532ddb9edf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.winding.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.rect.winding + + + + +

    2d.path.rect.winding

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js new file mode 100644 index 00000000000..72f3e3a019e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.winding.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.winding +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.fillStyle = '#f00'; +ctx.rect(0, 0, 50, 50); +ctx.rect(100, 50, -50, -50); +ctx.rect(0, 25, 100, -25); +ctx.rect(100, 25, -100, 25); +ctx.fill(); +_assertPixel(offscreenCanvas, 25,12, 0,255,0,255, "25,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,12, 0,255,0,255, "75,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 25,37, 0,255,0,255, "25,37", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,37, 0,255,0,255, "75,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.1.html new file mode 100644 index 00000000000..2873a528958 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.zero.1 + + + + +

    2d.path.rect.zero.1

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js new file mode 100644 index 00000000000..7ad6404b1ca --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.zero.1 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.rect(0, 50, 100, 0); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.2.html new file mode 100644 index 00000000000..0bdead070d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.zero.2 + + + + +

    2d.path.rect.zero.2

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js new file mode 100644 index 00000000000..cd43701ab49 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.zero.2 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.rect(50, -100, 0, 250); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.3.html new file mode 100644 index 00000000000..02a84e3e840 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.3.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.zero.3 + + + + +

    2d.path.rect.zero.3

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js new file mode 100644 index 00000000000..19176838d52 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.3.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.zero.3 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.beginPath(); +ctx.rect(50, 25, 0, 0); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.4.html new file mode 100644 index 00000000000..7c80780588f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.4.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.zero.4 + + + + +

    2d.path.rect.zero.4

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js new file mode 100644 index 00000000000..7c91236c748 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.4.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.zero.4 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 50; +ctx.rect(100, 25, 0, 0); +ctx.lineTo(0, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.5.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.5.html new file mode 100644 index 00000000000..3fc634577a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.5.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.rect.zero.5 + + + + +

    2d.path.rect.zero.5

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js new file mode 100644 index 00000000000..1e839016f26 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.5.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.zero.5 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.moveTo(0, 0); +ctx.rect(100, 25, 0, 0); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.6.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.6.html new file mode 100644 index 00000000000..450ef3c3668 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.6.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.rect.zero.6 + + + + +

    2d.path.rect.zero.6

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js new file mode 100644 index 00000000000..44bda7ee71f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.rect.zero.6.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.rect.zero.6 +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineJoin = 'miter'; +ctx.miterLimit = 1.5; +ctx.lineWidth = 200; +ctx.beginPath(); +ctx.rect(100, 25, 1000, 0); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.empty.html new file mode 100644 index 00000000000..14e489abf53 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.empty.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.stroke.empty + + + + +

    2d.path.stroke.empty

    +

    Empty subpaths are not stroked

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js new file mode 100644 index 00000000000..d6db2a01b6d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.empty.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.empty +// Description:Empty subpaths are not stroked +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Empty subpaths are not stroked"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.moveTo(40, 25); +ctx.moveTo(60, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.overlap.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.overlap.html new file mode 100644 index 00000000000..c7277b91cad --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.overlap.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.stroke.overlap + + + + +

    2d.path.stroke.overlap

    +

    Stroked subpaths are combined before being drawn

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js new file mode 100644 index 00000000000..516084791c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.overlap.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.overlap +// Description:Stroked subpaths are combined before being drawn +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Stroked subpaths are combined before being drawn"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#000'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)'; +ctx.lineWidth = 50; +ctx.moveTo(0, 20); +ctx.lineTo(100, 20); +ctx.moveTo(0, 30); +ctx.lineTo(100, 30); +ctx.stroke(); +_assertPixelApprox(offscreenCanvas, 50,25, 0,127,0,255, "50,25", "0,127,0,255", 1); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html new file mode 100644 index 00000000000..065314e8205 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.path.stroke.prune.arc + + + + +

    2d.path.stroke.prune.arc

    +

    Zero-length line segments from arcTo and arc are removed before stroking

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js new file mode 100644 index 00000000000..eba5233522f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.arc.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.arc +// Description:Zero-length line segments from arcTo and arc are removed before stroking +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Zero-length line segments from arcTo and arc are removed before stroking"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.arcTo(50, 25, 150, 25, 10); +ctx.stroke(); +ctx.beginPath(); +ctx.moveTo(60, 25); +ctx.arc(50, 25, 10, 0, 0, false); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html new file mode 100644 index 00000000000..7c8ffe127d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.path.stroke.prune.closed + + + + +

    2d.path.stroke.prune.closed

    +

    Zero-length line segments from closed paths are removed before stroking

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js new file mode 100644 index 00000000000..8b2e920e7f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.closed.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.closed +// Description:Zero-length line segments from closed paths are removed before stroking +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Zero-length line segments from closed paths are removed before stroking"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.lineTo(50, 25); +ctx.closePath(); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html new file mode 100644 index 00000000000..ef0919634b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.path.stroke.prune.corner + + + + +

    2d.path.stroke.prune.corner

    +

    Zero-length line segments are removed before stroking with miters

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js new file mode 100644 index 00000000000..e0b0ad5567e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.corner.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.corner +// Description:Zero-length line segments are removed before stroking with miters +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Zero-length line segments are removed before stroking with miters"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 400; +ctx.lineJoin = 'miter'; +ctx.miterLimit = 1.4; +ctx.beginPath(); +ctx.moveTo(-1000, 200); +ctx.lineTo(-100, 200); +ctx.lineTo(-100, 200); +ctx.lineTo(-100, 200); +ctx.lineTo(-100, 1000); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html new file mode 100644 index 00000000000..2f0dd1e658b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.path.stroke.prune.curve + + + + +

    2d.path.stroke.prune.curve

    +

    Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js new file mode 100644 index 00000000000..54d6955c353 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.curve.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.curve +// Description:Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.quadraticCurveTo(50, 25, 50, 25); +ctx.stroke(); +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html new file mode 100644 index 00000000000..2a659eabe0a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.line.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.stroke.prune.line + + + + +

    2d.path.stroke.prune.line

    +

    Zero-length line segments from lineTo are removed before stroking

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js new file mode 100644 index 00000000000..8229f3417a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.line.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.line +// Description:Zero-length line segments from lineTo are removed before stroking +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Zero-length line segments from lineTo are removed before stroking"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.moveTo(50, 25); +ctx.lineTo(50, 25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html new file mode 100644 index 00000000000..b4b4aeb0b65 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.path.stroke.prune.rect + + + + +

    2d.path.stroke.prune.rect

    +

    Zero-length line segments from rect and strokeRect are removed before stroking

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js new file mode 100644 index 00000000000..e3b2ff8372f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.prune.rect.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.rect +// Description:Zero-length line segments from rect and strokeRect are removed before stroking +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Zero-length line segments from rect and strokeRect are removed before stroking"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 100; +ctx.lineCap = 'round'; +ctx.lineJoin = 'round'; +ctx.beginPath(); +ctx.rect(50, 25, 0, 0); +ctx.stroke(); +ctx.strokeRect(50, 25, 0, 0); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale1.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale1.html new file mode 100644 index 00000000000..61e9a7ea821 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale1.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.path.stroke.scale1 + + + + +

    2d.path.stroke.scale1

    +

    Stroke line widths are scaled by the current transformation matrix

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js new file mode 100644 index 00000000000..e5fc8bcc923 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale1.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.scale1 +// Description:Stroke line widths are scaled by the current transformation matrix +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Stroke line widths are scaled by the current transformation matrix"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(25, 12.5, 50, 25); +ctx.save(); +ctx.scale(50, 25); +ctx.strokeStyle = '#0f0'; +ctx.stroke(); +ctx.restore(); +ctx.beginPath(); +ctx.rect(-25, -12.5, 150, 75); +ctx.save(); +ctx.scale(50, 25); +ctx.strokeStyle = '#f00'; +ctx.stroke(); +ctx.restore(); +_assertPixel(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale2.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale2.html new file mode 100644 index 00000000000..0bc4c26d040 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale2.html @@ -0,0 +1,50 @@ + + +OffscreenCanvas test: 2d.path.stroke.scale2 + + + + +

    2d.path.stroke.scale2

    +

    Stroke line widths are scaled by the current transformation matrix

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js new file mode 100644 index 00000000000..b532fb7a3d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.scale2.worker.js @@ -0,0 +1,46 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.scale2 +// Description:Stroke line widths are scaled by the current transformation matrix +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Stroke line widths are scaled by the current transformation matrix"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.beginPath(); +ctx.rect(25, 12.5, 50, 25); +ctx.save(); +ctx.rotate(Math.PI/2); +ctx.scale(25, 50); +ctx.strokeStyle = '#0f0'; +ctx.stroke(); +ctx.restore(); +ctx.beginPath(); +ctx.rect(-25, -12.5, 150, 75); +ctx.save(); +ctx.rotate(Math.PI/2); +ctx.scale(25, 50); +ctx.strokeStyle = '#f00'; +ctx.stroke(); +ctx.restore(); +_assertPixel(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.skew.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.skew.html new file mode 100644 index 00000000000..6220e7c54fc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.skew.html @@ -0,0 +1,63 @@ + + +OffscreenCanvas test: 2d.path.stroke.skew + + + + +

    2d.path.stroke.skew

    +

    Strokes lines are skewed by the current transformation matrix

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js new file mode 100644 index 00000000000..125c70c8edd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.skew.worker.js @@ -0,0 +1,59 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.skew +// Description:Strokes lines are skewed by the current transformation matrix +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Strokes lines are skewed by the current transformation matrix"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.beginPath(); +ctx.moveTo(49, -50); +ctx.lineTo(201, -50); +ctx.rotate(Math.PI/4); +ctx.scale(1, 283); +ctx.strokeStyle = '#0f0'; +ctx.stroke(); +ctx.restore(); +ctx.save(); +ctx.beginPath(); +ctx.translate(-150, 0); +ctx.moveTo(49, -50); +ctx.lineTo(199, -50); +ctx.rotate(Math.PI/4); +ctx.scale(1, 142); +ctx.strokeStyle = '#f00'; +ctx.stroke(); +ctx.restore(); +ctx.save(); +ctx.beginPath(); +ctx.translate(-150, 0); +ctx.moveTo(49, -50); +ctx.lineTo(199, -50); +ctx.rotate(Math.PI/4); +ctx.scale(1, 142); +ctx.strokeStyle = '#f00'; +ctx.stroke(); +ctx.restore(); +_assertPixel(offscreenCanvas, 0,0, 0,255,0,255, "0,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,0, 0,255,0,255, "50,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,0, 0,255,0,255, "99,0", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,25, 0,255,0,255, "0,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,25, 0,255,0,255, "99,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 0,49, 0,255,0,255, "0,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,49, 0,255,0,255, "50,49", "0,255,0,255"); +_assertPixel(offscreenCanvas, 99,49, 0,255,0,255, "99,49", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html new file mode 100644 index 00000000000..fc2dff941ba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.unaffected.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.path.stroke.unaffected + + + + +

    2d.path.stroke.unaffected

    +

    Stroking does not start a new path or subpath

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js new file mode 100644 index 00000000000..6c3c16559b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.unaffected.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.unaffected +// Description:Stroking does not start a new path or subpath +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Stroking does not start a new path or subpath"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.lineWidth = 50; +ctx.moveTo(-100, 25); +ctx.lineTo(-100, -100); +ctx.lineTo(200, -100); +ctx.lineTo(200, 25); +ctx.strokeStyle = '#f00'; +ctx.stroke(); +ctx.closePath(); +ctx.strokeStyle = '#0f0'; +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.union.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.union.html new file mode 100644 index 00000000000..76884ca5467 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.union.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.path.stroke.union + + + + +

    2d.path.stroke.union

    +

    Strokes in opposite directions are unioned, not subtracted

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js new file mode 100644 index 00000000000..0594b28cbf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.stroke.union.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.union +// Description:Strokes in opposite directions are unioned, not subtracted +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Strokes in opposite directions are unioned, not subtracted"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#0f0'; +ctx.lineWidth = 40; +ctx.moveTo(0, 10); +ctx.lineTo(100, 10); +ctx.moveTo(100, 40); +ctx.lineTo(0, 40); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.basic.html new file mode 100644 index 00000000000..e7cb8ece4f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.basic.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.path.transformation.basic + + + + +

    2d.path.transformation.basic

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js new file mode 100644 index 00000000000..ac9bc1bb16a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.basic.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.transformation.basic +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(-100, 0); +ctx.rect(100, 0, 100, 50); +ctx.translate(0, -100); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.changing.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.changing.html new file mode 100644 index 00000000000..aba546b867e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.changing.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.path.transformation.changing + + + + +

    2d.path.transformation.changing

    +

    Transformations are applied while building paths, not when drawing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js new file mode 100644 index 00000000000..2f8418dbedf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.changing.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.transformation.changing +// Description:Transformations are applied while building paths, not when drawing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Transformations are applied while building paths, not when drawing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.moveTo(0, 0); +ctx.translate(100, 0); +ctx.lineTo(0, 0); +ctx.translate(0, 50); +ctx.lineTo(0, 0); +ctx.translate(-100, 0); +ctx.lineTo(0, 0); +ctx.translate(1000, 1000); +ctx.rotate(Math.PI/2); +ctx.scale(0.1, 0.1); +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.multiple.html b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.multiple.html new file mode 100644 index 00000000000..7f38daed8a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.multiple.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.path.transformation.multiple + + + + +

    2d.path.transformation.multiple

    +

    Transformations are applied while building paths, not when drawing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js new file mode 100644 index 00000000000..62bde63e915 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/path-objects/2d.path.transformation.multiple.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.transformation.multiple +// Description:Transformations are applied while building paths, not when drawing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Transformations are applied while building paths, not when drawing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.translate(-100, 0); +ctx.rect(0, 0, 100, 50); +ctx.fill(); +ctx.translate(100, 0); +ctx.fill(); +ctx.beginPath(); +ctx.strokeStyle = '#f00'; +ctx.lineWidth = 50; +ctx.translate(0, -50); +ctx.moveTo(0, 25); +ctx.lineTo(100, 25); +ctx.stroke(); +ctx.translate(0, 50); +ctx.stroke(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html new file mode 100644 index 00000000000..8152cfc9732 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.imageData.create1.basic + + + + +

    2d.imageData.create1.basic

    +

    createImageData(imgdata) exists and returns something

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js new file mode 100644 index 00000000000..250a161f322 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.basic.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create1.basic +// Description:createImageData(imgdata) exists and returns something +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(imgdata) exists and returns something"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertDifferent(ctx.createImageData(ctx.createImageData(1, 1)), null, "ctx.createImageData(ctx.createImageData(1, 1))", "null"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html new file mode 100644 index 00000000000..a385d72e397 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.imageData.create1.initial + + + + +

    2d.imageData.create1.initial

    +

    createImageData(imgdata) returns transparent black data of the right size

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js new file mode 100644 index 00000000000..da0543c4495 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.initial.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create1.initial +// Description:createImageData(imgdata) returns transparent black data of the right size +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(imgdata) returns transparent black data of the right size"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +var imgdata1 = ctx.getImageData(0, 0, 10, 20); +var imgdata2 = ctx.createImageData(imgdata1); +_assertSame(imgdata2.data.length, imgdata1.data.length, "imgdata2.data.length", "imgdata1.data.length"); +_assertSame(imgdata2.width, imgdata1.width, "imgdata2.width", "imgdata1.width"); +_assertSame(imgdata2.height, imgdata1.height, "imgdata2.height", "imgdata1.height"); +var isTransparentBlack = true; +for (var i = 0; i < imgdata2.data.length; ++i) + if (imgdata2.data[i] !== 0) + isTransparentBlack = false; +_assert(isTransparentBlack, "isTransparentBlack"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html new file mode 100644 index 00000000000..bbcadad31c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.imageData.create1.zero + + + + +

    2d.imageData.create1.zero

    +

    createImageData(null) throws TypeError

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js new file mode 100644 index 00000000000..f3bed8488e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create1.zero.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create1.zero +// Description:createImageData(null) throws TypeError +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(null) throws TypeError"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createImageData(null); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html new file mode 100644 index 00000000000..13cb5de4ccd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.imageData.create2.basic + + + + +

    2d.imageData.create2.basic

    +

    createImageData(sw, sh) exists and returns something

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js new file mode 100644 index 00000000000..82190d6cb0b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.basic.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.basic +// Description:createImageData(sw, sh) exists and returns something +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(sw, sh) exists and returns something"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertDifferent(ctx.createImageData(1, 1), null, "ctx.createImageData(1, 1)", "null"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html new file mode 100644 index 00000000000..e7ced9d2166 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.imageData.create2.initial + + + + +

    2d.imageData.create2.initial

    +

    createImageData(sw, sh) returns transparent black data of the right size

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js new file mode 100644 index 00000000000..d3fea24d586 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.initial.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.initial +// Description:createImageData(sw, sh) returns transparent black data of the right size +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(sw, sh) returns transparent black data of the right size"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.createImageData(10, 20); +_assertSame(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4"); +_assert(imgdata.width < imgdata.height, "imgdata.width < imgdata.height"); +_assert(imgdata.width > 0, "imgdata.width > 0"); +var isTransparentBlack = true; +for (var i = 0; i < imgdata.data.length; ++i) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; +_assert(isTransparentBlack, "isTransparentBlack"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html new file mode 100644 index 00000000000..25d49052bb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.imageData.create2.large + + + + +

    2d.imageData.create2.large

    +

    createImageData(sw, sh) works for sizes much larger than the canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js new file mode 100644 index 00000000000..d8ae14cf4b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.large.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.large +// Description:createImageData(sw, sh) works for sizes much larger than the canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(sw, sh) works for sizes much larger than the canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.createImageData(1000, 2000); +_assertSame(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4"); +_assert(imgdata.width < imgdata.height, "imgdata.width < imgdata.height"); +_assert(imgdata.width > 0, "imgdata.width > 0"); +var isTransparentBlack = true; +for (var i = 0; i < imgdata.data.length; i += 7813) // check ~1024 points (assuming normal scaling) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; +_assert(isTransparentBlack, "isTransparentBlack"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html new file mode 100644 index 00000000000..d5c42efea7b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.imageData.create2.negative + + + + +

    2d.imageData.create2.negative

    +

    createImageData(sw, sh) takes the absolute magnitude of the size arguments

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js new file mode 100644 index 00000000000..11f1641ab59 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.negative.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.negative +// Description:createImageData(sw, sh) takes the absolute magnitude of the size arguments +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(sw, sh) takes the absolute magnitude of the size arguments"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata1 = ctx.createImageData(10, 20); +var imgdata2 = ctx.createImageData(-10, 20); +var imgdata3 = ctx.createImageData(10, -20); +var imgdata4 = ctx.createImageData(-10, -20); +_assertSame(imgdata1.data.length, imgdata2.data.length, "imgdata1.data.length", "imgdata2.data.length"); +_assertSame(imgdata2.data.length, imgdata3.data.length, "imgdata2.data.length", "imgdata3.data.length"); +_assertSame(imgdata3.data.length, imgdata4.data.length, "imgdata3.data.length", "imgdata4.data.length"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html new file mode 100644 index 00000000000..ae36fc72aa4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.imageData.create2.nonfinite + + + + +

    2d.imageData.create2.nonfinite

    +

    createImageData() throws TypeError if arguments are not finite

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js new file mode 100644 index 00000000000..0609d05951d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.nonfinite.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.nonfinite +// Description:createImageData() throws TypeError if arguments are not finite +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData() throws TypeError if arguments are not finite"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.createImageData(Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.createImageData(-Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.createImageData(NaN, 10); }); +assert_throws(new TypeError(), function() { ctx.createImageData(10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.createImageData(10, -Infinity); }); +assert_throws(new TypeError(), function() { ctx.createImageData(10, NaN); }); +assert_throws(new TypeError(), function() { ctx.createImageData(Infinity, Infinity); }); +var posinfobj = { valueOf: function() { return Infinity; } }, + neginfobj = { valueOf: function() { return -Infinity; } }, + nanobj = { valueOf: function() { return -Infinity; } }; +assert_throws(new TypeError(), function() { ctx.createImageData(posinfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.createImageData(neginfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.createImageData(nanobj, 10); }); +assert_throws(new TypeError(), function() { ctx.createImageData(10, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.createImageData(10, neginfobj); }); +assert_throws(new TypeError(), function() { ctx.createImageData(10, nanobj); }); +assert_throws(new TypeError(), function() { ctx.createImageData(posinfobj, posinfobj); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html new file mode 100644 index 00000000000..2d59eff38b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.imageData.create2.round + + + + +

    2d.imageData.create2.round

    +

    createImageData(w, h) is rounded the same as getImageData(0, 0, w, h)

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js new file mode 100644 index 00000000000..b0c4a03ccb6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.round.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.round +// Description:createImageData(w, h) is rounded the same as getImageData(0, 0, w, h) +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(w, h) is rounded the same as getImageData(0, 0, w, h)"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata1 = ctx.createImageData(10.01, 10.99); +var imgdata2 = ctx.getImageData(0, 0, 10.01, 10.99); +_assertSame(imgdata1.width, imgdata2.width, "imgdata1.width", "imgdata2.width"); +_assertSame(imgdata1.height, imgdata2.height, "imgdata1.height", "imgdata2.height"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.html new file mode 100644 index 00000000000..5f5f0eda6a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.imageData.create2.tiny + + + + +

    2d.imageData.create2.tiny

    +

    createImageData(sw, sh) works for sizes smaller than one pixel

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.worker.js new file mode 100644 index 00000000000..c6c74d7abac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.tiny.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.tiny +// Description:createImageData(sw, sh) works for sizes smaller than one pixel +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(sw, sh) works for sizes smaller than one pixel"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.createImageData(0.0001, 0.0001); +_assertSame(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4"); +_assertSame(imgdata.width, 1, "imgdata.width", "1"); +_assertSame(imgdata.height, 1, "imgdata.height", "1"); +var isTransparentBlack = true; +for (var i = 0; i < imgdata.data.length; ++i) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; +_assert(isTransparentBlack, "isTransparentBlack"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html new file mode 100644 index 00000000000..8c88cc9b6fb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.imageData.create2.zero + + + + +

    2d.imageData.create2.zero

    +

    createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js new file mode 100644 index 00000000000..cf54b3c6efb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.create2.zero.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.create2.zero +// Description:createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("INDEX_SIZE_ERR", function() { ctx.createImageData(10, 0); }); +assert_throws("INDEX_SIZE_ERR", function() { ctx.createImageData(0, 10); }); +assert_throws("INDEX_SIZE_ERR", function() { ctx.createImageData(0, 0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html new file mode 100644 index 00000000000..cfb5e3c2ba5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.imageData.get.basic + + + + +

    2d.imageData.get.basic

    +

    getImageData() exists and returns something

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js new file mode 100644 index 00000000000..6824945d9f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.basic.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.basic +// Description:getImageData() exists and returns something +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() exists and returns something"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertDifferent(ctx.getImageData(0, 0, 100, 50), null, "ctx.getImageData(0, 0, 100, 50)", "null"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html new file mode 100644 index 00000000000..c5e189b7bf5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.imageData.get.clamp + + + + +

    2d.imageData.get.clamp

    +

    getImageData() clamps colours to the range [0, 255]

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js new file mode 100644 index 00000000000..97a2a147776 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.clamp.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.clamp +// Description:getImageData() clamps colours to the range [0, 255] +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() clamps colours to the range [0, 255]"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = 'rgb(-100, -200, -300)'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = 'rgb(256, 300, 400)'; +ctx.fillRect(20, 10, 60, 10); +var imgdata1 = ctx.getImageData(10, 5, 1, 1); +_assertSame(imgdata1.data[0], 0, "imgdata1.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata1.data[1], 0, "imgdata1.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata1.data[2], 0, "imgdata1.data[\""+(2)+"\"]", "0"); +var imgdata2 = ctx.getImageData(30, 15, 1, 1); +_assertSame(imgdata2.data[0], 255, "imgdata2.data[\""+(0)+"\"]", "255"); +_assertSame(imgdata2.data[1], 255, "imgdata2.data[\""+(1)+"\"]", "255"); +_assertSame(imgdata2.data[2], 255, "imgdata2.data[\""+(2)+"\"]", "255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html new file mode 100644 index 00000000000..c9516d7a735 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.imageData.get.length + + + + +

    2d.imageData.get.length

    +

    getImageData() returns a correctly-sized Uint8ClampedArray

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js new file mode 100644 index 00000000000..f8a08e28642 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.length.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.length +// Description:getImageData() returns a correctly-sized Uint8ClampedArray +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns a correctly-sized Uint8ClampedArray"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +_assertSame(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html new file mode 100644 index 00000000000..ab90a831f9c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.html @@ -0,0 +1,72 @@ + + +OffscreenCanvas test: 2d.imageData.get.nonfinite + + + + +

    2d.imageData.get.nonfinite

    +

    getImageData() throws TypeError if arguments are not finite

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js new file mode 100644 index 00000000000..bfd5fb038af --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonfinite.worker.js @@ -0,0 +1,68 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.nonfinite +// Description:getImageData() throws TypeError if arguments are not finite +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() throws TypeError if arguments are not finite"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(-Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(NaN, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, -Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, NaN, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, -Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, NaN, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, 10, -Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, 10, NaN); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(Infinity, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, Infinity, Infinity); }); +var posinfobj = { valueOf: function() { return Infinity; } }, + neginfobj = { valueOf: function() { return -Infinity; } }, + nanobj = { valueOf: function() { return -Infinity; } }; +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(neginfobj, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(nanobj, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, posinfobj, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, neginfobj, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, nanobj, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, posinfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, neginfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, nanobj, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, 10, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, 10, neginfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, 10, nanobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, posinfobj, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, posinfobj, posinfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, posinfobj, posinfobj, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, posinfobj, 10, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, 10, posinfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, 10, posinfobj, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(posinfobj, 10, 10, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, posinfobj, posinfobj, 10); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, posinfobj, posinfobj, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, posinfobj, 10, posinfobj); }); +assert_throws(new TypeError(), function() { ctx.getImageData(10, 10, posinfobj, posinfobj); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html new file mode 100644 index 00000000000..473d6f6efaa --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.imageData.get.nonpremul + + + + +

    2d.imageData.get.nonpremul

    +

    getImageData() returns non-premultiplied colours

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js new file mode 100644 index 00000000000..6d85a5c128e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.nonpremul.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.nonpremul +// Description:getImageData() returns non-premultiplied colours +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns non-premultiplied colours"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +var imgdata = ctx.getImageData(10, 10, 10, 10); +_assert(imgdata.data[0] > 200, "imgdata.data[\""+(0)+"\"] > 200"); +_assert(imgdata.data[1] > 200, "imgdata.data[\""+(1)+"\"] > 200"); +_assert(imgdata.data[2] > 200, "imgdata.data[\""+(2)+"\"] > 200"); +_assert(imgdata.data[3] > 100, "imgdata.data[\""+(3)+"\"] > 100"); +_assert(imgdata.data[3] < 200, "imgdata.data[\""+(3)+"\"] < 200"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html new file mode 100644 index 00000000000..4bf30c08df4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.imageData.get.order.alpha + + + + +

    2d.imageData.get.order.alpha

    +

    getImageData() returns A in the fourth component

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js new file mode 100644 index 00000000000..611a9c7781f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.alpha.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.order.alpha +// Description:getImageData() returns A in the fourth component +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns A in the fourth component"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; +ctx.fillRect(0, 0, 100, 50); +var imgdata = ctx.getImageData(0, 0, 10, 10); +_assert(imgdata.data[3] < 200, "imgdata.data[\""+(3)+"\"] < 200"); +_assert(imgdata.data[3] > 100, "imgdata.data[\""+(3)+"\"] > 100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html new file mode 100644 index 00000000000..d3abec38a24 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.imageData.get.order.cols + + + + +

    2d.imageData.get.order.cols

    +

    getImageData() returns leftmost columns first

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js new file mode 100644 index 00000000000..c3a7d250464 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.cols.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.order.cols +// Description:getImageData() returns leftmost columns first +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns leftmost columns first"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#fff'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#000'; +ctx.fillRect(0, 0, 2, 50); +var imgdata = ctx.getImageData(0, 0, 10, 10); +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata.data[Math.round(imgdata.width/2*4)], 255, "imgdata.data[Math.round(imgdata.width/2*4)]", "255"); +_assertSame(imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)], 0, "imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html new file mode 100644 index 00000000000..ce81521bccc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.imageData.get.order.rgb + + + + +

    2d.imageData.get.order.rgb

    +

    getImageData() returns R then G then B

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js new file mode 100644 index 00000000000..654ea19f6dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rgb.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.order.rgb +// Description:getImageData() returns R then G then B +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns R then G then B"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#48c'; +ctx.fillRect(0, 0, 100, 50); +var imgdata = ctx.getImageData(0, 0, 10, 10); +_assertSame(imgdata.data[0], 0x44, "imgdata.data[\""+(0)+"\"]", "0x44"); +_assertSame(imgdata.data[1], 0x88, "imgdata.data[\""+(1)+"\"]", "0x88"); +_assertSame(imgdata.data[2], 0xCC, "imgdata.data[\""+(2)+"\"]", "0xCC"); +_assertSame(imgdata.data[3], 255, "imgdata.data[\""+(3)+"\"]", "255"); +_assertSame(imgdata.data[4], 0x44, "imgdata.data[\""+(4)+"\"]", "0x44"); +_assertSame(imgdata.data[5], 0x88, "imgdata.data[\""+(5)+"\"]", "0x88"); +_assertSame(imgdata.data[6], 0xCC, "imgdata.data[\""+(6)+"\"]", "0xCC"); +_assertSame(imgdata.data[7], 255, "imgdata.data[\""+(7)+"\"]", "255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html new file mode 100644 index 00000000000..ba8a740cf49 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.imageData.get.order.rows + + + + +

    2d.imageData.get.order.rows

    +

    getImageData() returns topmost rows first

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js new file mode 100644 index 00000000000..9fb23e6a046 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.order.rows.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.order.rows +// Description:getImageData() returns topmost rows first +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns topmost rows first"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#fff'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#000'; +ctx.fillRect(0, 0, 100, 2); +var imgdata = ctx.getImageData(0, 0, 10, 10); +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata.data[Math.floor(imgdata.width/2*4)], 0, "imgdata.data[Math.floor(imgdata.width/2*4)]", "0"); +_assertSame(imgdata.data[(imgdata.height/2)*imgdata.width*4], 255, "imgdata.data[(imgdata.height/2)*imgdata.width*4]", "255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html new file mode 100644 index 00000000000..9a19b651f7a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.imageData.get.range + + + + +

    2d.imageData.get.range

    +

    getImageData() returns values in the range [0, 255]

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js new file mode 100644 index 00000000000..5cac707ac96 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.range.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.range +// Description:getImageData() returns values in the range [0, 255] +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns values in the range [0, 255]"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#000'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#fff'; +ctx.fillRect(20, 10, 60, 10); +var imgdata1 = ctx.getImageData(10, 5, 1, 1); +_assertSame(imgdata1.data[0], 0, "imgdata1.data[\""+(0)+"\"]", "0"); +var imgdata2 = ctx.getImageData(30, 15, 1, 1); +_assertSame(imgdata2.data[0], 255, "imgdata2.data[\""+(0)+"\"]", "255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html new file mode 100644 index 00000000000..b6d47a228e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.imageData.get.source.negative + + + + +

    2d.imageData.get.source.negative

    +

    getImageData() works with negative width and height, and returns top-to-bottom left-to-right

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js new file mode 100644 index 00000000000..ed83ee57082 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.negative.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.source.negative +// Description:getImageData() works with negative width and height, and returns top-to-bottom left-to-right +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() works with negative width and height, and returns top-to-bottom left-to-right"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#000'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#fff'; +ctx.fillRect(20, 10, 60, 10); +var imgdata1 = ctx.getImageData(85, 25, -10, -10); +_assertSame(imgdata1.data[0], 255, "imgdata1.data[\""+(0)+"\"]", "255"); +_assertSame(imgdata1.data[1], 255, "imgdata1.data[\""+(1)+"\"]", "255"); +_assertSame(imgdata1.data[2], 255, "imgdata1.data[\""+(2)+"\"]", "255"); +_assertSame(imgdata1.data[3], 255, "imgdata1.data[\""+(3)+"\"]", "255"); +_assertSame(imgdata1.data[imgdata1.data.length-4+0], 0, "imgdata1.data[imgdata1.data.length-4+0]", "0"); +_assertSame(imgdata1.data[imgdata1.data.length-4+1], 0, "imgdata1.data[imgdata1.data.length-4+1]", "0"); +_assertSame(imgdata1.data[imgdata1.data.length-4+2], 0, "imgdata1.data[imgdata1.data.length-4+2]", "0"); +_assertSame(imgdata1.data[imgdata1.data.length-4+3], 255, "imgdata1.data[imgdata1.data.length-4+3]", "255"); +var imgdata2 = ctx.getImageData(0, 0, -1, -1); +_assertSame(imgdata2.data[0], 0, "imgdata2.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata2.data[1], 0, "imgdata2.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata2.data[2], 0, "imgdata2.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata2.data[3], 0, "imgdata2.data[\""+(3)+"\"]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html new file mode 100644 index 00000000000..0190a1f22c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.html @@ -0,0 +1,76 @@ + + +OffscreenCanvas test: 2d.imageData.get.source.outside + + + + +

    2d.imageData.get.source.outside

    +

    getImageData() returns transparent black outside the canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js new file mode 100644 index 00000000000..0cc5fd4a24e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.outside.worker.js @@ -0,0 +1,72 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.source.outside +// Description:getImageData() returns transparent black outside the canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns transparent black outside the canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#08f'; +ctx.fillRect(0, 0, 100, 50); +var imgdata1 = ctx.getImageData(-10, 5, 1, 1); +_assertSame(imgdata1.data[0], 0, "imgdata1.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata1.data[1], 0, "imgdata1.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata1.data[2], 0, "imgdata1.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata1.data[3], 0, "imgdata1.data[\""+(3)+"\"]", "0"); +var imgdata2 = ctx.getImageData(10, -5, 1, 1); +_assertSame(imgdata2.data[0], 0, "imgdata2.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata2.data[1], 0, "imgdata2.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata2.data[2], 0, "imgdata2.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata2.data[3], 0, "imgdata2.data[\""+(3)+"\"]", "0"); +var imgdata3 = ctx.getImageData(200, 5, 1, 1); +_assertSame(imgdata3.data[0], 0, "imgdata3.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata3.data[1], 0, "imgdata3.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata3.data[2], 0, "imgdata3.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata3.data[3], 0, "imgdata3.data[\""+(3)+"\"]", "0"); +var imgdata4 = ctx.getImageData(10, 60, 1, 1); +_assertSame(imgdata4.data[0], 0, "imgdata4.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata4.data[1], 0, "imgdata4.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata4.data[2], 0, "imgdata4.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata4.data[3], 0, "imgdata4.data[\""+(3)+"\"]", "0"); +var imgdata5 = ctx.getImageData(100, 10, 1, 1); +_assertSame(imgdata5.data[0], 0, "imgdata5.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata5.data[1], 0, "imgdata5.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata5.data[2], 0, "imgdata5.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata5.data[3], 0, "imgdata5.data[\""+(3)+"\"]", "0"); +var imgdata6 = ctx.getImageData(0, 10, 1, 1); +_assertSame(imgdata6.data[0], 0, "imgdata6.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata6.data[1], 136, "imgdata6.data[\""+(1)+"\"]", "136"); +_assertSame(imgdata6.data[2], 255, "imgdata6.data[\""+(2)+"\"]", "255"); +_assertSame(imgdata6.data[3], 255, "imgdata6.data[\""+(3)+"\"]", "255"); +var imgdata7 = ctx.getImageData(-10, 10, 20, 20); +_assertSame(imgdata7.data[ 0*4+0], 0, "imgdata7.data[ 0*4+0]", "0"); +_assertSame(imgdata7.data[ 0*4+1], 0, "imgdata7.data[ 0*4+1]", "0"); +_assertSame(imgdata7.data[ 0*4+2], 0, "imgdata7.data[ 0*4+2]", "0"); +_assertSame(imgdata7.data[ 0*4+3], 0, "imgdata7.data[ 0*4+3]", "0"); +_assertSame(imgdata7.data[ 9*4+0], 0, "imgdata7.data[ 9*4+0]", "0"); +_assertSame(imgdata7.data[ 9*4+1], 0, "imgdata7.data[ 9*4+1]", "0"); +_assertSame(imgdata7.data[ 9*4+2], 0, "imgdata7.data[ 9*4+2]", "0"); +_assertSame(imgdata7.data[ 9*4+3], 0, "imgdata7.data[ 9*4+3]", "0"); +_assertSame(imgdata7.data[10*4+0], 0, "imgdata7.data[10*4+0]", "0"); +_assertSame(imgdata7.data[10*4+1], 136, "imgdata7.data[10*4+1]", "136"); +_assertSame(imgdata7.data[10*4+2], 255, "imgdata7.data[10*4+2]", "255"); +_assertSame(imgdata7.data[10*4+3], 255, "imgdata7.data[10*4+3]", "255"); +_assertSame(imgdata7.data[19*4+0], 0, "imgdata7.data[19*4+0]", "0"); +_assertSame(imgdata7.data[19*4+1], 136, "imgdata7.data[19*4+1]", "136"); +_assertSame(imgdata7.data[19*4+2], 255, "imgdata7.data[19*4+2]", "255"); +_assertSame(imgdata7.data[19*4+3], 255, "imgdata7.data[19*4+3]", "255"); +_assertSame(imgdata7.data[20*4+0], 0, "imgdata7.data[20*4+0]", "0"); +_assertSame(imgdata7.data[20*4+1], 0, "imgdata7.data[20*4+1]", "0"); +_assertSame(imgdata7.data[20*4+2], 0, "imgdata7.data[20*4+2]", "0"); +_assertSame(imgdata7.data[20*4+3], 0, "imgdata7.data[20*4+3]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html new file mode 100644 index 00000000000..e95dd5565eb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.imageData.get.source.size + + + + +

    2d.imageData.get.source.size

    +

    getImageData() returns bigger ImageData for bigger source rectangle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js new file mode 100644 index 00000000000..bb8c105a685 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.source.size.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.source.size +// Description:getImageData() returns bigger ImageData for bigger source rectangle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() returns bigger ImageData for bigger source rectangle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata1 = ctx.getImageData(0, 0, 10, 10); +var imgdata2 = ctx.getImageData(0, 0, 20, 20); +_assert(imgdata2.width > imgdata1.width, "imgdata2.width > imgdata1.width"); +_assert(imgdata2.height > imgdata1.height, "imgdata2.height > imgdata1.height"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html new file mode 100644 index 00000000000..ac9563b5f31 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.imageData.get.tiny + + + + +

    2d.imageData.get.tiny

    +

    getImageData() works for sizes smaller than one pixel

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js new file mode 100644 index 00000000000..3167e465d69 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.tiny.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.tiny +// Description:getImageData() works for sizes smaller than one pixel +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() works for sizes smaller than one pixel"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 0.0001, 0.0001); +_assertSame(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4"); +_assertSame(imgdata.width, 1, "imgdata.width", "1"); +_assertSame(imgdata.height, 1, "imgdata.height", "1"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html new file mode 100644 index 00000000000..afd759b5da5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.imageData.get.unaffected + + + + +

    2d.imageData.get.unaffected

    +

    getImageData() is not affected by context state

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js new file mode 100644 index 00000000000..049042f5d5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.unaffected.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.unaffected +// Description:getImageData() is not affected by context state +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() is not affected by context state"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 50) +ctx.fillStyle = '#f00'; +ctx.fillRect(50, 0, 50, 50) +ctx.save(); +ctx.translate(50, 0); +ctx.globalAlpha = 0.1; +ctx.globalCompositeOperation = 'destination-atop'; +ctx.shadowColor = '#f00'; +ctx.rect(0, 0, 5, 5); +ctx.clip(); +var imgdata = ctx.getImageData(0, 0, 50, 50); +ctx.restore(); +ctx.putImageData(imgdata, 50, 0); +_assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html new file mode 100644 index 00000000000..42d71fc9642 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.html @@ -0,0 +1,26 @@ + + +OffscreenCanvas test: 2d.imageData.get.zero + + + + +

    2d.imageData.get.zero

    +

    getImageData() throws INDEX_SIZE_ERR if size is zero

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js new file mode 100644 index 00000000000..5886b88e873 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.get.zero.worker.js @@ -0,0 +1,22 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.get.zero +// Description:getImageData() throws INDEX_SIZE_ERR if size is zero +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getImageData() throws INDEX_SIZE_ERR if size is zero"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws("INDEX_SIZE_ERR", function() { ctx.getImageData(1, 1, 10, 0); }); +assert_throws("INDEX_SIZE_ERR", function() { ctx.getImageData(1, 1, 0, 10); }); +assert_throws("INDEX_SIZE_ERR", function() { ctx.getImageData(1, 1, 0, 0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html new file mode 100644 index 00000000000..b367821c2ce --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.html @@ -0,0 +1,48 @@ + + +OffscreenCanvas test: 2d.imageData.object.clamp + + + + +

    2d.imageData.object.clamp

    +

    ImageData.data clamps numbers to [0, 255]

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js new file mode 100644 index 00000000000..00400bf4546 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.clamp.worker.js @@ -0,0 +1,44 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.clamp +// Description:ImageData.data clamps numbers to [0, 255] +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData.data clamps numbers to [0, 255]"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +imgdata.data[0] = 100; +imgdata.data[0] = 300; +_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255"); +imgdata.data[0] = 100; +imgdata.data[0] = -100; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 100; +imgdata.data[0] = 200+Math.pow(2, 32); +_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255"); +imgdata.data[0] = 100; +imgdata.data[0] = -200-Math.pow(2, 32); +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 100; +imgdata.data[0] = Math.pow(10, 39); +_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255"); +imgdata.data[0] = 100; +imgdata.data[0] = -Math.pow(10, 39); +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 100; +imgdata.data[0] = -Infinity; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 100; +imgdata.data[0] = Infinity; +_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html new file mode 100644 index 00000000000..31224baac94 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.imageData.object.nan + + + + +

    2d.imageData.object.nan

    +

    ImageData.data converts NaN to 0

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js new file mode 100644 index 00000000000..ef665e706ac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.nan.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.nan +// Description:ImageData.data converts NaN to 0 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData.data converts NaN to 0"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +imgdata.data[0] = 100; +imgdata.data[0] = NaN; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 100; +imgdata.data[0] = "cheese"; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html new file mode 100644 index 00000000000..04b9b02cefc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.imageData.object.properties + + + + +

    2d.imageData.object.properties

    +

    ImageData objects have the right properties

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js new file mode 100644 index 00000000000..1094c660fcb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.properties.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.properties +// Description:ImageData objects have the right properties +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData objects have the right properties"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +_assertSame(typeof(imgdata.width), 'number', "typeof(imgdata.width)", "'number'"); +_assertSame(typeof(imgdata.height), 'number', "typeof(imgdata.height)", "'number'"); +_assertSame(typeof(imgdata.data), 'object', "typeof(imgdata.data)", "'object'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html new file mode 100644 index 00000000000..7ad3b6b1a7c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.imageData.object.readonly + + + + +

    2d.imageData.object.readonly

    +

    ImageData objects properties are read-only

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js new file mode 100644 index 00000000000..770df898083 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.readonly.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.readonly +// Description:ImageData objects properties are read-only +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData objects properties are read-only"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +var w = imgdata.width; +var h = imgdata.height; +var d = imgdata.data; +imgdata.width = 123; +imgdata.height = 123; +imgdata.data = [100,100,100,100]; +_assertSame(imgdata.width, w, "imgdata.width", "w"); +_assertSame(imgdata.height, h, "imgdata.height", "h"); +_assertSame(imgdata.data, d, "imgdata.data", "d"); +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +_assertSame(imgdata.data[1], 0, "imgdata.data[\""+(1)+"\"]", "0"); +_assertSame(imgdata.data[2], 0, "imgdata.data[\""+(2)+"\"]", "0"); +_assertSame(imgdata.data[3], 0, "imgdata.data[\""+(3)+"\"]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html new file mode 100644 index 00000000000..cbb7519a61a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.html @@ -0,0 +1,52 @@ + + +OffscreenCanvas test: 2d.imageData.object.round + + + + +

    2d.imageData.object.round

    +

    ImageData.data rounds numbers with round-to-zero

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js new file mode 100644 index 00000000000..6924e6c114d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.round.worker.js @@ -0,0 +1,48 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.round +// Description:ImageData.data rounds numbers with round-to-zero +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData.data rounds numbers with round-to-zero"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +imgdata.data[0] = 0.499; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 0.5; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = 0.501; +_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1"); +imgdata.data[0] = 1.499; +_assertSame(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1"); +imgdata.data[0] = 1.5; +_assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2"); +imgdata.data[0] = 1.501; +_assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2"); +imgdata.data[0] = 2.5; +_assertSame(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2"); +imgdata.data[0] = 3.5; +_assertSame(imgdata.data[0], 4, "imgdata.data[\""+(0)+"\"]", "4"); +imgdata.data[0] = 252.5; +_assertSame(imgdata.data[0], 252, "imgdata.data[\""+(0)+"\"]", "252"); +imgdata.data[0] = 253.5; +_assertSame(imgdata.data[0], 254, "imgdata.data[\""+(0)+"\"]", "254"); +imgdata.data[0] = 254.5; +_assertSame(imgdata.data[0], 254, "imgdata.data[\""+(0)+"\"]", "254"); +imgdata.data[0] = 256.5; +_assertSame(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255"); +imgdata.data[0] = -0.5; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); +imgdata.data[0] = -1.5; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html new file mode 100644 index 00000000000..f39240e7275 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.imageData.object.set + + + + +

    2d.imageData.object.set

    +

    ImageData.data can be modified

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js new file mode 100644 index 00000000000..6ab6fe16e8d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.set.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.set +// Description:ImageData.data can be modified +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData.data can be modified"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +imgdata.data[0] = 100; +_assertSame(imgdata.data[0], 100, "imgdata.data[\""+(0)+"\"]", "100"); +imgdata.data[0] = 200; +_assertSame(imgdata.data[0], 200, "imgdata.data[\""+(0)+"\"]", "200"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html new file mode 100644 index 00000000000..7d944d003c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.imageData.object.string + + + + +

    2d.imageData.object.string

    +

    ImageData.data converts strings to numbers with ToNumber

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js new file mode 100644 index 00000000000..41a38395257 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.string.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.string +// Description:ImageData.data converts strings to numbers with ToNumber +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData.data converts strings to numbers with ToNumber"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +imgdata.data[0] = 100; +imgdata.data[0] = "110"; +_assertSame(imgdata.data[0], 110, "imgdata.data[\""+(0)+"\"]", "110"); +imgdata.data[0] = 100; +imgdata.data[0] = "0x78"; +_assertSame(imgdata.data[0], 120, "imgdata.data[\""+(0)+"\"]", "120"); +imgdata.data[0] = 100; +imgdata.data[0] = " +130e0 "; +_assertSame(imgdata.data[0], 130, "imgdata.data[\""+(0)+"\"]", "130"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html new file mode 100644 index 00000000000..81c2959a0b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.imageData.object.undefined + + + + +

    2d.imageData.object.undefined

    +

    ImageData.data converts undefined to 0

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js new file mode 100644 index 00000000000..bcded33dd82 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.object.undefined.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.object.undefined +// Description:ImageData.data converts undefined to 0 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("ImageData.data converts undefined to 0"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +imgdata.data[0] = 100; +imgdata.data[0] = undefined; +_assertSame(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html new file mode 100644 index 00000000000..5236717e5bc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.imageData.put.alpha + + + + +

    2d.imageData.put.alpha

    +

    putImageData() puts non-solid image data correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js new file mode 100644 index 00000000000..a1020fd8b86 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.alpha.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.alpha +// Description:putImageData() puts non-solid image data correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() puts non-solid image data correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; +ctx.fillRect(0, 0, 100, 50) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.putImageData(imgdata, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,64, "50,25", "0,255,0,64", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html new file mode 100644 index 00000000000..9123460c23f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.imageData.put.basic + + + + +

    2d.imageData.put.basic

    +

    putImageData() puts image data from getImageData() onto the canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js new file mode 100644 index 00000000000..3959348b935 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.basic.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.basic +// Description:putImageData() puts image data from getImageData() onto the canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() puts image data from getImageData() onto the canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.putImageData(imgdata, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html new file mode 100644 index 00000000000..3df65e00530 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.imageData.put.clip + + + + +

    2d.imageData.put.clip

    +

    putImageData() is not affected by clipping regions

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js new file mode 100644 index 00000000000..e038e41efec --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.clip.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.clip +// Description:putImageData() is not affected by clipping regions +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() is not affected by clipping regions"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.beginPath(); +ctx.rect(0, 0, 50, 50); +ctx.clip(); +ctx.putImageData(imgdata, 0, 0); +_assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html new file mode 100644 index 00000000000..7f55f1752fc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.imageData.put.created + + + + +

    2d.imageData.put.created

    +

    putImageData() puts image data from createImageData() onto the canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js new file mode 100644 index 00000000000..aede851c487 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.created.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.created +// Description:putImageData() puts image data from createImageData() onto the canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() puts image data from createImageData() onto the canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.createImageData(100, 50); +for (var i = 0; i < imgdata.data.length; i += 4) { + imgdata.data[i] = 0; + imgdata.data[i+1] = 255; + imgdata.data[i+2] = 0; + imgdata.data[i+3] = 255; +} +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.putImageData(imgdata, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html new file mode 100644 index 00000000000..a7af5f29f6f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.imageData.put.cross + + + + +

    2d.imageData.put.cross

    +

    putImageData() accepts image data got from a different canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js new file mode 100644 index 00000000000..d81156068a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.cross.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.cross +// Description:putImageData() accepts image data got from a different canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() accepts image data got from a different canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#0f0'; +ctx2.fillRect(0, 0, 100, 50) +var imgdata = ctx2.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.putImageData(imgdata, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html new file mode 100644 index 00000000000..3b5f437e441 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.imageData.put.dirty.negative + + + + +

    2d.imageData.put.dirty.negative

    +

    putImageData() handles negative-sized dirty rectangles correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js new file mode 100644 index 00000000000..460e7977140 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.negative.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.dirty.negative +// Description:putImageData() handles negative-sized dirty rectangles correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() handles negative-sized dirty rectangles correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 20, 20) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#f00'; +ctx.fillRect(40, 20, 20, 20) +ctx.putImageData(imgdata, 40, 20, 20, 20, -20, -20); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,15, 0,255,0,255, "50,15", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html new file mode 100644 index 00000000000..1ada85bdec1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.imageData.put.dirty.outside + + + + +

    2d.imageData.put.dirty.outside

    +

    putImageData() handles dirty rectangles outside the canvas correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js new file mode 100644 index 00000000000..7a194f9c15c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.outside.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.dirty.outside +// Description:putImageData() handles dirty rectangles outside the canvas correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() handles dirty rectangles outside the canvas correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +ctx.putImageData(imgdata, 100, 20, 20, 20, -20, -20); +ctx.putImageData(imgdata, 200, 200, 0, 0, 100, 50); +ctx.putImageData(imgdata, 40, 20, -30, -20, 30, 20); +ctx.putImageData(imgdata, -30, 20, 0, 0, 30, 20); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 98,15, 0,255,0,255, "98,15", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 98,45, 0,255,0,255, "98,45", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 1,5, 0,255,0,255, "1,5", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 1,45, 0,255,0,255, "1,45", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html new file mode 100644 index 00000000000..5e132d693ca --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.imageData.put.dirty.rect1 + + + + +

    2d.imageData.put.dirty.rect1

    +

    putImageData() only modifies areas inside the dirty rectangle, using width and height

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js new file mode 100644 index 00000000000..7d9ca465f3e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect1.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.dirty.rect1 +// Description:putImageData() only modifies areas inside the dirty rectangle, using width and height +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() only modifies areas inside the dirty rectangle, using width and height"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 20, 20) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#f00'; +ctx.fillRect(40, 20, 20, 20) +ctx.putImageData(imgdata, 40, 20, 0, 0, 20, 20); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,15, 0,255,0,255, "50,15", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html new file mode 100644 index 00000000000..96056d19083 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.imageData.put.dirty.rect2 + + + + +

    2d.imageData.put.dirty.rect2

    +

    putImageData() only modifies areas inside the dirty rectangle, using x and y

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js new file mode 100644 index 00000000000..524a6d7769d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.rect2.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.dirty.rect2 +// Description:putImageData() only modifies areas inside the dirty rectangle, using x and y +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() only modifies areas inside the dirty rectangle, using x and y"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#0f0'; +ctx.fillRect(60, 30, 20, 20) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#f00'; +ctx.fillRect(40, 20, 20, 20) +ctx.putImageData(imgdata, -20, -10, 60, 30, 20, 20); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,15, 0,255,0,255, "50,15", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,45, 0,255,0,255, "50,45", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html new file mode 100644 index 00000000000..c17df92de4b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.imageData.put.dirty.zero + + + + +

    2d.imageData.put.dirty.zero

    +

    putImageData() with zero-sized dirty rectangle puts nothing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js new file mode 100644 index 00000000000..e9bb4ac60b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.dirty.zero.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.dirty.zero +// Description:putImageData() with zero-sized dirty rectangle puts nothing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() with zero-sized dirty rectangle puts nothing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +ctx.putImageData(imgdata, 0, 0, 0, 0, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html new file mode 100644 index 00000000000..ddfe634f1b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.imageData.put.modified + + + + +

    2d.imageData.put.modified

    +

    putImageData() puts modified image data correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js new file mode 100644 index 00000000000..d22588dca6a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.modified.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.modified +// Description:putImageData() puts modified image data correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() puts modified image data correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +ctx.fillStyle = '#f00'; +ctx.fillRect(45, 20, 10, 10) +var imgdata = ctx.getImageData(45, 20, 10, 10); +for (var i = 0, len = imgdata.width*imgdata.height*4; i < len; i += 4) +{ + imgdata.data[i] = 0; + imgdata.data[i+1] = 255; +} +ctx.putImageData(imgdata, 45, 20); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html new file mode 100644 index 00000000000..d2f174af0bb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.html @@ -0,0 +1,106 @@ + + +OffscreenCanvas test: 2d.imageData.put.nonfinite + + + + +

    2d.imageData.put.nonfinite

    +

    putImageData() throws TypeError if arguments are not finite

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js new file mode 100644 index 00000000000..5ba39d6b28d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.nonfinite.worker.js @@ -0,0 +1,102 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.nonfinite +// Description:putImageData() throws TypeError if arguments are not finite +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() throws TypeError if arguments are not finite"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = ctx.getImageData(0, 0, 10, 10); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, -Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, NaN, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, -Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, NaN); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, -Infinity, 10, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, NaN, 10, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, -Infinity, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, NaN, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, -Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, NaN, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, -Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, NaN, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, -Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, NaN, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, 10, -Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, 10, NaN); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, 10, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, Infinity, 10); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, Infinity, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, 10, Infinity); }); +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 10, 10, 10, 10, Infinity, Infinity); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html new file mode 100644 index 00000000000..a0f70171186 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.imageData.put.null + + + + +

    2d.imageData.put.null

    +

    putImageData() with null imagedata throws TypeError

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js new file mode 100644 index 00000000000..253508fc91b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.null.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.null +// Description:putImageData() with null imagedata throws TypeError +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() with null imagedata throws TypeError"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +assert_throws(new TypeError(), function() { ctx.putImageData(null, 0, 0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html new file mode 100644 index 00000000000..47ae20a2996 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.imageData.put.path + + + + +

    2d.imageData.put.path

    +

    putImageData() does not affect the current path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js new file mode 100644 index 00000000000..c2ef1451cf9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.path.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.path +// Description:putImageData() does not affect the current path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() does not affect the current path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.rect(0, 0, 100, 50); +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.putImageData(imgdata, 0, 0); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html new file mode 100644 index 00000000000..3f80709c6a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.imageData.put.unaffected + + + + +

    2d.imageData.put.unaffected

    +

    putImageData() is not affected by context state

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js new file mode 100644 index 00000000000..23e4cea1eee --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unaffected.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.unaffected +// Description:putImageData() is not affected by context state +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() is not affected by context state"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50) +var imgdata = ctx.getImageData(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50) +ctx.globalAlpha = 0.1; +ctx.globalCompositeOperation = 'destination-atop'; +ctx.shadowColor = '#f00'; +ctx.shadowBlur = 1; +ctx.translate(100, 50); +ctx.scale(0.1, 0.1); +ctx.putImageData(imgdata, 0, 0); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html new file mode 100644 index 00000000000..72640bfb2d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.imageData.put.unchanged + + + + +

    2d.imageData.put.unchanged

    +

    putImageData(getImageData(...), ...) has no effect

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js new file mode 100644 index 00000000000..418e46ccf87 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.unchanged.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.unchanged +// Description:putImageData(getImageData(...), ...) has no effect +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData(getImageData(...), ...) has no effect"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var i = 0; +for (var y = 0; y < 16; ++y) { + for (var x = 0; x < 16; ++x, ++i) { + ctx.fillStyle = 'rgba(' + i + ',' + (Math.floor(i*1.5) % 256) + ',' + (Math.floor(i*23.3) % 256) + ',' + (i/256) + ')'; + ctx.fillRect(x, y, 1, 1); + } +} +var imgdata1 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); +var olddata = []; +for (var i = 0; i < imgdata1.data.length; ++i) + olddata[i] = imgdata1.data[i]; +ctx.putImageData(imgdata1, 0.1, 0.2); +var imgdata2 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); +for (var i = 0; i < imgdata2.data.length; ++i) { + _assertSame(olddata[i], imgdata2.data[i], "olddata[\""+(i)+"\"]", "imgdata2.data[\""+(i)+"\"]"); +} + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html new file mode 100644 index 00000000000..1a31879f069 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.imageData.put.wrongtype + + + + +

    2d.imageData.put.wrongtype

    +

    putImageData() does not accept non-ImageData objects

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js new file mode 100644 index 00000000000..18d737c7072 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/pixel-manipulation/2d.imageData.put.wrongtype.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.imageData.put.wrongtype +// Description:putImageData() does not accept non-ImageData objects +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("putImageData() does not accept non-ImageData objects"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; +assert_throws(new TypeError(), function() { ctx.putImageData(imgdata, 0, 0); }); +assert_throws(new TypeError(), function() { ctx.putImageData("cheese", 0, 0); }); +assert_throws(new TypeError(), function() { ctx.putImageData(42, 0, 0); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.1.html new file mode 100644 index 00000000000..c223e25090a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.1.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.shadow.alpha.1 + + + + +

    2d.shadow.alpha.1

    +

    Shadow colour alpha components are used

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js new file mode 100644 index 00000000000..9852033eed7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.1.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.alpha.1 +// Description:Shadow colour alpha components are used +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadow colour alpha components are used"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = 'rgba(255, 0, 0, 0.01)'; +ctx.shadowOffsetY = 50; +ctx.fillRect(0, -50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 4); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.2.html new file mode 100644 index 00000000000..53dd015230c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.2.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.shadow.alpha.2 + + + + +

    2d.shadow.alpha.2

    +

    Shadow colour alpha components are used

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js new file mode 100644 index 00000000000..491397a8a1a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.2.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.alpha.2 +// Description:Shadow colour alpha components are used +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadow colour alpha components are used"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = 'rgba(0, 0, 255, 0.5)'; +ctx.shadowOffsetY = 50; +ctx.fillRect(0, -50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.3.html new file mode 100644 index 00000000000..5cac64d8dd6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.3.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.alpha.3 + + + + +

    2d.shadow.alpha.3

    +

    Shadows are affected by globalAlpha

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js new file mode 100644 index 00000000000..f30cba20147 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.3.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.alpha.3 +// Description:Shadows are affected by globalAlpha +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are affected by globalAlpha"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) +ctx.shadowColor = '#00f'; +ctx.shadowOffsetY = 50; +ctx.globalAlpha = 0.5; +ctx.fillRect(0, -50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.4.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.4.html new file mode 100644 index 00000000000..e7aad4f3e08 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.4.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.alpha.4 + + + + +

    2d.shadow.alpha.4

    +

    Shadows with alpha components are correctly affected by globalAlpha

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js new file mode 100644 index 00000000000..1c1b619eccc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.4.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.alpha.4 +// Description:Shadows with alpha components are correctly affected by globalAlpha +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows with alpha components are correctly affected by globalAlpha"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) +ctx.shadowColor = 'rgba(0, 0, 255, 0.707)'; +ctx.shadowOffsetY = 50; +ctx.globalAlpha = 0.707; +ctx.fillRect(0, -50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.5.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.5.html new file mode 100644 index 00000000000..db31f7119ab --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.5.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.shadow.alpha.5 + + + + +

    2d.shadow.alpha.5

    +

    Shadows of shapes with alpha components are drawn correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js new file mode 100644 index 00000000000..dd7699fbe21 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.alpha.5.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.alpha.5 +// Description:Shadows of shapes with alpha components are drawn correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows of shapes with alpha components are drawn correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = 'rgba(64, 0, 0, 0.5)'; +ctx.shadowColor = '#00f'; +ctx.shadowOffsetY = 50; +ctx.fillRect(0, -50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html new file mode 100644 index 00000000000..290ffbbe8f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowBlur.initial + + + + +

    2d.shadow.attributes.shadowBlur.initial

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js new file mode 100644 index 00000000000..0406e5f9c7b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.initial.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowBlur.initial +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html new file mode 100644 index 00000000000..108c0d0da40 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowBlur.invalid + + + + +

    2d.shadow.attributes.shadowBlur.invalid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js new file mode 100644 index 00000000000..d4e37a1ccda --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.invalid.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowBlur.invalid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowBlur = 1; +ctx.shadowBlur = -2; +_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); +ctx.shadowBlur = 1; +ctx.shadowBlur = Infinity; +_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); +ctx.shadowBlur = 1; +ctx.shadowBlur = -Infinity; +_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); +ctx.shadowBlur = 1; +ctx.shadowBlur = NaN; +_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html new file mode 100644 index 00000000000..45a8395c854 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowBlur.valid + + + + +

    2d.shadow.attributes.shadowBlur.valid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js new file mode 100644 index 00000000000..aada60824de --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowBlur.valid.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowBlur.valid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowBlur = 1; +_assertSame(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); +ctx.shadowBlur = 0.5; +_assertSame(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5"); +ctx.shadowBlur = 1e6; +_assertSame(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6"); +ctx.shadowBlur = 0; +_assertSame(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html new file mode 100644 index 00000000000..83c7628df99 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowColor.initial + + + + +

    2d.shadow.attributes.shadowColor.initial

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js new file mode 100644 index 00000000000..5e13b9b3575 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.initial.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowColor.initial +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html new file mode 100644 index 00000000000..b4d661df837 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.html @@ -0,0 +1,35 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowColor.invalid + + + + +

    2d.shadow.attributes.shadowColor.invalid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js new file mode 100644 index 00000000000..aad23bd79b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.invalid.worker.js @@ -0,0 +1,31 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowColor.invalid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowColor = '#00ff00'; +ctx.shadowColor = 'bogus'; +_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'"); +ctx.shadowColor = '#00ff00'; +ctx.shadowColor = 'red bogus'; +_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'"); +ctx.shadowColor = '#00ff00'; +ctx.shadowColor = ctx; +_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'"); +ctx.shadowColor = '#00ff00'; +ctx.shadowColor = undefined; +_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html new file mode 100644 index 00000000000..318a4ec88cd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowColor.valid + + + + +

    2d.shadow.attributes.shadowColor.valid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js new file mode 100644 index 00000000000..b5a711fa9a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowColor.valid.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowColor.valid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowColor = 'lime'; +_assertSame(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'"); +ctx.shadowColor = 'RGBA(0,255, 0,0)'; +_assertSame(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html new file mode 100644 index 00000000000..7efd45e08f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowOffset.initial + + + + +

    2d.shadow.attributes.shadowOffset.initial

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js new file mode 100644 index 00000000000..08e2bf409b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.initial.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowOffset.initial +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); +_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html new file mode 100644 index 00000000000..8db0cd556f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowOffset.invalid + + + + +

    2d.shadow.attributes.shadowOffset.invalid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js new file mode 100644 index 00000000000..2b02e946b9f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.invalid.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowOffset.invalid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowOffsetX = 1; +ctx.shadowOffsetY = 2; +ctx.shadowOffsetX = Infinity; +ctx.shadowOffsetY = Infinity; +_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); +_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); +ctx.shadowOffsetX = 1; +ctx.shadowOffsetY = 2; +ctx.shadowOffsetX = -Infinity; +ctx.shadowOffsetY = -Infinity; +_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); +_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); +ctx.shadowOffsetX = 1; +ctx.shadowOffsetY = 2; +ctx.shadowOffsetX = NaN; +ctx.shadowOffsetY = NaN; +_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); +_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html new file mode 100644 index 00000000000..19fde85664f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.html @@ -0,0 +1,43 @@ + + +OffscreenCanvas test: 2d.shadow.attributes.shadowOffset.valid + + + + +

    2d.shadow.attributes.shadowOffset.valid

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js new file mode 100644 index 00000000000..b6dacb4e16b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.attributes.shadowOffset.valid.worker.js @@ -0,0 +1,39 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.attributes.shadowOffset.valid +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowOffsetX = 1; +ctx.shadowOffsetY = 2; +_assertSame(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); +_assertSame(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); +ctx.shadowOffsetX = 0.5; +ctx.shadowOffsetY = 0.25; +_assertSame(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5"); +_assertSame(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25"); +ctx.shadowOffsetX = -0.5; +ctx.shadowOffsetY = -0.25; +_assertSame(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5"); +_assertSame(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25"); +ctx.shadowOffsetX = 0; +ctx.shadowOffsetY = 0; +_assertSame(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); +_assertSame(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); +ctx.shadowOffsetX = 1e6; +ctx.shadowOffsetY = 1e6; +_assertSame(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6"); +_assertSame(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html new file mode 100644 index 00000000000..9f6dafb3df4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.alpha.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.shadow.canvas.alpha + + + + +

    2d.shadow.canvas.alpha

    +

    Shadows are drawn correctly for partially-transparent canvases

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js new file mode 100644 index 00000000000..a0b9eeed713 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.alpha.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.canvas.alpha +// Description:Shadows are drawn correctly for partially-transparent canvases +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn correctly for partially-transparent canvases"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#00f'; +ctx.drawImage(offscreenCanvas2, 0, -50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.basic.html new file mode 100644 index 00000000000..c372ef4c108 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.basic.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.shadow.canvas.basic + + + + +

    2d.shadow.canvas.basic

    +

    Shadows are drawn for canvases

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js new file mode 100644 index 00000000000..3d95499f395 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.basic.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.canvas.basic +// Description:Shadows are drawn for canvases +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for canvases"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 50; +ctx.drawImage(offscreenCanvas2, 0, -50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html new file mode 100644 index 00000000000..4350516eeef --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.canvas.transparent.1 + + + + +

    2d.shadow.canvas.transparent.1

    +

    Shadows are not drawn for transparent canvases

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js new file mode 100644 index 00000000000..7ba697b5f4c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.canvas.transparent.1 +// Description:Shadows are not drawn for transparent canvases +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent canvases"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#f00'; +ctx.shadowOffsetY = 50; +ctx.drawImage(offscreenCanvas2, 0, -50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html new file mode 100644 index 00000000000..ded18f76977 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.shadow.canvas.transparent.2 + + + + +

    2d.shadow.canvas.transparent.2

    +

    Shadows are not drawn for transparent parts of canvases

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js new file mode 100644 index 00000000000..d91fa1694bf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.canvas.transparent.2.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.canvas.transparent.2 +// Description:Shadows are not drawn for transparent parts of canvases +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent parts of canvases"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var ctx2 = offscreenCanvas2.getContext('2d'); +ctx2.fillStyle = '#f00'; +ctx2.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(50, 0, 50, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#0f0'; +ctx.drawImage(offscreenCanvas2, 50, -50); +ctx.shadowColor = '#f00'; +ctx.drawImage(offscreenCanvas2, -50, -50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.1.html new file mode 100644 index 00000000000..9d5e33a008f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.1.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.shadow.clip.1 + + + + +

    2d.shadow.clip.1

    +

    Shadows of clipped shapes are still drawn within the clipping region

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js new file mode 100644 index 00000000000..d6a444d57fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.1.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.clip.1 +// Description:Shadows of clipped shapes are still drawn within the clipping region +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows of clipped shapes are still drawn within the clipping region"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(50, 0, 50, 50); +ctx.save(); +ctx.beginPath(); +ctx.rect(50, 0, 50, 50); +ctx.clip(); +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = 50; +ctx.fillRect(0, 0, 50, 50); +ctx.restore(); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.2.html new file mode 100644 index 00000000000..586fa9e65e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.2.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.shadow.clip.2 + + + + +

    2d.shadow.clip.2

    +

    Shadows are not drawn outside the clipping region

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js new file mode 100644 index 00000000000..eac6bc31b22 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.2.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.clip.2 +// Description:Shadows are not drawn outside the clipping region +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn outside the clipping region"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(50, 0, 50, 50); +ctx.save(); +ctx.beginPath(); +ctx.rect(0, 0, 50, 50); +ctx.clip(); +ctx.shadowColor = '#f00'; +ctx.shadowOffsetX = 50; +ctx.fillRect(0, 0, 50, 50); +ctx.restore(); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.3.html new file mode 100644 index 00000000000..77bb41ccc32 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.3.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.shadow.clip.3 + + + + +

    2d.shadow.clip.3

    +

    Shadows of clipped shapes are still drawn within the clipping region

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js new file mode 100644 index 00000000000..809ee0b1a44 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.clip.3.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.clip.3 +// Description:Shadows of clipped shapes are still drawn within the clipping region +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows of clipped shapes are still drawn within the clipping region"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(50, 0, 50, 50); +ctx.save(); +ctx.beginPath(); +ctx.rect(0, 0, 50, 50); +ctx.clip(); +ctx.fillStyle = '#f00'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = 50; +ctx.fillRect(-50, 0, 50, 50); +ctx.restore(); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.1.html new file mode 100644 index 00000000000..51c458c65e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.1.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.composite.1 + + + + +

    2d.shadow.composite.1

    +

    Shadows are drawn using globalCompositeOperation

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js new file mode 100644 index 00000000000..5c81a2c3498 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.1.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.composite.1 +// Description:Shadows are drawn using globalCompositeOperation +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn using globalCompositeOperation"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'xor'; +ctx.shadowColor = '#f00'; +ctx.shadowOffsetX = 100; +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, 0, 200, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.2.html new file mode 100644 index 00000000000..a0355c63fa5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.2.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.composite.2 + + + + +

    2d.shadow.composite.2

    +

    Shadows are drawn using globalCompositeOperation

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js new file mode 100644 index 00000000000..2ab91b7a7c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.2.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.composite.2 +// Description:Shadows are drawn using globalCompositeOperation +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn using globalCompositeOperation"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'xor'; +ctx.shadowColor = '#f00'; +ctx.shadowBlur = 1; +ctx.fillStyle = '#0f0'; +ctx.fillRect(-10, -10, 120, 70); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.3.html new file mode 100644 index 00000000000..4cbf1902d5f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.3.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.shadow.composite.3 + + + + +

    2d.shadow.composite.3

    +

    Areas outside shadows are drawn correctly with destination-out

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js new file mode 100644 index 00000000000..85730222225 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.composite.3.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.composite.3 +// Description:Areas outside shadows are drawn correctly with destination-out +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Areas outside shadows are drawn correctly with destination-out"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.globalCompositeOperation = 'destination-out'; +ctx.shadowColor = '#f00'; +ctx.shadowBlur = 10; +ctx.fillStyle = '#f00'; +ctx.fillRect(200, 0, 100, 50); +_assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,255, "5,5", "0,255,0,255", 2); +_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.blur.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.blur.html new file mode 100644 index 00000000000..e6ad2937880 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.blur.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.shadow.enable.blur + + + + +

    2d.shadow.enable.blur

    +

    Shadows are drawn if shadowBlur is set

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js new file mode 100644 index 00000000000..610a38b994d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.blur.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.enable.blur +// Description:Shadows are drawn if shadowBlur is set +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn if shadowBlur is set"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'destination-atop'; +ctx.shadowColor = '#0f0'; +ctx.shadowBlur = 0.1; +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.1.html new file mode 100644 index 00000000000..f8ecf85f1cc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.1.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: 2d.shadow.enable.off.1 + + + + +

    2d.shadow.enable.off.1

    +

    Shadows are not drawn when only shadowColor is set

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js new file mode 100644 index 00000000000..dad5c0e58b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.1.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.enable.off.1 +// Description:Shadows are not drawn when only shadowColor is set +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn when only shadowColor is set"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.shadowColor = '#f00'; +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.2.html new file mode 100644 index 00000000000..3a23c8bcfcf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.2.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.shadow.enable.off.2 + + + + +

    2d.shadow.enable.off.2

    +

    Shadows are not drawn when only shadowColor is set

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js new file mode 100644 index 00000000000..371f5822e9c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.off.2.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.enable.off.2 +// Description:Shadows are not drawn when only shadowColor is set +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn when only shadowColor is set"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'destination-atop'; +ctx.shadowColor = '#f00'; +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.x.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.x.html new file mode 100644 index 00000000000..b2f147b4c6f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.x.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.shadow.enable.x + + + + +

    2d.shadow.enable.x

    +

    Shadows are drawn if shadowOffsetX is set

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js new file mode 100644 index 00000000000..1f70635e202 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.x.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.enable.x +// Description:Shadows are drawn if shadowOffsetX is set +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn if shadowOffsetX is set"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'destination-atop'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = 0.1; +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.y.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.y.html new file mode 100644 index 00000000000..a01d61f22f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.y.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.shadow.enable.y + + + + +

    2d.shadow.enable.y

    +

    Shadows are drawn if shadowOffsetY is set

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js new file mode 100644 index 00000000000..f1d0f27bddf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.enable.y.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.enable.y +// Description:Shadows are drawn if shadowOffsetY is set +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn if shadowOffsetY is set"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.globalCompositeOperation = 'destination-atop'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 0.1; +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html new file mode 100644 index 00000000000..50e781675aa --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.alpha.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.shadow.gradient.alpha + + + + +

    2d.shadow.gradient.alpha

    +

    Shadows are drawn correctly for partially-transparent gradient fills

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js new file mode 100644 index 00000000000..07c02cd29cd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.alpha.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.gradient.alpha +// Description:Shadows are drawn correctly for partially-transparent gradient fills +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn correctly for partially-transparent gradient fills"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var gradient = ctx.createLinearGradient(0, 0, 100, 0); +gradient.addColorStop(0, 'rgba(255,0,0,0.5)'); +gradient.addColorStop(1, 'rgba(255,0,0,0.5)'); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#00f'; +ctx.fillStyle = gradient; +ctx.fillRect(0, -50, 100, 50); +_assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.basic.html new file mode 100644 index 00000000000..5ff7e66f36c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.basic.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.shadow.gradient.basic + + + + +

    2d.shadow.gradient.basic

    +

    Shadows are drawn for gradient fills

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js new file mode 100644 index 00000000000..90f24bda1f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.basic.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.gradient.basic +// Description:Shadows are drawn for gradient fills +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for gradient fills"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var gradient = ctx.createLinearGradient(0, 0, 100, 0); +gradient.addColorStop(0, '#f00'); +gradient.addColorStop(1, '#f00'); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 50; +ctx.fillStyle = gradient; +ctx.fillRect(0, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html new file mode 100644 index 00000000000..80b59bace3b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.shadow.gradient.transparent.1 + + + + +

    2d.shadow.gradient.transparent.1

    +

    Shadows are not drawn for transparent gradient fills

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js new file mode 100644 index 00000000000..9e12ce83510 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.1.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.gradient.transparent.1 +// Description:Shadows are not drawn for transparent gradient fills +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent gradient fills"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var gradient = ctx.createLinearGradient(0, 0, 100, 0); +gradient.addColorStop(0, 'rgba(0,0,0,0)'); +gradient.addColorStop(1, 'rgba(0,0,0,0)'); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#f00'; +ctx.shadowOffsetY = 50; +ctx.fillStyle = gradient; +ctx.fillRect(0, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html new file mode 100644 index 00000000000..7c1f567860a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.shadow.gradient.transparent.2 + + + + +

    2d.shadow.gradient.transparent.2

    +

    Shadows are not drawn for transparent parts of gradient fills

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js new file mode 100644 index 00000000000..08f46fdb49c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.gradient.transparent.2.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.gradient.transparent.2 +// Description:Shadows are not drawn for transparent parts of gradient fills +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent parts of gradient fills"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var gradient = ctx.createLinearGradient(0, 0, 100, 0); +gradient.addColorStop(0, '#f00'); +gradient.addColorStop(0.499, '#f00'); +gradient.addColorStop(0.5, 'rgba(0,0,0,0)'); +gradient.addColorStop(1, 'rgba(0,0,0,0)'); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(50, 0, 50, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#0f0'; +ctx.fillStyle = gradient; +ctx.fillRect(0, -50, 100, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.alpha.html new file mode 100644 index 00000000000..86483e39002 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.alpha.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.shadow.image.alpha + + + + +

    2d.shadow.image.alpha

    +

    Shadows are drawn correctly for partially-transparent images

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js new file mode 100644 index 00000000000..a624be80dda --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.alpha.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.image.alpha +// Description:Shadows are drawn correctly for partially-transparent images +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn correctly for partially-transparent images"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#00f'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent50.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, -50); + _assertPixelApprox(offscreenCanvas, 50,25, 127,0,127,255, "50,25", "127,0,127,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.basic.html new file mode 100644 index 00000000000..5ffd8c6a301 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.basic.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.shadow.image.basic + + + + +

    2d.shadow.image.basic

    +

    Shadows are drawn for images

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js new file mode 100644 index 00000000000..0685043ad3f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.basic.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.image.basic +// Description:Shadows are drawn for images +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for images"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 50; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, -50); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.scale.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.scale.html new file mode 100644 index 00000000000..d438f3f3486 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.scale.html @@ -0,0 +1,42 @@ + + +OffscreenCanvas test: 2d.shadow.image.scale + + + + +

    2d.shadow.image.scale

    +

    Shadows are drawn correctly for scaled images

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js new file mode 100644 index 00000000000..6f084e9b42a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.scale.worker.js @@ -0,0 +1,38 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.image.scale +// Description:Shadows are drawn correctly for scaled images +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn correctly for scaled images"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#0f0'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, 0, 100, 50, -10, -50, 240, 50); + _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.section.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.section.html new file mode 100644 index 00000000000..1f297601fa3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.section.html @@ -0,0 +1,42 @@ + + +OffscreenCanvas test: 2d.shadow.image.section + + + + +

    2d.shadow.image.section

    +

    Shadows are not drawn for areas outside image source rectangles

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.section.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.section.worker.js new file mode 100644 index 00000000000..ad923e0f058 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.section.worker.js @@ -0,0 +1,38 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.image.section +// Description:Shadows are not drawn for areas outside image source rectangles +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for areas outside image source rectangles"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#f00'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 50, 0, 50, 50, 0, -50, 50, 50); + _assertPixelApprox(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); + _assertPixelApprox(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255", 2); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html new file mode 100644 index 00000000000..f2b2899ea42 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.1.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.shadow.image.transparent.1 + + + + +

    2d.shadow.image.transparent.1

    +

    Shadows are not drawn for transparent images

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js new file mode 100644 index 00000000000..af2d869f46d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.1.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.image.transparent.1 +// Description:Shadows are not drawn for transparent images +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent images"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#f00'; +ctx.shadowOffsetY = 50; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 0, -50); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html new file mode 100644 index 00000000000..5b23ddfe88e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.2.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.shadow.image.transparent.2 + + + + +

    2d.shadow.image.transparent.2

    +

    Shadows are not drawn for transparent parts of images

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js new file mode 100644 index 00000000000..0b99f3627e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.image.transparent.2.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.image.transparent.2 +// Description:Shadows are not drawn for transparent parts of images +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent parts of images"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(50, 0, 50, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#0f0'; +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + ctx.drawImage(response, 50, -50); + ctx.shadowColor = '#f00'; + ctx.drawImage(response, -50, -50); + _assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html new file mode 100644 index 00000000000..8f8fad7be44 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeX.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.offset.negativeX + + + + +

    2d.shadow.offset.negativeX

    +

    Shadows can be offset with negative x

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js new file mode 100644 index 00000000000..99081239e32 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeX.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.offset.negativeX +// Description:Shadows can be offset with negative x +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows can be offset with negative x"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = -50; +ctx.fillRect(50, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html new file mode 100644 index 00000000000..47c391087a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeY.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.offset.negativeY + + + + +

    2d.shadow.offset.negativeY

    +

    Shadows can be offset with negative y

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js new file mode 100644 index 00000000000..998e4ad16c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.negativeY.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.offset.negativeY +// Description:Shadows can be offset with negative y +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows can be offset with negative y"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = -25; +ctx.fillRect(0, 25, 100, 25); +_assertPixel(offscreenCanvas, 50,12, 0,255,0,255, "50,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,37, 0,255,0,255, "50,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html new file mode 100644 index 00000000000..d66414b672f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveX.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.offset.positiveX + + + + +

    2d.shadow.offset.positiveX

    +

    Shadows can be offset with positive x

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js new file mode 100644 index 00000000000..e00379fbe0a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveX.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.offset.positiveX +// Description:Shadows can be offset with positive x +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows can be offset with positive x"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = 50; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html new file mode 100644 index 00000000000..6914414e926 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveY.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.shadow.offset.positiveY + + + + +

    2d.shadow.offset.positiveY

    +

    Shadows can be offset with positive y

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js new file mode 100644 index 00000000000..e7df68975fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.offset.positiveY.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.offset.positiveY +// Description:Shadows can be offset with positive y +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows can be offset with positive y"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#0f0'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 25; +ctx.fillRect(0, 0, 100, 25); +_assertPixel(offscreenCanvas, 50,12, 0,255,0,255, "50,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,37, 0,255,0,255, "50,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.outside.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.outside.html new file mode 100644 index 00000000000..664e50938b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.outside.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.shadow.outside + + + + +

    2d.shadow.outside

    +

    Shadows of shapes outside the visible area can be offset onto the visible area

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.outside.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.outside.worker.js new file mode 100644 index 00000000000..6d23c72c8bb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.outside.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.outside +// Description:Shadows of shapes outside the visible area can be offset onto the visible area +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows of shapes outside the visible area can be offset onto the visible area"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = 100; +ctx.fillRect(-100, 0, 25, 50); +ctx.shadowOffsetX = -100; +ctx.fillRect(175, 0, 25, 50); +ctx.shadowOffsetX = 0; +ctx.shadowOffsetY = 100; +ctx.fillRect(25, -100, 50, 25); +ctx.shadowOffsetY = -100; +ctx.fillRect(25, 125, 50, 25); +_assertPixel(offscreenCanvas, 12,25, 0,255,0,255, "12,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 87,25, 0,255,0,255, "87,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,12, 0,255,0,255, "50,12", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,37, 0,255,0,255, "50,37", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html new file mode 100644 index 00000000000..371f32a4fe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.alpha.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.shadow.pattern.alpha + + + + +

    2d.shadow.pattern.alpha

    +

    Shadows are drawn correctly for partially-transparent fill patterns

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js new file mode 100644 index 00000000000..636253a7ab5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.alpha.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.pattern.alpha +// Description:Shadows are drawn correctly for partially-transparent fill patterns +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn correctly for partially-transparent fill patterns"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent50.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.basic.html new file mode 100644 index 00000000000..cab764857d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.basic.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.shadow.pattern.basic + + + + +

    2d.shadow.pattern.basic

    +

    Shadows are drawn for fill patterns

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js new file mode 100644 index 00000000000..e8b6033d390 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.basic.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.pattern.basic +// Description:Shadows are drawn for fill patterns +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for fill patterns"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html new file mode 100644 index 00000000000..315724a2b0d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.shadow.pattern.transparent.1 + + + + +

    2d.shadow.pattern.transparent.1

    +

    Shadows are not drawn for transparent fill patterns

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js new file mode 100644 index 00000000000..34002793153 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.1.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.pattern.transparent.1 +// Description:Shadows are not drawn for transparent fill patterns +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent fill patterns"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html new file mode 100644 index 00000000000..668e07f833b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.html @@ -0,0 +1,46 @@ + + +OffscreenCanvas test: 2d.shadow.pattern.transparent.2 + + + + +

    2d.shadow.pattern.transparent.2

    +

    Shadows are not drawn for transparent parts of fill patterns

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js new file mode 100644 index 00000000000..157fbe2a8db --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.pattern.transparent.2.worker.js @@ -0,0 +1,42 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.pattern.transparent.2 +// Description:Shadows are not drawn for transparent parts of fill patterns +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for transparent parts of fill patterns"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; +}); +promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + _assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); + _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + _assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); +}); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.basic.html new file mode 100644 index 00000000000..be66f3a9a92 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.basic.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.shadow.stroke.basic + + + + +

    2d.shadow.stroke.basic

    +

    Shadows are drawn for strokes

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js new file mode 100644 index 00000000000..e16536ded31 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.basic.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.stroke.basic +// Description:Shadows are drawn for strokes +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for strokes"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 50; +ctx.beginPath(); +ctx.lineWidth = 50; +ctx.moveTo(0, -25); +ctx.lineTo(100, -25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html new file mode 100644 index 00000000000..2c460fd70f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.shadow.stroke.cap.1 + + + + +

    2d.shadow.stroke.cap.1

    +

    Shadows are not drawn for areas outside stroke caps

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js new file mode 100644 index 00000000000..4c6a1aa4d4d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.1.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.stroke.cap.1 +// Description:Shadows are not drawn for areas outside stroke caps +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for areas outside stroke caps"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.shadowColor = '#f00'; +ctx.shadowOffsetY = 50; +ctx.beginPath(); +ctx.lineWidth = 50; +ctx.lineCap = 'butt'; +ctx.moveTo(-50, -25); +ctx.lineTo(0, -25); +ctx.moveTo(100, -25); +ctx.lineTo(150, -25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html new file mode 100644 index 00000000000..0e78c1ad32a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.shadow.stroke.cap.2 + + + + +

    2d.shadow.stroke.cap.2

    +

    Shadows are drawn for stroke caps

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js new file mode 100644 index 00000000000..0c3cae105ba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.cap.2.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.stroke.cap.2 +// Description:Shadows are drawn for stroke caps +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for stroke caps"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetY = 50; +ctx.beginPath(); +ctx.lineWidth = 50; +ctx.lineCap = 'square'; +ctx.moveTo(25, -25); +ctx.lineTo(75, -25); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,25, 0,255,0,255, "1,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,25, 0,255,0,255, "98,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html new file mode 100644 index 00000000000..04a6245686c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.1.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: 2d.shadow.stroke.join.1 + + + + +

    2d.shadow.stroke.join.1

    +

    Shadows are not drawn for areas outside stroke joins

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js new file mode 100644 index 00000000000..95837207894 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.1.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.stroke.join.1 +// Description:Shadows are not drawn for areas outside stroke joins +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are not drawn for areas outside stroke joins"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.shadowColor = '#f00'; +ctx.shadowOffsetX = 100; +ctx.lineWidth = 200; +ctx.lineJoin = 'bevel'; +ctx.beginPath(); +ctx.moveTo(-200, -50); +ctx.lineTo(-150, -50); +ctx.lineTo(-151, -100); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html new file mode 100644 index 00000000000..6629313baf7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.2.html @@ -0,0 +1,41 @@ + + +OffscreenCanvas test: 2d.shadow.stroke.join.2 + + + + +

    2d.shadow.stroke.join.2

    +

    Shadows are drawn for stroke joins

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js new file mode 100644 index 00000000000..8b89d7405cd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.2.worker.js @@ -0,0 +1,37 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.stroke.join.2 +// Description:Shadows are drawn for stroke joins +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for stroke joins"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(50, 0, 50, 50); +ctx.strokeStyle = '#f00'; +ctx.shadowColor = '#0f0'; +ctx.shadowOffsetX = 100; +ctx.lineWidth = 200; +ctx.lineJoin = 'miter'; +ctx.beginPath(); +ctx.moveTo(-200, -50); +ctx.lineTo(-150, -50); +ctx.lineTo(-151, -100); +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html new file mode 100644 index 00000000000..2fe623be5dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.3.html @@ -0,0 +1,40 @@ + + +OffscreenCanvas test: 2d.shadow.stroke.join.3 + + + + +

    2d.shadow.stroke.join.3

    +

    Shadows are drawn for stroke joins respecting miter limit

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js new file mode 100644 index 00000000000..a67d7706cc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.stroke.join.3.worker.js @@ -0,0 +1,36 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.stroke.join.3 +// Description:Shadows are drawn for stroke joins respecting miter limit +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows are drawn for stroke joins respecting miter limit"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.strokeStyle = '#f00'; +ctx.shadowColor = '#f00'; +ctx.shadowOffsetX = 100; +ctx.lineWidth = 200; +ctx.lineJoin = 'miter'; +ctx.miterLimit = 0.1; +ctx.beginPath(); +ctx.moveTo(-200, -50); +ctx.lineTo(-150, -50); +ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3) +ctx.stroke(); +_assertPixel(offscreenCanvas, 1,1, 0,255,0,255, "1,1", "0,255,0,255"); +_assertPixel(offscreenCanvas, 48,48, 0,255,0,255, "48,48", "0,255,0,255"); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,48, 0,255,0,255, "98,48", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.1.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.1.html new file mode 100644 index 00000000000..a879a3b9920 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.1.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.shadow.transform.1 + + + + +

    2d.shadow.transform.1

    +

    Shadows take account of transformations

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js new file mode 100644 index 00000000000..15389352979 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.1.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.transform.1 +// Description:Shadows take account of transformations +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadows take account of transformations"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#0f0'; +ctx.translate(100, 100); +ctx.fillRect(-100, -150, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.2.html b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.2.html new file mode 100644 index 00000000000..d2452b48ea8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.2.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.shadow.transform.2 + + + + +

    2d.shadow.transform.2

    +

    Shadow offsets are not affected by transformations

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js new file mode 100644 index 00000000000..bc9c7c8d3b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/shadows/2d.shadow.transform.2.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.shadow.transform.2 +// Description:Shadow offsets are not affected by transformations +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Shadow offsets are not affected by transformations"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.shadowOffsetY = 50; +ctx.shadowColor = '#0f0'; +ctx.rotate(Math.PI) +ctx.fillRect(-100, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html new file mode 100644 index 00000000000..a384e56f248 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.state.saverestore.bitmap + + + + +

    2d.state.saverestore.bitmap

    +

    save()/restore() does not affect the current bitmap

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js new file mode 100644 index 00000000000..be240a4ebfe --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.bitmap.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.bitmap +// Description:save()/restore() does not affect the current bitmap +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() does not affect the current bitmap"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.restore(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html new file mode 100644 index 00000000000..0b3a7eaf387 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.state.saverestore.clip + + + + +

    2d.state.saverestore.clip

    +

    save()/restore() affects the clipping path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js new file mode 100644 index 00000000000..cee7df08bde --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.clip.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.clip +// Description:save()/restore() affects the clipping path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() affects the clipping path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.rect(0, 0, 1, 1); +ctx.clip(); +ctx.restore(); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html new file mode 100644 index 00000000000..861312d0f45 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.fillStyle + + + + +

    2d.state.saverestore.fillStyle

    +

    save()/restore() works for fillStyle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js new file mode 100644 index 00000000000..a722dd041f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.fillStyle.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.fillStyle +// Description:save()/restore() works for fillStyle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for fillStyle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.fillStyle; +ctx.save(); +ctx.fillStyle = "#ff0000"; +ctx.restore(); +_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old"); + +// Also test that save() doesn't modify the values +ctx.fillStyle = "#ff0000"; +old = ctx.fillStyle; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against "#ff0000" +ctx.save(); +_assertSame(ctx.fillStyle, old, "ctx.fillStyle", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html new file mode 100644 index 00000000000..a24c3d560fb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.globalAlpha + + + + +

    2d.state.saverestore.globalAlpha

    +

    save()/restore() works for globalAlpha

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js new file mode 100644 index 00000000000..6432783c7dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalAlpha.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.globalAlpha +// Description:save()/restore() works for globalAlpha +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for globalAlpha"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.globalAlpha; +ctx.save(); +ctx.globalAlpha = 0.5; +ctx.restore(); +_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old"); + +// Also test that save() doesn't modify the values +ctx.globalAlpha = 0.5; +old = ctx.globalAlpha; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against 0.5 +ctx.save(); +_assertSame(ctx.globalAlpha, old, "ctx.globalAlpha", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html new file mode 100644 index 00000000000..5c512fbdda0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.globalCompositeOperation + + + + +

    2d.state.saverestore.globalCompositeOperation

    +

    save()/restore() works for globalCompositeOperation

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js new file mode 100644 index 00000000000..e06c99462bc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.globalCompositeOperation.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.globalCompositeOperation +// Description:save()/restore() works for globalCompositeOperation +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for globalCompositeOperation"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.globalCompositeOperation; +ctx.save(); +ctx.globalCompositeOperation = "copy"; +ctx.restore(); +_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old"); + +// Also test that save() doesn't modify the values +ctx.globalCompositeOperation = "copy"; +old = ctx.globalCompositeOperation; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against "copy" +ctx.save(); +_assertSame(ctx.globalCompositeOperation, old, "ctx.globalCompositeOperation", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html new file mode 100644 index 00000000000..a0e2457436a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.lineCap + + + + +

    2d.state.saverestore.lineCap

    +

    save()/restore() works for lineCap

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js new file mode 100644 index 00000000000..fa967743a02 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineCap.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.lineCap +// Description:save()/restore() works for lineCap +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for lineCap"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.lineCap; +ctx.save(); +ctx.lineCap = "round"; +ctx.restore(); +_assertSame(ctx.lineCap, old, "ctx.lineCap", "old"); + +// Also test that save() doesn't modify the values +ctx.lineCap = "round"; +old = ctx.lineCap; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against "round" +ctx.save(); +_assertSame(ctx.lineCap, old, "ctx.lineCap", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html new file mode 100644 index 00000000000..75c8a94c607 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.lineJoin + + + + +

    2d.state.saverestore.lineJoin

    +

    save()/restore() works for lineJoin

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js new file mode 100644 index 00000000000..1a4a377f504 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineJoin.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.lineJoin +// Description:save()/restore() works for lineJoin +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for lineJoin"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.lineJoin; +ctx.save(); +ctx.lineJoin = "round"; +ctx.restore(); +_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old"); + +// Also test that save() doesn't modify the values +ctx.lineJoin = "round"; +old = ctx.lineJoin; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against "round" +ctx.save(); +_assertSame(ctx.lineJoin, old, "ctx.lineJoin", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html new file mode 100644 index 00000000000..565fc63e38a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.lineWidth + + + + +

    2d.state.saverestore.lineWidth

    +

    save()/restore() works for lineWidth

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js new file mode 100644 index 00000000000..b04d4bb01b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.lineWidth.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.lineWidth +// Description:save()/restore() works for lineWidth +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for lineWidth"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.lineWidth; +ctx.save(); +ctx.lineWidth = 0.5; +ctx.restore(); +_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old"); + +// Also test that save() doesn't modify the values +ctx.lineWidth = 0.5; +old = ctx.lineWidth; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against 0.5 +ctx.save(); +_assertSame(ctx.lineWidth, old, "ctx.lineWidth", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html new file mode 100644 index 00000000000..2173325e248 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.miterLimit + + + + +

    2d.state.saverestore.miterLimit

    +

    save()/restore() works for miterLimit

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js new file mode 100644 index 00000000000..0591a7b597e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.miterLimit.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.miterLimit +// Description:save()/restore() works for miterLimit +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for miterLimit"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.miterLimit; +ctx.save(); +ctx.miterLimit = 0.5; +ctx.restore(); +_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old"); + +// Also test that save() doesn't modify the values +ctx.miterLimit = 0.5; +old = ctx.miterLimit; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against 0.5 +ctx.save(); +_assertSame(ctx.miterLimit, old, "ctx.miterLimit", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html new file mode 100644 index 00000000000..2c48b99ee96 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.state.saverestore.path + + + + +

    2d.state.saverestore.path

    +

    save()/restore() does not affect the current path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js new file mode 100644 index 00000000000..83833e595dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.path.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.path +// Description:save()/restore() does not affect the current path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() does not affect the current path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.rect(0, 0, 100, 50); +ctx.restore(); +ctx.fillStyle = '#0f0'; +ctx.fill(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html new file mode 100644 index 00000000000..0f4fccc9484 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.shadowBlur + + + + +

    2d.state.saverestore.shadowBlur

    +

    save()/restore() works for shadowBlur

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js new file mode 100644 index 00000000000..c24e6438d79 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowBlur.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.shadowBlur +// Description:save()/restore() works for shadowBlur +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for shadowBlur"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.shadowBlur; +ctx.save(); +ctx.shadowBlur = 5; +ctx.restore(); +_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old"); + +// Also test that save() doesn't modify the values +ctx.shadowBlur = 5; +old = ctx.shadowBlur; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against 5 +ctx.save(); +_assertSame(ctx.shadowBlur, old, "ctx.shadowBlur", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html new file mode 100644 index 00000000000..086ba3003e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.shadowColor + + + + +

    2d.state.saverestore.shadowColor

    +

    save()/restore() works for shadowColor

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js new file mode 100644 index 00000000000..94e25bb908a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowColor.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.shadowColor +// Description:save()/restore() works for shadowColor +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for shadowColor"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.shadowColor; +ctx.save(); +ctx.shadowColor = "#ff0000"; +ctx.restore(); +_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old"); + +// Also test that save() doesn't modify the values +ctx.shadowColor = "#ff0000"; +old = ctx.shadowColor; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against "#ff0000" +ctx.save(); +_assertSame(ctx.shadowColor, old, "ctx.shadowColor", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html new file mode 100644 index 00000000000..f211a0348a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.shadowOffsetX + + + + +

    2d.state.saverestore.shadowOffsetX

    +

    save()/restore() works for shadowOffsetX

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js new file mode 100644 index 00000000000..373afa09f61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetX.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.shadowOffsetX +// Description:save()/restore() works for shadowOffsetX +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for shadowOffsetX"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.shadowOffsetX; +ctx.save(); +ctx.shadowOffsetX = 5; +ctx.restore(); +_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old"); + +// Also test that save() doesn't modify the values +ctx.shadowOffsetX = 5; +old = ctx.shadowOffsetX; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against 5 +ctx.save(); +_assertSame(ctx.shadowOffsetX, old, "ctx.shadowOffsetX", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html new file mode 100644 index 00000000000..1c1013b8806 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.shadowOffsetY + + + + +

    2d.state.saverestore.shadowOffsetY

    +

    save()/restore() works for shadowOffsetY

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js new file mode 100644 index 00000000000..f883a935f87 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.shadowOffsetY.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.shadowOffsetY +// Description:save()/restore() works for shadowOffsetY +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for shadowOffsetY"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.shadowOffsetY; +ctx.save(); +ctx.shadowOffsetY = 5; +ctx.restore(); +_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old"); + +// Also test that save() doesn't modify the values +ctx.shadowOffsetY = 5; +old = ctx.shadowOffsetY; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against 5 +ctx.save(); +_assertSame(ctx.shadowOffsetY, old, "ctx.shadowOffsetY", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html new file mode 100644 index 00000000000..6e74825f669 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: 2d.state.saverestore.stack + + + + +

    2d.state.saverestore.stack

    +

    save()/restore() can be nested as a stack

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js new file mode 100644 index 00000000000..5a0f74b8ab9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stack.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.stack +// Description:save()/restore() can be nested as a stack +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() can be nested as a stack"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.lineWidth = 1; +ctx.save(); +ctx.lineWidth = 2; +ctx.save(); +ctx.lineWidth = 3; +_assertSame(ctx.lineWidth, 3, "ctx.lineWidth", "3"); +ctx.restore(); +_assertSame(ctx.lineWidth, 2, "ctx.lineWidth", "2"); +ctx.restore(); +_assertSame(ctx.lineWidth, 1, "ctx.lineWidth", "1"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html new file mode 100644 index 00000000000..4097ae9ee0c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.state.saverestore.stackdepth + + + + +

    2d.state.saverestore.stackdepth

    +

    save()/restore() stack depth is not unreasonably limited

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js new file mode 100644 index 00000000000..58a28e0ec88 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.stackdepth.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.stackdepth +// Description:save()/restore() stack depth is not unreasonably limited +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() stack depth is not unreasonably limited"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var limit = 512; +for (var i = 1; i < limit; ++i) +{ + ctx.save(); + ctx.lineWidth = i; +} +for (var i = limit-1; i > 0; --i) +{ + _assertSame(ctx.lineWidth, i, "ctx.lineWidth", "i"); + ctx.restore(); +} + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html new file mode 100644 index 00000000000..13c0c9f865c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.state.saverestore.strokeStyle + + + + +

    2d.state.saverestore.strokeStyle

    +

    save()/restore() works for strokeStyle

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js new file mode 100644 index 00000000000..1f149ed99dc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.strokeStyle.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.strokeStyle +// Description:save()/restore() works for strokeStyle +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() works for strokeStyle"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Test that restore() undoes any modifications +var old = ctx.strokeStyle; +ctx.save(); +ctx.strokeStyle = "#ff0000"; +ctx.restore(); +_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old"); + +// Also test that save() doesn't modify the values +ctx.strokeStyle = "#ff0000"; +old = ctx.strokeStyle; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against "#ff0000" +ctx.save(); +_assertSame(ctx.strokeStyle, old, "ctx.strokeStyle", "old"); +ctx.restore(); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html new file mode 100644 index 00000000000..785c128c249 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.state.saverestore.transformation + + + + +

    2d.state.saverestore.transformation

    +

    save()/restore() affects the current transformation matrix

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js new file mode 100644 index 00000000000..e5ce45e3cdf --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.transformation.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.transformation +// Description:save()/restore() affects the current transformation matrix +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("save()/restore() affects the current transformation matrix"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.translate(200, 0); +ctx.restore(); +ctx.fillStyle = '#f00'; +ctx.fillRect(-200, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html new file mode 100644 index 00000000000..46aa29e7269 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.state.saverestore.underflow + + + + +

    2d.state.saverestore.underflow

    +

    restore() with an empty stack has no effect

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js new file mode 100644 index 00000000000..150a31cf052 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-canvas-state/2d.state.saverestore.underflow.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.state.saverestore.underflow +// Description:restore() with an empty stack has no effect +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("restore() with an empty stack has no effect"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +for (var i = 0; i < 16; ++i) + ctx.restore(); +ctx.lineWidth = 0.5; +ctx.restore(); +_assertSame(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html new file mode 100644 index 00000000000..17a986c2333 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.canvas.readonly + + + + +

    2d.canvas.readonly

    +

    canvas is readonly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js new file mode 100644 index 00000000000..fdd99f86eb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.readonly.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.canvas.readonly +// Description:canvas is readonly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("canvas is readonly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +var d = ctx.canvas; +_assertDifferent(offscreenCanvas2, d, "offscreenCanvas2", "d"); +ctx.canvas = offscreenCanvas2; +_assertSame(ctx.canvas, d, "ctx.canvas", "d"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html new file mode 100644 index 00000000000..1db640949b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: 2d.canvas.reference + + + + +

    2d.canvas.reference

    +

    canvas refers back to its canvas

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js new file mode 100644 index 00000000000..ff2666bd3da --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.canvas.reference.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.canvas.reference +// Description:canvas refers back to its canvas +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("canvas refers back to its canvas"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(ctx.canvas, offscreenCanvas, "ctx.canvas", "offscreenCanvas"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html new file mode 100644 index 00000000000..6011f205ed1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.getcontext.exists + + + + +

    2d.getcontext.exists

    +

    The 2D context is implemented

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js new file mode 100644 index 00000000000..bae8080dd79 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.exists.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.getcontext.exists +// Description:The 2D context is implemented +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("The 2D context is implemented"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +_assertDifferent(offscreenCanvas2.getContext('2d'), null, "offscreenCanvas2.getContext('2d')", "null"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html new file mode 100644 index 00000000000..24a68e4914d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.getcontext.extraargs + + + + +

    2d.getcontext.extraargs

    +

    The 2D context ignores extra getContext arguments

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js new file mode 100644 index 00000000000..933aa249d63 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.extraargs.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.getcontext.extraargs +// Description:The 2D context ignores extra getContext arguments +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("The 2D context ignores extra getContext arguments"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +_assertDifferent(offscreenCanvas2.getContext('2d', false, {}, [], 1, "2"), null, "offscreenCanvas2.getContext('2d', false, {}, [], 1, \"2\")", "null"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html new file mode 100644 index 00000000000..8a948472455 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: 2d.getcontext.shared + + + + +

    2d.getcontext.shared

    +

    getContext('2d') returns objects which share canvas state

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js new file mode 100644 index 00000000000..c3ec6647da6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.shared.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.getcontext.shared +// Description:getContext('2d') returns objects which share canvas state +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getContext('2d') returns objects which share canvas state"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var ctx2 = offscreenCanvas.getContext('2d'); +ctx.fillStyle = '#f00'; +ctx2.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html new file mode 100644 index 00000000000..8128c6ea9d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: 2d.getcontext.unique + + + + +

    2d.getcontext.unique

    +

    getContext('2d') returns the same object

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js new file mode 100644 index 00000000000..3e4d6c47321 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/2d.getcontext.unique.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.getcontext.unique +// Description:getContext('2d') returns the same object +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getContext('2d') returns the same object"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +_assertSame(offscreenCanvas2.getContext('2d'), offscreenCanvas2.getContext('2d'), "offscreenCanvas2.getContext('2d')", "offscreenCanvas2.getContext('2d')"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html new file mode 100644 index 00000000000..dfb7b303076 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.arguments.missing + + + + +

    context.arguments.missing

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js new file mode 100644 index 00000000000..467b78b0a93 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.arguments.missing.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.arguments.missing +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext(); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html new file mode 100644 index 00000000000..e579b3a71f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.casesensitive.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.casesensitive + + + + +

    context.casesensitive

    +

    Context name "2D" is unrecognised; matching is case sensitive

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js new file mode 100644 index 00000000000..02aa32fa969 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.casesensitive.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.casesensitive +// Description:Context name "2D" is unrecognised; matching is case sensitive +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Context name \"2D\" is unrecognised; matching is case sensitive"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext('2D'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.emptystring.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.emptystring.html new file mode 100644 index 00000000000..dc057508c2c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.emptystring.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.emptystring + + + + +

    context.emptystring

    +

    getContext with empty string returns null

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js new file mode 100644 index 00000000000..ea308c55199 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.emptystring.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.emptystring +// Description:getContext with empty string returns null +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getContext with empty string returns null"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext(""); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html new file mode 100644 index 00000000000..89c9fa3eb38 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.unrecognised.badname + + + + +

    context.unrecognised.badname

    +

    getContext with unrecognised context name returns null

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js new file mode 100644 index 00000000000..87ffdcd273b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badname.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.unrecognised.badname +// Description:getContext with unrecognised context name returns null +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("getContext with unrecognised context name returns null"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext('This is not an implemented context in any real browser'); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html new file mode 100644 index 00000000000..48061561bfd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.unrecognised.badsuffix + + + + +

    context.unrecognised.badsuffix

    +

    Context name "2d" plus a suffix is unrecognised

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js new file mode 100644 index 00000000000..13833f9102d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.badsuffix.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.unrecognised.badsuffix +// Description:Context name "2d" plus a suffix is unrecognised +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Context name \"2d\" plus a suffix is unrecognised"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext("2d#"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html new file mode 100644 index 00000000000..8bf98d41047 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.unrecognised.nullsuffix + + + + +

    context.unrecognised.nullsuffix

    +

    Context name "2d" plus a "\0" suffix is unrecognised

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js new file mode 100644 index 00000000000..fc677f83d82 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.nullsuffix.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.unrecognised.nullsuffix +// Description:Context name "2d" plus a "\0" suffix is unrecognised +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Context name \"2d\" plus a \"\\0\" suffix is unrecognised"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext("2d\0"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html new file mode 100644 index 00000000000..c657c896ee4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: context.unrecognised.unicode + + + + +

    context.unrecognised.unicode

    +

    Context name which kind of looks like "2d" is unrecognised

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js new file mode 100644 index 00000000000..36befd94a41 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/context.unrecognised.unicode.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:context.unrecognised.unicode +// Description:Context name which kind of looks like "2d" is unrecognised +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Context name which kind of looks like \"2d\" is unrecognised"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var offscreenCanvas2 = new OffscreenCanvas(100, 50); +assert_throws(new TypeError(), function() { offscreenCanvas2.getContext("2\uFF44"); }); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.colour.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.colour.html new file mode 100644 index 00000000000..f033e4d2603 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.colour.html @@ -0,0 +1,24 @@ + + +OffscreenCanvas test: initial.colour + + + + +

    initial.colour

    +

    Initial state is transparent black

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js new file mode 100644 index 00000000000..f87861f7f09 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.colour.worker.js @@ -0,0 +1,20 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.colour +// Description:Initial state is transparent black +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Initial state is transparent black"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertPixel(offscreenCanvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html new file mode 100644 index 00000000000..13ef0c140f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.html @@ -0,0 +1,85 @@ + + +OffscreenCanvas test: initial.reset.2dstate + + + + +

    initial.reset.2dstate

    +

    Resetting the canvas state resets 2D state variables

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js new file mode 100644 index 00000000000..7eab7fbba1e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.2dstate.worker.js @@ -0,0 +1,81 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.2dstate +// Description:Resetting the canvas state resets 2D state variables +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Resetting the canvas state resets 2D state variables"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 100; +var default_val; + +default_val = ctx.strokeStyle; +ctx.strokeStyle = "#ff0000"; +offscreenCanvas.width = 100; +_assertSame(ctx.strokeStyle, default_val, "ctx.strokeStyle", "default_val"); + +default_val = ctx.fillStyle; +ctx.fillStyle = "#ff0000"; +offscreenCanvas.width = 100; +_assertSame(ctx.fillStyle, default_val, "ctx.fillStyle", "default_val"); + +default_val = ctx.globalAlpha; +ctx.globalAlpha = 0.5; +offscreenCanvas.width = 100; +_assertSame(ctx.globalAlpha, default_val, "ctx.globalAlpha", "default_val"); + +default_val = ctx.lineWidth; +ctx.lineWidth = 0.5; +offscreenCanvas.width = 100; +_assertSame(ctx.lineWidth, default_val, "ctx.lineWidth", "default_val"); + +default_val = ctx.lineCap; +ctx.lineCap = "round"; +offscreenCanvas.width = 100; +_assertSame(ctx.lineCap, default_val, "ctx.lineCap", "default_val"); + +default_val = ctx.lineJoin; +ctx.lineJoin = "round"; +offscreenCanvas.width = 100; +_assertSame(ctx.lineJoin, default_val, "ctx.lineJoin", "default_val"); + +default_val = ctx.miterLimit; +ctx.miterLimit = 0.5; +offscreenCanvas.width = 100; +_assertSame(ctx.miterLimit, default_val, "ctx.miterLimit", "default_val"); + +default_val = ctx.shadowOffsetX; +ctx.shadowOffsetX = 5; +offscreenCanvas.width = 100; +_assertSame(ctx.shadowOffsetX, default_val, "ctx.shadowOffsetX", "default_val"); + +default_val = ctx.shadowOffsetY; +ctx.shadowOffsetY = 5; +offscreenCanvas.width = 100; +_assertSame(ctx.shadowOffsetY, default_val, "ctx.shadowOffsetY", "default_val"); + +default_val = ctx.shadowBlur; +ctx.shadowBlur = 5; +offscreenCanvas.width = 100; +_assertSame(ctx.shadowBlur, default_val, "ctx.shadowBlur", "default_val"); + +default_val = ctx.shadowColor; +ctx.shadowColor = "#ff0000"; +offscreenCanvas.width = 100; +_assertSame(ctx.shadowColor, default_val, "ctx.shadowColor", "default_val"); + +default_val = ctx.globalCompositeOperation; +ctx.globalCompositeOperation = "copy"; +offscreenCanvas.width = 100; +_assertSame(ctx.globalCompositeOperation, default_val, "ctx.globalCompositeOperation", "default_val"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html new file mode 100644 index 00000000000..076b3e89d15 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: initial.reset.clip + + + + +

    initial.reset.clip

    +

    Resetting the canvas state resets the current clip region

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js new file mode 100644 index 00000000000..83a1a68fb1b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.clip.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.clip +// Description:Resetting the canvas state resets the current clip region +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Resetting the canvas state resets the current clip region"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 100; +ctx.rect(0, 0, 1, 1); +ctx.clip(); +offscreenCanvas.width = 100; +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html new file mode 100644 index 00000000000..3b6ed013ffc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.different.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: initial.reset.different + + + + +

    initial.reset.different

    +

    Changing size resets canvas to transparent black

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js new file mode 100644 index 00000000000..8bf57849d78 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.different.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.different +// Description:Changing size resets canvas to transparent black +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Changing size resets canvas to transparent black"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +offscreenCanvas.width = 50; +_assertPixel(offscreenCanvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html new file mode 100644 index 00000000000..b0318901c88 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: initial.reset.gradient + + + + +

    initial.reset.gradient

    +

    Resetting the canvas state does not invalidate any existing gradients

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js new file mode 100644 index 00000000000..70a3c997585 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.gradient.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.gradient +// Description:Resetting the canvas state does not invalidate any existing gradients +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Resetting the canvas state does not invalidate any existing gradients"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 50; +var g = ctx.createLinearGradient(0, 0, 100, 0); +g.addColorStop(0, '#0f0'); +g.addColorStop(1, '#0f0'); +offscreenCanvas.width = 100; +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = g; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html new file mode 100644 index 00000000000..e4de133884b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.path.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: initial.reset.path + + + + +

    initial.reset.path

    +

    Resetting the canvas state resets the current path

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js new file mode 100644 index 00000000000..a0510f6fe01 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.path.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.path +// Description:Resetting the canvas state resets the current path +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Resetting the canvas state resets the current path"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 100; +ctx.rect(0, 0, 100, 50); +offscreenCanvas.width = 100; +ctx.fillStyle = '#f00'; +ctx.fill(); +_assertPixel(offscreenCanvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html new file mode 100644 index 00000000000..646b399a825 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.html @@ -0,0 +1,33 @@ + + +OffscreenCanvas test: initial.reset.pattern + + + + +

    initial.reset.pattern

    +

    Resetting the canvas state does not invalidate any existing patterns

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js new file mode 100644 index 00000000000..51b1dea97d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.pattern.worker.js @@ -0,0 +1,29 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.pattern +// Description:Resetting the canvas state does not invalidate any existing patterns +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Resetting the canvas state does not invalidate any existing patterns"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 30; +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 30, 50); +var p = ctx.createPattern(offscreenCanvas, 'repeat-x'); +offscreenCanvas.width = 100; +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = p; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html new file mode 100644 index 00000000000..0a2edf4b6d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.same.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: initial.reset.same + + + + +

    initial.reset.same

    +

    Setting size (not changing the value) resets canvas to transparent black

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js new file mode 100644 index 00000000000..dedbc551508 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.same.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.same +// Description:Setting size (not changing the value) resets canvas to transparent black +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting size (not changing the value) resets canvas to transparent black"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 100; +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 50, 50); +_assertPixel(offscreenCanvas, 20,20, 255,0,0,255, "20,20", "255,0,0,255"); +offscreenCanvas.width = 100; +_assertPixel(offscreenCanvas, 20,20, 0,0,0,0, "20,20", "0,0,0,0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html new file mode 100644 index 00000000000..346283fd139 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: initial.reset.transform + + + + +

    initial.reset.transform

    +

    Resetting the canvas state resets the current transformation matrix

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js new file mode 100644 index 00000000000..f2487fbf7b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/initial.reset.transform.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:initial.reset.transform +// Description:Resetting the canvas state resets the current transformation matrix +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Resetting the canvas state resets the current transformation matrix"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 100; +ctx.scale(0.1, 0.1); +offscreenCanvas.width = 100; +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 20,20, 0,255,0,255, "20,20", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html new file mode 100644 index 00000000000..0377410e776 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.html @@ -0,0 +1,43 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html new file mode 100644 index 00000000000..3268021b28c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html @@ -0,0 +1,88 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html new file mode 100644 index 00000000000..c13010715e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.html @@ -0,0 +1,43 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js new file mode 100644 index 00000000000..7c773e094de --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.constructor.worker.js @@ -0,0 +1,45 @@ +// spec link: https://html.spec.whatwg.org/#dom-offscreencanvas + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t1 = async_test("Test that calling OffscreenCanvas's constructor generates correct width and height."); +t1.step(function() { + var offscreenCanvas = new OffscreenCanvas(100, 50); + assert_equals(offscreenCanvas.width, 100); + assert_equals(offscreenCanvas.height, 50); + + offscreenCanvas.width = 50; + offscreenCanvas.height = 100; + assert_equals(offscreenCanvas.width, 50); + assert_equals(offscreenCanvas.height, 100); + t1.done(); +}); + +var t2 = async_test("Test that OffscreenCanvas constructor handles invalid arguments correctly in a worker"); +t2.step(function() { + var offscreenCanvas1 = new OffscreenCanvas(1, 1); + + offscreenCanvas1.width = null; + offscreenCanvas1.height = null; + assert_equals(offscreenCanvas1.width, 0); + assert_equals(offscreenCanvas1.height, 0); + + assert_throws(new TypeError(), function() { new OffscreenCanvas(-1, -1); }); + + var offscreenCanvas2 = new OffscreenCanvas(null, null); + assert_equals(offscreenCanvas2.width, 0); + assert_equals(offscreenCanvas2.height, 0); + + assert_throws(new TypeError(), function() { offscreenCanvas2.width = -1; }); + assert_throws(new TypeError(), function() { offscreenCanvas2.height = -1; }); + + var obj = {Name: "John Doe", Age: 30}; + assert_throws(new TypeError(), function() { offscreenCanvas2.width = obj; }); + assert_throws(new TypeError(), function() { offscreenCanvas2.height = obj; }); + assert_throws(new TypeError(), function() { new OffscreenCanvas(obj, obj); }); + t2.done(); +}); + +done(); + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html new file mode 100644 index 00000000000..fce08e56a77 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html @@ -0,0 +1,148 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html new file mode 100644 index 00000000000..a6c4b4b7f93 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html @@ -0,0 +1,307 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html new file mode 100644 index 00000000000..65f6391d357 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html @@ -0,0 +1,80 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js new file mode 100644 index 00000000000..008e04e750e --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.worker.js @@ -0,0 +1,77 @@ +// spec link: https://html.spec.whatwg.org/#dom-offscreencanvas-getcontext + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(1, 1); + assert_throws(new TypeError(), function() { offscreenCanvas.getContext('3d'); }); +}, "Test that getContext with un-supported string throws a TypeError."); + +test(function() { + var offscreenCanvas1 = new OffscreenCanvas(1, 1); + var ctx1 = offscreenCanvas1.getContext('2d'); + assert_true(ctx1 instanceof OffscreenCanvasRenderingContext2D); + + var offscreenCanvas2 = new OffscreenCanvas(1, 1); + var ctx2 = offscreenCanvas2.getContext('webgl'); + assert_true(ctx2 instanceof WebGLRenderingContext); + + var offscreenCanvas3 = new OffscreenCanvas(1, 1); + var ctx3 = offscreenCanvas3.getContext('webgl2'); + assert_true(ctx3 instanceof WebGL2RenderingContext); +}, "Test that getContext with supported string returns correct results"); + +test(function() { + var offscreenCanvas1 = new OffscreenCanvas(1, 1); + var ctx1 = offscreenCanvas1.getContext('2d'); + var ctx2 = offscreenCanvas1.getContext('webgl'); + assert_equals(ctx2, null); + + var offscreenCanvas2 = new OffscreenCanvas(1, 1); + var ctx3 = offscreenCanvas2.getContext('webgl'); + var ctx4 = offscreenCanvas2.getContext('2d'); + assert_equals(ctx4, null); +}, "Test that getContext twice with different context type returns null the second time"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(1, 2); + var ctx = offscreenCanvas.getContext('2d'); + var dstCanvas = ctx.canvas; + assert_equals(dstCanvas.width, 1); + assert_equals(dstCanvas.height, 2); +}, "Test that 2dcontext.canvas should return the original OffscreenCanvas"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(1, 2); + var ctx = offscreenCanvas.getContext('webgl'); + var dstCanvas = ctx.canvas; + assert_equals(dstCanvas.width, 1); + assert_equals(dstCanvas.height, 2); +}, "Test that webglcontext.canvas should return the original OffscreenCanvas"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(10, 10); + var ctx = offscreenCanvas.getContext('2d', {alpha: false}); + ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(offscreenCanvas, 5,5, 0,127,0,255, "5,5", "0,127,0,255", 2); +}, "Test that OffscreenCanvasRenderingContext2D with alpha disabled makes the OffscreenCanvas opaque"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(10, 10); + var ctx = offscreenCanvas.getContext('2d', {alpha: true}); + ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, "5,5", "0,255,0,127", 2); +}, "Test that OffscreenCanvasRenderingContext2D with alpha enabled preserves the alpha"); + +test(function() { + var offscreenCanvas = new OffscreenCanvas(10, 10); + var ctx = offscreenCanvas.getContext('2d'); + ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.fillRect(0, 0, 10, 10); + _assertPixelApprox(offscreenCanvas, 5,5, 0,255,0,127, "5,5", "0,255,0,127", 2); +}, "Test that 'alpha' context creation attribute is true by default"); + +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html new file mode 100644 index 00000000000..36fef6f498f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.html @@ -0,0 +1,112 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html new file mode 100644 index 00000000000..bd284905743 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfer.to.imagebitmap.w.html @@ -0,0 +1,200 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html new file mode 100644 index 00000000000..433dd45f837 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.html @@ -0,0 +1,84 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html new file mode 100644 index 00000000000..ec8d05a4ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen.w.html @@ -0,0 +1,76 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html new file mode 100644 index 00000000000..f32309fc1bb --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.html @@ -0,0 +1,83 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html new file mode 100644 index 00000000000..506eccca449 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.transferrable.w.html @@ -0,0 +1,141 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html new file mode 100644 index 00000000000..b5fa3c0f115 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.default.html @@ -0,0 +1,25 @@ + + +OffscreenCanvas test: size.attributes.default + + + + +

    size.attributes.default

    +

    Default width/height when attributes are missing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js new file mode 100644 index 00000000000..70bb3a2c4ce --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.default.worker.js @@ -0,0 +1,21 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.default +// Description:Default width/height when attributes are missing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Default width/height when attributes are missing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html new file mode 100644 index 00000000000..c6728cd069f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.html @@ -0,0 +1,39 @@ + + +OffscreenCanvas test: size.attributes.idl + + + + +

    size.attributes.idl

    +

    Getting/setting width/height IDL attributes

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html new file mode 100644 index 00000000000..34bcef3d294 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.idl.set.zero + + + + +

    size.attributes.idl.set.zero

    +

    Setting width/height IDL attributes to 0

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js new file mode 100644 index 00000000000..d321095b496 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.set.zero.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.idl.set.zero +// Description:Setting width/height IDL attributes to 0 +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting width/height IDL attributes to 0"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 0; +offscreenCanvas.height = 0; +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js new file mode 100644 index 00000000000..dc79f017540 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.idl.worker.js @@ -0,0 +1,35 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.idl +// Description:Getting/setting width/height IDL attributes +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Getting/setting width/height IDL attributes"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = "100"; +offscreenCanvas.height = "100"; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); +offscreenCanvas.width = "+1.5e2"; +offscreenCanvas.height = "0x96"; +_assertSame(offscreenCanvas.width, 150, "offscreenCanvas.width", "150"); +_assertSame(offscreenCanvas.height, 150, "offscreenCanvas.height", "150"); +offscreenCanvas.width = 301.999; +offscreenCanvas.height = 301.001; +_assertSame(offscreenCanvas.width, 301, "offscreenCanvas.width", "301"); +_assertSame(offscreenCanvas.height, 301, "offscreenCanvas.height", "301"); +offscreenCanvas.width = "400x"; +offscreenCanvas.height = "foo"; +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html new file mode 100644 index 00000000000..b6ca53426a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.decimal + + + + +

    size.attributes.parse.decimal

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js new file mode 100644 index 00000000000..134ee395e4c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.decimal.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.decimal +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '100.999'; +offscreenCanvas.height = '100.999'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html new file mode 100644 index 00000000000..dd248f3a1ad --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.em + + + + +

    size.attributes.parse.em

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js new file mode 100644 index 00000000000..753db9a15e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.em.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.em +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '100em'; +offscreenCanvas.height = '100em'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html new file mode 100644 index 00000000000..9134ec0a919 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.empty + + + + +

    size.attributes.parse.empty

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js new file mode 100644 index 00000000000..940a89a0255 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.empty.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.empty +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = ''; +offscreenCanvas.height = ''; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html new file mode 100644 index 00000000000..0611080578f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.exp + + + + +

    size.attributes.parse.exp

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js new file mode 100644 index 00000000000..17300f556b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.exp.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.exp +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '100e1'; +offscreenCanvas.height = '100e1'; +_assertSame(offscreenCanvas.width, 1000.0, "offscreenCanvas.width", "1000.0"); +_assertSame(offscreenCanvas.height, 1000.0, "offscreenCanvas.height", "1000.0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html new file mode 100644 index 00000000000..fed86d96c5b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.hex + + + + +

    size.attributes.parse.hex

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js new file mode 100644 index 00000000000..76b9763e714 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.hex.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.hex +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '0x100'; +offscreenCanvas.height = '0x100'; +_assertSame(offscreenCanvas.width, 256, "offscreenCanvas.width", "256"); +_assertSame(offscreenCanvas.height, 256, "offscreenCanvas.height", "256"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html new file mode 100644 index 00000000000..6a2988718c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.junk + + + + +

    size.attributes.parse.junk

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js new file mode 100644 index 00000000000..96301e2e8a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.junk.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.junk +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '#!?'; +offscreenCanvas.height = '#!?'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html new file mode 100644 index 00000000000..c4981aa0ca1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.minus + + + + +

    size.attributes.parse.minus

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js new file mode 100644 index 00000000000..82a4de47d18 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.minus.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.minus +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '-100'; +offscreenCanvas.height = '-100'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html new file mode 100644 index 00000000000..fd6edd57e48 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.octal + + + + +

    size.attributes.parse.octal

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js new file mode 100644 index 00000000000..0c3bbc175f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.octal.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.octal +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '0100'; +offscreenCanvas.height = '0100'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html new file mode 100644 index 00000000000..ccfa41df635 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.onlyspace + + + + +

    size.attributes.parse.onlyspace

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js new file mode 100644 index 00000000000..ec52619cdd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.onlyspace +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = ' '; +offscreenCanvas.height = ' '; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html new file mode 100644 index 00000000000..14463560c50 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.percent + + + + +

    size.attributes.parse.percent

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js new file mode 100644 index 00000000000..83fda7b94a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.percent.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.percent +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '100%'; +offscreenCanvas.height = '100%'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html new file mode 100644 index 00000000000..c4bc0299590 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.plus + + + + +

    size.attributes.parse.plus

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js new file mode 100644 index 00000000000..dee10412809 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.plus.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.plus +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '+100'; +offscreenCanvas.height = '+100'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html new file mode 100644 index 00000000000..1bbfdea3cde --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.space + + + + +

    size.attributes.parse.space

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js new file mode 100644 index 00000000000..a0da9ce8d01 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.space.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.space +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = ' 100'; +offscreenCanvas.height = ' 100'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html new file mode 100644 index 00000000000..f68e0fa94c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.trailingjunk + + + + +

    size.attributes.parse.trailingjunk

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js new file mode 100644 index 00000000000..8e3fd569f74 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.trailingjunk +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '100#!?'; +offscreenCanvas.height = '100#!?'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html new file mode 100644 index 00000000000..3046f3d0127 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.whitespace + + + + +

    size.attributes.parse.whitespace

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js new file mode 100644 index 00000000000..5e5261d6076 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.whitespace.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.whitespace +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = ' 100'; +offscreenCanvas.height = ' 100'; +_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); +_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html new file mode 100644 index 00000000000..4c358c0bba7 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.parse.zero + + + + +

    size.attributes.parse.zero

    +

    Parsing of non-negative integers

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js new file mode 100644 index 00000000000..f3deb485cb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.parse.zero.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.parse.zero +// Description:Parsing of non-negative integers +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Parsing of non-negative integers"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = '0'; +offscreenCanvas.height = '0'; +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html new file mode 100644 index 00000000000..b1fc9b9b838 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.reflect.setidl + + + + +

    size.attributes.reflect.setidl

    +

    Setting IDL attributes updates IDL and content attributes

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js new file mode 100644 index 00000000000..eb2a4288118 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidl.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.reflect.setidl +// Description:Setting IDL attributes updates IDL and content attributes +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting IDL attributes updates IDL and content attributes"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 120; +offscreenCanvas.height = 60; +_assertSame(offscreenCanvas.width, 120, "offscreenCanvas.width", "120"); +_assertSame(offscreenCanvas.height, 60, "offscreenCanvas.height", "60"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html new file mode 100644 index 00000000000..9ffdb677270 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.html @@ -0,0 +1,27 @@ + + +OffscreenCanvas test: size.attributes.reflect.setidlzero + + + + +

    size.attributes.reflect.setidlzero

    +

    Setting IDL attributes to 0 updates IDL and content attributes

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js new file mode 100644 index 00000000000..873fc9422b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.attributes.reflect.setidlzero.worker.js @@ -0,0 +1,23 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.attributes.reflect.setidlzero +// Description:Setting IDL attributes to 0 updates IDL and content attributes +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Setting IDL attributes to 0 updates IDL and content attributes"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +offscreenCanvas.width = 0; +offscreenCanvas.height = 0; +_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0"); +_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.large.html b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.large.html new file mode 100644 index 00000000000..a22c17dfc14 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.large.html @@ -0,0 +1,28 @@ + + +OffscreenCanvas test: size.large + + + + +

    size.large

    +

    + +

    Not sure how reasonable this is, but the spec doesn't say there's an upper limit on the size. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.large.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.large.worker.js new file mode 100644 index 00000000000..797f4ab7a1d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/size.large.worker.js @@ -0,0 +1,24 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:size.large +// Description: +// Note:

    Not sure how reasonable this is, but the spec doesn't say there's an upper limit on the size. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +var n = 2147483647; // 2^31 - 1, which should be supported by any sensible definition of "long" +offscreenCanvas.width = n; +offscreenCanvas.height = n; +_assertSame(offscreenCanvas.width, n, "offscreenCanvas.width", "n"); +_assertSame(offscreenCanvas.height, n, "offscreenCanvas.height", "n"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/tools/gentest.py b/tests/wpt/web-platform-tests/offscreen-canvas/tools/gentest.py new file mode 100644 index 00000000000..1037482aecc --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/tools/gentest.py @@ -0,0 +1,6 @@ +import sys +sys.path.insert(0, '../../2dcontext/tools/') +import gentestutils +from gentestutils import genTestUtils + +genTestUtils('../../offscreen-canvas', '../../offscreen-canvas', 'templates.yaml', 'name2dir.yaml', True) diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/tools/name2dir.yaml b/tests/wpt/web-platform-tests/offscreen-canvas/tools/name2dir.yaml new file mode 100644 index 00000000000..9c6e05453af --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/tools/name2dir.yaml @@ -0,0 +1,23 @@ +2d.state: "the-canvas-state" +2d.transformation: "transformations" +2d.composite: "compositing" +2d.fillStyle: "fill-and-stroke-styles" +2d.gradient: "fill-and-stroke-styles" +2d.pattern: "fill-and-stroke-styles" +2d.strokeStyle: "fill-and-stroke-styles" +2d.shadow: "shadows" +2d.clearRect: "drawing-rectangles-to-the-canvas" +2d.fillRect: "drawing-rectangles-to-the-canvas" +2d.strokeRect: "drawing-rectangles-to-the-canvas" +2d.drawImage: "drawing-images-to-the-canvas" +2d.imageData: "pixel-manipulation" +2d.line: "line-styles" +2d.path: "path-objects" +2d.coordinatespace: "conformance-requirements" +2d.missingargs: "conformance-requirements" +2d.voidreturn: "conformance-requirements" +2d.canvas: "the-offscreen-canvas" +2d.getcontext: "the-offscreen-canvas" +context: "the-offscreen-canvas" +initial: "the-offscreen-canvas" +size: "the-offscreen-canvas" diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/tools/templates.yaml b/tests/wpt/web-platform-tests/offscreen-canvas/tools/templates.yaml new file mode 100644 index 00000000000..35740965b0c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/tools/templates.yaml @@ -0,0 +1,47 @@ +w3c: | + + + OffscreenCanvas test: %(name)s + + + + +

    %(name)s

    +

    %(desc)s

    + + %(notes)s + + + +w3cworker: | + // DO NOT EDIT! This test has been generated by tools/gentest.py. + // OffscreenCanvas test in a worker:%(name)s + // Description:%(desc)s + // Note:%(notes)s + + importScripts("/resources/testharness.js"); + importScripts("/common/canvas-tests.js"); + + var t = async_test("%(escaped_desc)s"); + t.step(function() { + + var offscreenCanvas = new OffscreenCanvas(100, 50); + var ctx = offscreenCanvas.getContext('2d'); + + %(code)s + t.done(); + + }); + done(); + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml b/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml new file mode 100644 index 00000000000..0a1befbb37b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/tools/tests2d.yaml @@ -0,0 +1,9235 @@ +- meta: | + state = [ # some non-default values to test with + ('strokeStyle', '"#ff0000"'), + ('fillStyle', '"#ff0000"'), + ('globalAlpha', 0.5), + ('lineWidth', 0.5), + ('lineCap', '"round"'), + ('lineJoin', '"round"'), + ('miterLimit', 0.5), + ('shadowOffsetX', 5), + ('shadowOffsetY', 5), + ('shadowBlur', 5), + ('shadowColor', '"#ff0000"'), + ('globalCompositeOperation', '"copy"'), + ] + for key,value in state: + tests.append( { + 'name': '2d.state.saverestore.%s' % key, + 'desc': 'save()/restore() works for %s' % key, + 'testing': [ '2d.state.%s' % key ], + 'code': + """// Test that restore() undoes any modifications + var old = ctx.%(key)s; + ctx.save(); + ctx.%(key)s = %(value)s; + ctx.restore(); + @assert ctx.%(key)s === old; + + // Also test that save() doesn't modify the values + ctx.%(key)s = %(value)s; + old = ctx.%(key)s; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against %(value)s + ctx.save(); + @assert ctx.%(key)s === old; + ctx.restore(); + """ % { 'key':key, 'value':value } + } ) + + tests.append( { + 'name': 'initial.reset.2dstate', + 'desc': 'Resetting the canvas state resets 2D state variables', + 'testing': [ 'initial.reset' ], + 'code': + """offscreenCanvas.width = 100; + var default_val; + """ + "".join( + """ + default_val = ctx.%(key)s; + ctx.%(key)s = %(value)s; + offscreenCanvas.width = 100; + @assert ctx.%(key)s === default_val; + """ % { 'key':key, 'value':value } + for key,value in state), + } ) + +- name: 2d.state.saverestore.transformation + desc: save()/restore() affects the current transformation matrix + testing: + - 2d.state.transformation + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.translate(200, 0); + ctx.restore(); + ctx.fillStyle = '#f00'; + ctx.fillRect(-200, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.state.saverestore.clip + desc: save()/restore() affects the clipping path + testing: + - 2d.state.clip + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.rect(0, 0, 1, 1); + ctx.clip(); + ctx.restore(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.state.saverestore.path + desc: save()/restore() does not affect the current path + testing: + - 2d.state.path + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.rect(0, 0, 100, 50); + ctx.restore(); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.state.saverestore.bitmap + desc: save()/restore() does not affect the current bitmap + testing: + - 2d.state.bitmap + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.state.saverestore.stack + desc: save()/restore() can be nested as a stack + testing: + - 2d.state.save + - 2d.state.restore + code: | + ctx.lineWidth = 1; + ctx.save(); + ctx.lineWidth = 2; + ctx.save(); + ctx.lineWidth = 3; + @assert ctx.lineWidth === 3; + ctx.restore(); + @assert ctx.lineWidth === 2; + ctx.restore(); + @assert ctx.lineWidth === 1; + +- name: 2d.state.saverestore.stackdepth + desc: save()/restore() stack depth is not unreasonably limited + testing: + - 2d.state.save + - 2d.state.restore + code: | + var limit = 512; + for (var i = 1; i < limit; ++i) + { + ctx.save(); + ctx.lineWidth = i; + } + for (var i = limit-1; i > 0; --i) + { + @assert ctx.lineWidth === i; + ctx.restore(); + } + +- name: 2d.state.saverestore.underflow + desc: restore() with an empty stack has no effect + testing: + - 2d.state.restore.underflow + code: | + for (var i = 0; i < 16; ++i) + ctx.restore(); + ctx.lineWidth = 0.5; + ctx.restore(); + @assert ctx.lineWidth === 0.5; + +- name: 2d.transformation.order + desc: Transformations are applied in the right order + testing: + - 2d.transformation.order + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 1); + ctx.rotate(Math.PI / 2); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, -50, 50, 50); + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.transformation.scale.basic + desc: scale() works + testing: + - 2d.transformation.scale + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 4); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 12.5); + @assert pixel 90,40 == 0,255,0,255; + +- name: 2d.transformation.scale.zero + desc: scale() with a scale factor of zero works + testing: + - 2d.transformation.scale + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.translate(50, 0); + ctx.scale(0, 1); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + ctx.save(); + ctx.translate(0, 25); + ctx.scale(1, 0); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.scale.negative + desc: scale() with negative scale factors works + testing: + - 2d.transformation.scale + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.scale(-1, 1); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-50, 0, 50, 50); + ctx.restore(); + ctx.save(); + ctx.scale(1, -1); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, -50, 50, 50); + ctx.restore(); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.transformation.scale.large + desc: scale() with large scale factors works + notes: Not really that large at all, but it hits the limits in Firefox. + testing: + - 2d.transformation.scale + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1e5, 1e5); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 1, 1); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.scale.nonfinite + desc: scale() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); + @nonfinite ctx.scale(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.scale.multiple + desc: Multiple scale()s combine + testing: + - 2d.transformation.scale.multiple + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(Math.sqrt(2), Math.sqrt(2)); + ctx.scale(Math.sqrt(2), Math.sqrt(2)); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + @assert pixel 90,40 == 0,255,0,255; + + +- name: 2d.transformation.rotate.zero + desc: rotate() by 0 does nothing + testing: + - 2d.transformation.rotate + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rotate(0); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.rotate.radians + desc: rotate() uses radians + testing: + - 2d.transformation.rotate.radians + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.rotate.direction + desc: rotate() is clockwise + testing: + - 2d.transformation.rotate.direction + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI / 2); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, -100, 50, 100); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.rotate.wrap + desc: rotate() wraps large positive values correctly + testing: + - 2d.transformation.rotate + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) + // We need about pi +/- 0.001 in order to get correct-looking results + // 32-bit floats can store pi*4097 with precision 2^-10, so that should + // be safe enough on reasonable implementations + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,2 == 0,255,0,255; + @assert pixel 98,47 == 0,255,0,255; + +- name: 2d.transformation.rotate.wrapnegative + desc: rotate() wraps large negative values correctly + testing: + - 2d.transformation.rotate + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rotate(-Math.PI * (1 + 4096)); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,2 == 0,255,0,255; + @assert pixel 98,47 == 0,255,0,255; + +- name: 2d.transformation.rotate.nonfinite + desc: rotate() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); + @nonfinite ctx.rotate(<0.1 Infinity -Infinity NaN>); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.translate.basic + desc: translate() works + testing: + - 2d.transformation.translate + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 90,40 == 0,255,0,255; + +- name: 2d.transformation.translate.nonfinite + desc: translate() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); + @nonfinite ctx.translate(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + + +- name: 2d.transformation.transform.identity + desc: transform() with the identity matrix does nothing + testing: + - 2d.transformation.transform + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.transform(1,0, 0,1, 0,0); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.transform.skewed + desc: transform() with skewy matrix transforms correctly + testing: + - 2d.transformation.transform + code: | + // Create green with a red square ring inside it + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(20, 10, 60, 30); + ctx.fillStyle = '#0f0'; + ctx.fillRect(40, 20, 20, 10); + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly + ctx.transform(1,4, 2,3, 5,6); + // Post-transform coordinates: + // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; + // Hence pre-transform coordinates: + var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], + [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], + [-7.4,11.2]]; + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var i = 0; i < pts.length; ++i) + ctx.lineTo(pts[i][0], pts[i][1]); + ctx.fill(); + @assert pixel 21,11 == 0,255,0,255; + @assert pixel 79,11 == 0,255,0,255; + @assert pixel 21,39 == 0,255,0,255; + @assert pixel 79,39 == 0,255,0,255; + @assert pixel 39,19 == 0,255,0,255; + @assert pixel 61,19 == 0,255,0,255; + @assert pixel 39,31 == 0,255,0,255; + @assert pixel 61,31 == 0,255,0,255; + +- name: 2d.transformation.transform.multiply + desc: transform() multiplies the CTM + testing: + - 2d.transformation.transform.multiply + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.transform(1,2, 3,4, 5,6); + ctx.transform(-2,1, 3/2,-1/2, 1,-2); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.transformation.transform.nonfinite + desc: transform() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); + @nonfinite ctx.transform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + + +- name: 2d.transformation.setTransform.skewed + testing: + - 2d.transformation.setTransform + code: | + // Create green with a red square ring inside it + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(20, 10, 60, 30); + ctx.fillStyle = '#0f0'; + ctx.fillRect(40, 20, 20, 10); + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly + ctx.setTransform(1,4, 2,3, 5,6); + // Post-transform coordinates: + // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; + // Hence pre-transform coordinates: + var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], + [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], + [-7.4,11.2]]; + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var i = 0; i < pts.length; ++i) + ctx.lineTo(pts[i][0], pts[i][1]); + ctx.fill(); + @assert pixel 21,11 == 0,255,0,255; + @assert pixel 79,11 == 0,255,0,255; + @assert pixel 21,39 == 0,255,0,255; + @assert pixel 79,39 == 0,255,0,255; + @assert pixel 39,19 == 0,255,0,255; + @assert pixel 61,19 == 0,255,0,255; + @assert pixel 39,31 == 0,255,0,255; + @assert pixel 61,31 == 0,255,0,255; + +- name: 2d.transformation.setTransform.multiple + testing: + - 2d.transformation.setTransform.identity + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.setTransform(1/2,0, 0,1/2, 0,0); + ctx.setTransform(2,0, 0,2, 0,0); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + @assert pixel 75,35 == 0,255,0,255; + +- name: 2d.transformation.setTransform.nonfinite + desc: setTransform() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 10); + @nonfinite ctx.setTransform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.composite.globalAlpha.range + testing: + - 2d.composite.globalAlpha.range + code: | + ctx.globalAlpha = 0.5; + var a = ctx.globalAlpha; // might not be exactly 0.5, if it is rounded/quantised, so remember for future comparisons + ctx.globalAlpha = 1.1; + @assert ctx.globalAlpha === a; + ctx.globalAlpha = -0.1; + @assert ctx.globalAlpha === a; + ctx.globalAlpha = 0; + @assert ctx.globalAlpha === 0; + ctx.globalAlpha = 1; + @assert ctx.globalAlpha === 1; + +- name: 2d.composite.globalAlpha.invalid + testing: + - 2d.composite.globalAlpha.range + code: | + ctx.globalAlpha = 0.5; + var a = ctx.globalAlpha; // might not be exactly 0.5, if it is rounded/quantised, so remember for future comparisons + ctx.globalAlpha = Infinity; + @assert ctx.globalAlpha === a; + ctx.globalAlpha = -Infinity; + @assert ctx.globalAlpha === a; + ctx.globalAlpha = NaN; + @assert ctx.globalAlpha === a; + +- name: 2d.composite.globalAlpha.default + testing: + - 2d.composite.globalAlpha.default + code: | + @assert ctx.globalAlpha === 1.0; + +- name: 2d.composite.globalAlpha.fill + testing: + - 2d.composite.globalAlpha.shape + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 2,253,0,255; + +- name: 2d.composite.globalAlpha.image + testing: + - 2d.composite.globalAlpha.image + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 2,253,0,255; + }); + +- name: 2d.composite.globalAlpha.canvas + testing: + - 2d.composite.globalAlpha.image + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 50,25 ==~ 2,253,0,255; + +- name: 2d.composite.globalAlpha.imagepattern + testing: + - 2d.composite.globalAlpha.image + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 2,253,0,255; + }); + +- name: 2d.composite.globalAlpha.canvaspattern + testing: + - 2d.composite.globalAlpha.image + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = ctx.createPattern(offscreenCanvas2, 'no-repeat'); + ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 2,253,0,255; + +- name: 2d.composite.globalAlpha.canvascopy + testing: + - 2d.composite.globalAlpha.image + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'copy' + ctx.globalAlpha = 0.51; + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,130; + + +- meta: | + # Composite operation tests + # + ops = [ + # name FA FB + ('source-over', '1', '1-aA'), + ('destination-over', '1-aB', '1'), + ('source-in', 'aB', '0'), + ('destination-in', '0', 'aA'), + ('source-out', '1-aB', '0'), + ('destination-out', '0', '1-aA'), + ('source-atop', 'aB', '1-aA'), + ('destination-atop', '1-aB', 'aA'), + ('xor', '1-aB', '1-aA'), + ('copy', '1', '0'), + ('lighter', '1', '1'), + ] + + # The ones that change the output when src = (0,0,0,0): + ops_trans = [ 'source-in', 'destination-in', 'source-out', 'destination-atop', 'copy' ]; + + def calc_output((RA, GA, BA, aA), (RB, GB, BB, aB), FA_code, FB_code): + rA, gA, bA = RA*aA, GA*aA, BA*aA + rB, gB, bB = RB*aB, GB*aB, BB*aB + + FA = eval(FA_code) + FB = eval(FB_code) + + rO = rA*FA + rB*FB + gO = gA*FA + gB*FB + bO = bA*FA + bB*FB + aO = aA*FA + aB*FB + + rO = min(255, rO) + gO = min(255, gO) + bO = min(255, bO) + aO = min(1, aO) + + if aO: + RO = rO / aO + GO = gO / aO + BO = bO / aO + else: RO = GO = BO = 0 + + return (RO, GO, BO, aO) + + def to_test((r,g,b,a)): + return '%d,%d,%d,%d' % (round(r), round(g), round(b), round(a*255)) + def to_cairo((r,g,b,a)): + return '%f,%f,%f,%f' % (r/255., g/255., b/255., a) + + for (name, src, dest) in [ + ('solid', (255, 255, 0, 1.0), (0, 255, 255, 1.0)), + ('transparent', (0, 0, 255, 0.75), (0, 255, 0, 0.5)), + # catches the atop, xor and lighter bugs in Opera 9.10 + ]: + for op, FA_code, FB_code in ops: + expected = calc_output(src, dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, src, to_test(expected)), + } ) + + for (name, src, dest) in [ ('image', (255, 255, 0, 0.75), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + expected = calc_output(src, dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow75.png' ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ %s +/- 5; + }); + """ % (dest, op, to_test(expected)), + } ) + + for (name, src, dest) in [ ('canvas', (255, 255, 0, 0.75), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + expected = calc_output(src, dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow75.png' ], + 'code': """ + var offscreenCanvas2 = new OffscreenCanvas(offscreenCanvas.width, offscreenCanvas.height); + var ctx2 = offscreenCanvas2.getContext('2d'); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow75.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx2.drawImage(response, 0, 0); + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 50,25 ==~ %s +/- 5; + }); + """ % (dest, op, to_test(expected)), + } ) + + for (name, src, dest) in [ ('uncovered.fill', (0, 0, 255, 0.75), (0, 255, 0, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.fillStyle = 'rgba%s'; + ctx.translate(0, 25); + ctx.fillRect(0, 50, 100, 50); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, src, to_test(expected0)), + } ) + + for (name, src, dest) in [ ('uncovered.image', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow.png' ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 40, 40, 10, 10, 40, 50, 10, 10); + @assert pixel 15,15 ==~ %s +/- 5; + @assert pixel 50,25 ==~ %s +/- 5; + }); + """ % (dest, op, to_test(expected0), to_test(expected0)), + } ) + + for (name, src, dest) in [ ('uncovered.nocontext', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, to_test(expected0)), + } ) + + for (name, src, dest) in [ ('uncovered.pattern', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow.png' ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/yellow.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.fillStyle = ctx.createPattern(response, 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + @assert pixel 50,25 ==~ %s +/- 5; + }); + """ % (dest, op, to_test(expected0)), + } ) + + for op, FA_code, FB_code in ops: + tests.append( { + 'name': '2d.composite.clip.%s' % (op), + 'desc': 'fill() does not affect pixels outside the clip region.', + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.rect(-20, -20, 10, 10); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + """ % (op), + } ) + +- name: 2d.composite.operation.get + testing: + - 2d.composite.operation + code: | + var modes = ['source-atop', 'source-in', 'source-out', 'source-over', + 'destination-atop', 'destination-in', 'destination-out', 'destination-over', + 'lighter', 'copy', 'xor']; + for (var i = 0; i < modes.length; ++i) + { + ctx.globalCompositeOperation = modes[i]; + @assert ctx.globalCompositeOperation === modes[i]; + } + +- name: 2d.composite.operation.unrecognised + testing: + - 2d.composite.operation.unrecognised + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'nonexistent'; + @assert ctx.globalCompositeOperation === 'xor'; + +- name: 2d.composite.operation.darker + testing: + - 2d.composite.operation.unrecognised + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'darker'; + @assert ctx.globalCompositeOperation === 'xor'; + +- name: 2d.composite.operation.over + testing: + - 2d.composite.operation.unrecognised + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'over'; + @assert ctx.globalCompositeOperation === 'xor'; + +- name: 2d.composite.operation.clear + testing: + - 2d.composite.operation.clear + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'clear'; + @assert ctx.globalCompositeOperation === 'clear'; + +- name: 2d.composite.operation.highlight + testing: + - 2d.composite.operation.unrecognised + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'highlight'; + @assert ctx.globalCompositeOperation === 'xor'; + +- name: 2d.composite.operation.nullsuffix + testing: + - 2d.composite.operation.exact + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'source-over\0'; + @assert ctx.globalCompositeOperation === 'xor'; + +- name: 2d.composite.operation.casesensitive + testing: + - 2d.composite.operation.casesensitive + code: | + ctx.globalCompositeOperation = 'xor'; + ctx.globalCompositeOperation = 'Source-over'; + @assert ctx.globalCompositeOperation === 'xor'; + +- name: 2d.composite.operation.default + testing: + - 2d.composite.operation.default + code: | + @assert ctx.globalCompositeOperation === 'source-over'; + +- meta: | + # Colour parsing tests + + # Try most of the CSS3 Color values - http://www.w3.org/TR/css3-color/#colorunits + big_float = '1' + ('0' * 39) + big_double = '1' + ('0' * 310) + for name, string, r,g,b,a, notes in [ + ('html4', 'limE', 0,255,0,255, ""), + ('hex3', '#0f0', 0,255,0,255, ""), + ('hex4', '#0f0f', 0,255,0,255, ""), + ('hex6', '#00fF00', 0,255,0,255, ""), + ('hex8', '#00ff00ff', 0,255,0,255, ""), + ('rgb-num', 'rgb(0,255,0)', 0,255,0,255, ""), + ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colours are clamped to [0,255].'), + ('rgb-percent', 'rgb(0% ,100% ,0%)', 0,255,0,255, 'CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...)'), + ('rgb-eof', 'rgb(0, 255, 0', 0,255,0,255, ""), # see CSS2.1 4.2 "Unexpected end of style sheet" + ('rgba-solid-1', 'rgba( 0 , 255 , 0 , 1 )', 0,255,0,255, ""), + ('rgba-solid-2', 'rgba( 0 , 255 , 0 , 1.0 )', 0,255,0,255, ""), + ('rgba-solid-3', 'rgba( 0 , 255 , 0 , +1 )', 0,255,0,255, ""), + ('rgba-solid-4', 'rgba( -0 , 255 , +0 , 1 )', 0,255,0,255, ""), + ('rgba-num-1', 'rgba( 0 , 255 , 0 , .499 )', 0,255,0,127, ""), + ('rgba-num-2', 'rgba( 0 , 255 , 0 , 0.499 )', 0,255,0,127, ""), + ('rgba-percent', 'rgba(0%,100%,0%,0.499)', 0,255,0,127, ""), # 0.499*255 rounds to 127, both down and nearest, so it should be safe + ('rgba-clamp-1', 'rgba(0, 255, 0, -2)', 0,0,0,0, ""), + ('rgba-clamp-2', 'rgba(0, 255, 0, 2)', 0,255,0,255, ""), + ('rgba-eof', 'rgba(0, 255, 0, 1', 0,255,0,255, ""), + ('transparent-1', 'transparent', 0,0,0,0, ""), + ('transparent-2', 'TrAnSpArEnT', 0,0,0,0, ""), + ('hsl-1', 'hsl(120, 100%, 50%)', 0,255,0,255, ""), + ('hsl-2', 'hsl( -240 , 100% , 50% )', 0,255,0,255, ""), + ('hsl-3', 'hsl(360120, 100%, 50%)', 0,255,0,255, ""), + ('hsl-4', 'hsl(-360240, 100%, 50%)', 0,255,0,255, ""), + ('hsl-5', 'hsl(120.0, 100.0%, 50.0%)', 0,255,0,255, ""), + ('hsl-6', 'hsl(+120, +100%, +50%)', 0,255,0,255, ""), + ('hsl-clamp-1', 'hsl(120, 200%, 50%)', 0,255,0,255, ""), + ('hsl-clamp-2', 'hsl(120, -200%, 49.9%)', 127,127,127,255, ""), + ('hsl-clamp-3', 'hsl(120, 100%, 200%)', 255,255,255,255, ""), + ('hsl-clamp-4', 'hsl(120, 100%, -200%)', 0,0,0,255, ""), + ('hsla-1', 'hsla(120, 100%, 50%, 0.499)', 0,255,0,127, ""), + ('hsla-2', 'hsla( 120.0 , 100.0% , 50.0% , 1 )', 0,255,0,255, ""), + ('hsla-clamp-1', 'hsla(120, 200%, 50%, 1)', 0,255,0,255, ""), + ('hsla-clamp-2', 'hsla(120, -200%, 49.9%, 1)', 127,127,127,255, ""), + ('hsla-clamp-3', 'hsla(120, 100%, 200%, 1)', 255,255,255,255, ""), + ('hsla-clamp-4', 'hsla(120, 100%, -200%, 1)', 0,0,0,255, ""), + ('hsla-clamp-5', 'hsla(120, 100%, 50%, 2)', 0,255,0,255, ""), + ('hsla-clamp-6', 'hsla(120, 100%, 0%, -2)', 0,0,0,0, ""), + ('svg-1', 'gray', 128,128,128,255, ""), + ('svg-2', 'grey', 128,128,128,255, ""), + # css-color-4 rgb() color function + # https://drafts.csswg.org/css-color/#numeric-rgb + ('css-color-4-rgb-1', 'rgb(0, 255.0, 0)', 0,255,0,255, ""), + ('css-color-4-rgb-2', 'rgb(0, 255, 0, 0.2)', 0,255,0,51, ""), + ('css-color-4-rgb-3', 'rgb(0, 255, 0, 20%)', 0,255,0,51, ""), + ('css-color-4-rgb-4', 'rgb(0 255 0)', 0,255,0,255, ""), + ('css-color-4-rgb-5', 'rgb(0 255 0 / 0.2)', 0,255,0,51, ""), + ('css-color-4-rgb-6', 'rgb(0 255 0 / 20%)', 0,255,0,51, ""), + ('css-color-4-rgba-1', 'rgba(0, 255.0, 0)', 0,255,0,255, ""), + ('css-color-4-rgba-2', 'rgba(0, 255, 0, 0.2)', 0,255,0,51, ""), + ('css-color-4-rgba-3', 'rgba(0, 255, 0, 20%)', 0,255,0,51, ""), + ('css-color-4-rgba-4', 'rgba(0 255 0)', 0,255,0,255, ""), + ('css-color-4-rgba-5', 'rgba(0 255 0 / 0.2)', 0,255,0,51, ""), + ('css-color-4-rgba-6', 'rgba(0 255 0 / 20%)', 0,255,0,51, ""), + # css-color-4 hsl() color function + # https://drafts.csswg.org/css-color/#the-hsl-notation + ('css-color-4-hsl-1', 'hsl(120 100.0% 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-2', 'hsl(120 100.0% 50.0% / 0.2)', 0,255,0,51, ""), + ('css-color-4-hsl-3', 'hsl(120.0, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsl-4', 'hsl(120.0, 100.0%, 50.0%, 20%)', 0,255,0,51, ""), + ('css-color-4-hsl-5', 'hsl(120deg, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsl-6', 'hsl(120deg, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-7', 'hsl(133.33333333grad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-8', 'hsl(2.0943951024rad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-9', 'hsl(0.3333333333turn, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-1', 'hsl(120 100.0% 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-2', 'hsl(120 100.0% 50.0% / 0.2)', 0,255,0,51, ""), + ('css-color-4-hsla-3', 'hsl(120.0, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsla-4', 'hsl(120.0, 100.0%, 50.0%, 20%)', 0,255,0,51, ""), + ('css-color-4-hsla-5', 'hsl(120deg, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsla-6', 'hsl(120deg, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-7', 'hsl(133.33333333grad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-8', 'hsl(2.0943951024rad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-9', 'hsl(0.3333333333turn, 100.0%, 50.0%)', 0,255,0,255, ""), + # currentColor is handled later + ]: + # TODO: test by retrieving fillStyle, instead of actually drawing? + # TODO: test strokeStyle, shadowColor in the same way + test = { + 'name': '2d.fillStyle.parse.%s' % name, + 'testing': [ '2d.colours.parse' ], + 'notes': notes, + 'code': """ + ctx.fillStyle = '#f00'; + ctx.fillStyle = '%s'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == %d,%d,%d,%d; + """ % (string, r,g,b,a), + } + tests.append(test) + + # Also test that invalid colours are ignored + for name, string in [ + ('hex1', '#f'), + ('hex2', '#f0'), + ('hex3', '#g00'), + ('hex4', '#fg00'), + ('hex5', '#ff000'), + ('hex6', '#fg0000'), + ('hex7', '#ff0000f'), + ('hex8', '#fg0000ff'), + ('rgb-1', 'rgb(255.0, 0, 0,)'), + ('rgb-2', 'rgb(100%, 0, 0)'), + ('rgb-3', 'rgb(255, - 1, 0)'), + ('rgba-1', 'rgba(100%, 0, 0, 1)'), + ('rgba-2', 'rgba(255, 0, 0, 1. 0)'), + ('rgba-3', 'rgba(255, 0, 0, 1.)'), + ('rgba-4', 'rgba(255, 0, 0, '), + ('rgba-5', 'rgba(255, 0, 0, 1,)'), + ('hsl-1', 'hsl(0%, 100%, 50%)'), + ('hsl-2', 'hsl(z, 100%, 50%)'), + ('hsl-3', 'hsl(0, 0, 50%)'), + ('hsl-4', 'hsl(0, 100%, 0)'), + ('hsl-5', 'hsl(0, 100.%, 50%)'), + ('hsl-6', 'hsl(0, 100%, 50%,)'), + ('hsla-1', 'hsla(0%, 100%, 50%, 1)'), + ('hsla-2', 'hsla(0, 0, 50%, 1)'), + ('hsla-3', 'hsla(0, 0, 50%, 1,)'), + ('name-1', 'darkbrown'), + ('name-2', 'firebrick1'), + ('name-3', 'red blue'), + ('name-4', '"red"'), + ('name-5', '"red'), + # css-color-4 color function + # comma and comma-less expressions should not mix together. + ('css-color-4-rgb-1', 'rgb(255, 0, 0 / 1)'), + ('css-color-4-rgb-2', 'rgb(255 0 0, 1)'), + ('css-color-4-rgb-3', 'rgb(255, 0 0)'), + ('css-color-4-rgba-1', 'rgba(255, 0, 0 / 1)'), + ('css-color-4-rgba-2', 'rgba(255 0 0, 1)'), + ('css-color-4-rgba-3', 'rgba(255, 0 0)'), + ('css-color-4-hsl-1', 'hsl(0, 100%, 50% / 1)'), + ('css-color-4-hsl-2', 'hsl(0 100% 50%, 1)'), + ('css-color-4-hsl-3', 'hsl(0, 100% 50%)'), + ('css-color-4-hsla-1', 'hsla(0, 100%, 50% / 1)'), + ('css-color-4-hsla-2', 'hsla(0 100% 50%, 1)'), + ('css-color-4-hsla-3', 'hsla(0, 100% 50%)'), + # trailing slash + ('css-color-4-rgb-4', 'rgb(0 0 0 /)'), + ('css-color-4-rgb-5', 'rgb(0, 0, 0 /)'), + ('css-color-4-hsl-4', 'hsl(0 100% 50% /)'), + ('css-color-4-hsl-5', 'hsl(0, 100%, 50% /)'), + ]: + test = { + 'name': '2d.fillStyle.parse.invalid.%s' % name, + 'testing': [ '2d.colours.parse' ], + 'code': """ + ctx.fillStyle = '#0f0'; + try { ctx.fillStyle = '%s'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + """ % string, + } + tests.append(test) + + # Some can't have positive tests, only negative tests, because we don't know what colour they're meant to be + for name, string in [ + ('system', 'ThreeDDarkShadow'), + #('flavor', 'flavor'), # removed from latest CSS3 Color drafts + ]: + test = { + 'name': '2d.fillStyle.parse.%s' % name, + 'testing': [ '2d.colours.parse' ], + 'code': """ + ctx.fillStyle = '#f00'; + ctx.fillStyle = '%s'; + @assert ctx.fillStyle =~ /^#(?!(FF0000|ff0000|f00)$)/; // test that it's not red + """ % (string,), + } + tests.append(test) + +- name: 2d.fillStyle.invalidstring + testing: + - 2d.colours.invalidstring + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillStyle = 'invalid'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillStyle.invalidtype + testing: + - 2d.colours.invalidtype + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillStyle = null; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillStyle.get.solid + testing: + - 2d.colours.getcolour + - 2d.serializecolour.solid + code: | + ctx.fillStyle = '#fa0'; + @assert ctx.fillStyle === '#ffaa00'; + +- name: 2d.fillStyle.get.semitransparent + testing: + - 2d.colours.getcolour + - 2d.serializecolour.transparent + code: | + ctx.fillStyle = 'rgba(255,255,255,0.45)'; + @assert ctx.fillStyle =~ /^rgba\(255, 255, 255, 0\.4\d+\)$/; + +- name: 2d.fillStyle.get.transparent + testing: + - 2d.colours.getcolour + - 2d.serializecolour.transparent + code: | + ctx.fillStyle = 'rgba(0,0,0,0)'; + @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; + +- name: 2d.fillStyle.default + testing: + - 2d.colours.default + code: | + @assert ctx.fillStyle === '#000000'; + +- name: 2d.strokeStyle.default + testing: + - 2d.colours.default + code: | + @assert ctx.strokeStyle === '#000000'; + +- name: 2d.gradient.interpolate.solid + testing: + - 2d.gradient.interpolate.linear + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.gradient.interpolate.colour + testing: + - 2d.gradient.interpolate.linear + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#ff0'); + g.addColorStop(1, '#00f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,25 ==~ 191,191,63,255 +/- 3; + @assert pixel 50,25 ==~ 127,127,127,255 +/- 3; + @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; + +- name: 2d.gradient.interpolate.alpha + testing: + - 2d.gradient.interpolate.linear + code: | + ctx.fillStyle = '#ff0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, 'rgba(0,0,255, 0)'); + g.addColorStop(1, 'rgba(0,0,255, 1)'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,25 ==~ 191,191,63,255 +/- 3; + @assert pixel 50,25 ==~ 127,127,127,255 +/- 3; + @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; + +- name: 2d.gradient.interpolate.colouralpha + testing: + - 2d.gradient.interpolate.alpha + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, 'rgba(255,255,0, 0)'); + g.addColorStop(1, 'rgba(0,0,255, 1)'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,25 ==~ 190,190,65,65 +/- 3; + @assert pixel 50,25 ==~ 126,126,128,128 +/- 3; + @assert pixel 75,25 ==~ 62,62,192,192 +/- 3; + +- name: 2d.gradient.interpolate.outside + testing: + - 2d.gradient.outside.first + - 2d.gradient.outside.last + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(25, 0, 75, 0); + g.addColorStop(0.4, '#0f0'); + g.addColorStop(0.6, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 20,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 80,25 ==~ 0,255,0,255; + +- name: 2d.gradient.interpolate.zerosize.fill + testing: + - 2d.gradient.linear.zerosize + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.rect(0, 0, 100, 50); + ctx.fill(); + @assert pixel 40,20 == 0,255,0,255; + +- name: 2d.gradient.interpolate.zerosize.stroke + testing: + - 2d.gradient.linear.zerosize + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.strokeStyle = g; + ctx.rect(20, 20, 60, 10); + ctx.stroke(); + @assert pixel 19,19 == 0,255,0,255; + @assert pixel 20,19 == 0,255,0,255; + @assert pixel 21,19 == 0,255,0,255; + @assert pixel 19,20 == 0,255,0,255; + @assert pixel 20,20 == 0,255,0,255; + @assert pixel 21,20 == 0,255,0,255; + @assert pixel 19,21 == 0,255,0,255; + @assert pixel 20,21 == 0,255,0,255; + @assert pixel 21,21 == 0,255,0,255; + +- name: 2d.gradient.interpolate.zerosize.fillRect + testing: + - 2d.gradient.linear.zerosize + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 40,20 == 0,255,0,255; @moz-todo + +- name: 2d.gradient.interpolate.zerosize.strokeRect + testing: + - 2d.gradient.linear.zerosize + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.strokeStyle = g; + ctx.strokeRect(20, 20, 60, 10); + @assert pixel 19,19 == 0,255,0,255; + @assert pixel 20,19 == 0,255,0,255; + @assert pixel 21,19 == 0,255,0,255; + @assert pixel 19,20 == 0,255,0,255; + @assert pixel 20,20 == 0,255,0,255; + @assert pixel 21,20 == 0,255,0,255; + @assert pixel 19,21 == 0,255,0,255; + @assert pixel 20,21 == 0,255,0,255; + @assert pixel 21,21 == 0,255,0,255; + + +- name: 2d.gradient.interpolate.vertical + testing: + - 2d.gradient.interpolate.linear + code: | + var g = ctx.createLinearGradient(0, 0, 0, 50); + g.addColorStop(0, '#ff0'); + g.addColorStop(1, '#00f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,12 ==~ 191,191,63,255 +/- 10; + @assert pixel 50,25 ==~ 127,127,127,255 +/- 5; + @assert pixel 50,37 ==~ 63,63,191,255 +/- 10; + +- name: 2d.gradient.interpolate.multiple + testing: + - 2d.gradient.interpolate.linear + code: | + offscreenCanvas.width = 200; + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#ff0'); + g.addColorStop(0.5, '#0ff'); + g.addColorStop(1, '#f0f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 200, 50); + @assert pixel 50,25 ==~ 127,255,127,255 +/- 3; + @assert pixel 100,25 ==~ 0,255,255,255 +/- 3; + @assert pixel 150,25 ==~ 127,127,255,255 +/- 3; + +- name: 2d.gradient.interpolate.overlap + testing: + - 2d.gradient.interpolate.overlap + code: | + offscreenCanvas.width = 200; + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0, '#ff0'); + g.addColorStop(0.25, '#00f'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.25, '#ff0'); + g.addColorStop(0.5, '#00f'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.75, '#00f'); + g.addColorStop(0.75, '#f00'); + g.addColorStop(0.75, '#ff0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.5, '#ff0'); + g.addColorStop(1, '#00f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 200, 50); + @assert pixel 49,25 ==~ 0,0,255,255 +/- 16; + @assert pixel 51,25 ==~ 255,255,0,255 +/- 16; + @assert pixel 99,25 ==~ 0,0,255,255 +/- 16; + @assert pixel 101,25 ==~ 255,255,0,255 +/- 16; + @assert pixel 149,25 ==~ 0,0,255,255 +/- 16; + @assert pixel 151,25 ==~ 255,255,0,255 +/- 16; + +- name: 2d.gradient.interpolate.overlap2 + testing: + - 2d.gradient.interpolate.overlap + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ]; + for (var p = 0; p < ps.length; ++p) + { + g.addColorStop(ps[p], '#0f0'); + for (var i = 0; i < 15; ++i) + g.addColorStop(ps[p], '#f00'); + g.addColorStop(ps[p], '#0f0'); + } + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 30,25 == 0,255,0,255; + @assert pixel 40,25 == 0,255,0,255; + @assert pixel 60,25 == 0,255,0,255; + @assert pixel 80,25 == 0,255,0,255; + +- name: 2d.gradient.empty + testing: + - 2d.gradient.empty + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(0, 0, 0, 50); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.gradient.object.update + testing: + - 2d.gradient.update + code: | + var g = ctx.createLinearGradient(-100, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + g.addColorStop(0.1, '#0f0'); + g.addColorStop(0.9, '#0f0'); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.gradient.object.compare + testing: + - 2d.gradient.object + code: | + var g1 = ctx.createLinearGradient(0, 0, 100, 0); + var g2 = ctx.createLinearGradient(0, 0, 100, 0); + @assert g1 !== g2; + ctx.fillStyle = g1; + @assert ctx.fillStyle === g1; + +- name: 2d.gradient.object.crosscanvas + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var g = offscreenCanvas2.getContext('2d').createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.gradient.object.invalidoffset + testing: + - 2d.gradient.invalidoffset + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + @assert throws INDEX_SIZE_ERR g.addColorStop(-1, '#000'); + @assert throws INDEX_SIZE_ERR g.addColorStop(2, '#000'); + @assert throws TypeError g.addColorStop(Infinity, '#000'); + @assert throws TypeError g.addColorStop(-Infinity, '#000'); + @assert throws TypeError g.addColorStop(NaN, '#000'); + +- name: 2d.gradient.object.invalidcolour + testing: + - 2d.gradient.invalidcolour + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + @assert throws SYNTAX_ERR g.addColorStop(0, ""); + @assert throws SYNTAX_ERR g.addColorStop(0, 'null'); + @assert throws SYNTAX_ERR g.addColorStop(0, 'undefined'); + @assert throws SYNTAX_ERR g.addColorStop(0, null); + @assert throws SYNTAX_ERR g.addColorStop(0, undefined); + +- name: 2d.gradient.linear.nonfinite + desc: createLinearGradient() throws TypeError if arguments are not finite + testing: + - 2d.gradient.linear.nonfinite + code: | + @nonfinite @assert throws TypeError ctx.createLinearGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + +- name: 2d.gradient.linear.transform.1 + desc: Linear gradient coordinates are relative to the coordinate space at the time of filling + testing: + - 2d.gradient.linear.transform + code: | + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.75, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(-50, 0); + ctx.fillRect(50, 0, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.gradient.linear.transform.2 + desc: Linear gradient coordinates are relative to the coordinate space at the time of filling + testing: + - 2d.gradient.linear.transform + code: | + ctx.translate(100, 0); + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.75, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(-150, 0); + ctx.fillRect(50, 0, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.gradient.linear.transform.3 + desc: Linear gradient transforms do not experience broken caching effects + testing: + - 2d.gradient.linear.transform + code: | + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.75, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(-50, 0); + ctx.fillRect(50, 0, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.gradient.radial.negative + desc: createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative + testing: + - 2d.gradient.radial.negative + code: | + @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); + @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); + @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); +- name: 2d.gradient.radial.nonfinite + + desc: createRadialGradient() throws TypeError if arguments are not finite + testing: + - 2d.gradient.radial.nonfinite + code: | + @nonfinite @assert throws TypeError ctx.createRadialGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); + +- name: 2d.gradient.radial.inside1 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.inside2 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.inside3 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(0.993, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.outside1 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.outside2 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.outside3 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.001, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.touch1 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo + +- name: 2d.gradient.radial.touch2 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150); + g.addColorStop(0, '#f00'); + g.addColorStop(0.01, '#0f0'); + g.addColorStop(0.99, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.touch3 + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo + +- name: 2d.gradient.radial.equal + testing: + - 2d.gradient.radial.equal + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo + +- name: 2d.gradient.radial.cone.behind + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo + +- name: 2d.gradient.radial.cone.front + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.cone.bottom + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.cone.top + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.cone.beside + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo + +- name: 2d.gradient.radial.cone.cylinder + testing: + - 2d.gradient.radial.rendering + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.cone.shape1 + testing: + - 2d.gradient.radial.rendering + code: | + var tol = 1; // tolerance to avoid antialiasing artifacts + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(30+tol, 40); + ctx.lineTo(110, -20+tol); + ctx.lineTo(110, 100-tol); + ctx.fill(); + var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.cone.shape2 + testing: + - 2d.gradient.radial.rendering + code: | + var tol = 1; // tolerance to avoid antialiasing artifacts + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(30-tol, 40); + ctx.lineTo(110, -20-tol); + ctx.lineTo(110, 100+tol); + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.gradient.radial.transform.1 + desc: Radial gradient coordinates are relative to the coordinate space at the time of filling + testing: + - 2d.gradient.radial.transform + code: | + var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.51, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(50, 25); + ctx.scale(10, 10); + ctx.fillRect(-5, -2.5, 10, 5); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.gradient.radial.transform.2 + desc: Radial gradient coordinates are relative to the coordinate space at the time of filling + testing: + - 2d.gradient.radial.transform + code: | + ctx.translate(100, 0); + var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.51, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(-50, 25); + ctx.scale(10, 10); + ctx.fillRect(-5, -2.5, 10, 5); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.gradient.radial.transform.3 + desc: Radial gradient transforms do not experience broken caching effects + testing: + - 2d.gradient.radial.transform + code: | + var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.51, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(50, 25); + ctx.scale(10, 10); + ctx.fillRect(-5, -2.5, 10, 5); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.pattern.basic.image + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.basic.canvas + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.pattern.basic.zerocanvas + testing: + - 2d.pattern.zerocanvas + code: | + offscreenCanvas.width = 0; + offscreenCanvas.height = 10; + @assert offscreenCanvas.width === 0; + @assert offscreenCanvas.height === 10; + @assert throws INVALID_STATE_ERR ctx.createPattern(offscreenCanvas, 'repeat'); + offscreenCanvas.width = 10; + offscreenCanvas.height = 0; + @assert offscreenCanvas.width === 10; + @assert offscreenCanvas.height === 0; + @assert throws INVALID_STATE_ERR ctx.createPattern(offscreenCanvas, 'repeat'); + offscreenCanvas.width = 0; + offscreenCanvas.height = 0; + @assert offscreenCanvas.width === 0; + @assert offscreenCanvas.height === 0; + @assert throws INVALID_STATE_ERR ctx.createPattern(offscreenCanvas, 'repeat'); + +- name: 2d.pattern.basic.nocontext + testing: + - 2d.pattern.painting + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.pattern.image.undefined + testing: + - 2d.pattern.IDL + code: | + @assert throws TypeError ctx.createPattern(undefined, 'repeat'); + +- name: 2d.pattern.image.null + testing: + - 2d.pattern.IDL + code: | + @assert throws TypeError ctx.createPattern(null, 'repeat'); + +- name: 2d.pattern.image.string + testing: + - 2d.pattern.IDL + code: | + @assert throws TypeError ctx.createPattern('../images/red.png', 'repeat'); + +- name: 2d.pattern.repeat.empty + testing: + - 2d.pattern.missing + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-1x1.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, ""); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 200, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.repeat.null + testing: + - 2d.pattern.unrecognised + code: | + @assert ctx.createPattern(offscreenCanvas, null) != null; + +- name: 2d.pattern.repeat.undefined + testing: + - 2d.pattern.unrecognised + code: | + @assert throws SYNTAX_ERR ctx.createPattern(offscreenCanvas, undefined); + +- name: 2d.pattern.repeat.unrecognised + testing: + - 2d.pattern.unrecognised + code: | + @assert throws SYNTAX_ERR ctx.createPattern(offscreenCanvas, "invalid"); + +- name: 2d.pattern.repeat.unrecognisednull + testing: + - 2d.pattern.unrecognised + code: | + @assert throws SYNTAX_ERR ctx.createPattern(offscreenCanvas, "null"); + +- name: 2d.pattern.repeat.case + testing: + - 2d.pattern.exact + code: | + @assert throws SYNTAX_ERR ctx.createPattern(offscreenCanvas, "Repeat"); + +- name: 2d.pattern.repeat.nullsuffix + testing: + - 2d.pattern.exact + code: | + @assert throws SYNTAX_ERR ctx.createPattern(offscreenCanvas, "repeat\0"); + +- name: 2d.pattern.modify.canvas1 + testing: + - 2d.pattern.modify + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.pattern.modify.canvas2 + testing: + - 2d.pattern.modify + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.pattern.crosscanvas + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var pattern = offscreenCanvas2.getContext('2d').createPattern(response, 'no-repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.norepeat.basic + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.norepeat.outside + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + ctx.fillRect(-100, 0, 100, 50); + ctx.fillRect(0, 50, 100, 50); + ctx.fillRect(100, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.norepeat.coord1 + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 0); + ctx.fillRect(-50, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.norepeat.coord2 + testing: + - 2d.pattern.painting + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.fillStyle = pattern; + ctx.translate(50, 0); + ctx.fillRect(-50, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.norepeat.coord3 + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 25); + ctx.fillRect(-50, -25, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeat.basic + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeat.outside + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 25); + ctx.fillRect(-50, -25, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeat.coord1 + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(-128, -78); + ctx.fillRect(128, 78, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeat.coord2 + testing: + - 2d.pattern.painting + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/grgr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeat.coord3 + testing: + - 2d.pattern.painting + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(-128, -78); + ctx.fillRect(128, 78, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeatx.basic + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 16); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeatx.outside + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 16); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeatx.coord1 + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.translate(0, 16); + ctx.fillRect(0, -16, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 16); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeaty.basic + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 16, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeaty.outside + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.repeaty.coord1 + testing: + - 2d.pattern.painting + images: + - red-16x16.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-16x16.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.translate(48, 0); + ctx.fillRect(-48, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 50); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.orientation.image + desc: Image patterns do not get flipped when painted + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rrgg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.save(); + ctx.translate(0, -103); + ctx.fillRect(0, 103, 100, 50); + ctx.restore(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 25); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + +- name: 2d.pattern.paint.orientation.canvas + desc: Canvas patterns do not get flipped when painted + testing: + - 2d.pattern.painting + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 25); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 25, 100, 25); + var pattern = ctx.createPattern(offscreenCanvas2, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 25); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.shadow.attributes.shadowBlur.initial + testing: + - 2d.shadow.blur.get + - 2d.shadow.blur.initial + code: | + @assert ctx.shadowBlur === 0; + +- name: 2d.shadow.attributes.shadowBlur.valid + testing: + - 2d.shadow.blur.get + - 2d.shadow.blur.set + code: | + ctx.shadowBlur = 1; + @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 0.5; + @assert ctx.shadowBlur === 0.5; + ctx.shadowBlur = 1e6; + @assert ctx.shadowBlur === 1e6; + ctx.shadowBlur = 0; + @assert ctx.shadowBlur === 0; + +- name: 2d.shadow.attributes.shadowBlur.invalid + testing: + - 2d.shadow.blur.invalid + code: | + ctx.shadowBlur = 1; + ctx.shadowBlur = -2; + @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = Infinity; + @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = -Infinity; + @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = NaN; + @assert ctx.shadowBlur === 1; + +- name: 2d.shadow.attributes.shadowOffset.initial + testing: + - 2d.shadow.offset.initial + code: | + @assert ctx.shadowOffsetX === 0; + @assert ctx.shadowOffsetY === 0; + +- name: 2d.shadow.attributes.shadowOffset.valid + testing: + - 2d.shadow.offset.get + - 2d.shadow.offset.set + code: | + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + ctx.shadowOffsetX = 0.5; + ctx.shadowOffsetY = 0.25; + @assert ctx.shadowOffsetX === 0.5; + @assert ctx.shadowOffsetY === 0.25; + ctx.shadowOffsetX = -0.5; + ctx.shadowOffsetY = -0.25; + @assert ctx.shadowOffsetX === -0.5; + @assert ctx.shadowOffsetY === -0.25; + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 0; + @assert ctx.shadowOffsetX === 0; + @assert ctx.shadowOffsetY === 0; + ctx.shadowOffsetX = 1e6; + ctx.shadowOffsetY = 1e6; + @assert ctx.shadowOffsetX === 1e6; + @assert ctx.shadowOffsetY === 1e6; + +- name: 2d.shadow.attributes.shadowOffset.invalid + testing: + - 2d.shadow.offset.invalid + code: | + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = Infinity; + ctx.shadowOffsetY = Infinity; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = -Infinity; + ctx.shadowOffsetY = -Infinity; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = NaN; + ctx.shadowOffsetY = NaN; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + +- name: 2d.shadow.attributes.shadowColor.initial + testing: + - 2d.shadow.color.initial + code: | + @assert ctx.shadowColor === 'rgba(0, 0, 0, 0)'; + +- name: 2d.shadow.attributes.shadowColor.valid + testing: + - 2d.shadow.color.get + - 2d.shadow.color.set + code: | + ctx.shadowColor = 'lime'; + @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = 'RGBA(0,255, 0,0)'; + @assert ctx.shadowColor === 'rgba(0, 255, 0, 0)'; + +- name: 2d.shadow.attributes.shadowColor.invalid + testing: + - 2d.shadow.color.invalid + code: | + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = 'bogus'; + @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = 'red bogus'; + @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = ctx; + @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = undefined; + @assert ctx.shadowColor === '#00ff00'; + +- name: 2d.shadow.enable.off.1 + desc: Shadows are not drawn when only shadowColor is set + testing: + - 2d.shadow.enable + - 2d.shadow.render + code: | + ctx.shadowColor = '#f00'; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.enable.off.2 + desc: Shadows are not drawn when only shadowColor is set + testing: + - 2d.shadow.enable + - 2d.shadow.render + code: | + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#f00'; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.enable.blur + desc: Shadows are drawn if shadowBlur is set + testing: + - 2d.shadow.enable + - 2d.shadow.render + code: | + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#0f0'; + ctx.shadowBlur = 0.1; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.enable.x + desc: Shadows are drawn if shadowOffsetX is set + testing: + - 2d.shadow.enable + - 2d.shadow.render + code: | + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 0.1; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.enable.y + desc: Shadows are drawn if shadowOffsetY is set + testing: + - 2d.shadow.enable + - 2d.shadow.render + code: | + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 0.1; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.offset.positiveX + desc: Shadows can be offset with positive x + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.offset.negativeX + desc: Shadows can be offset with negative x + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = -50; + ctx.fillRect(50, 0, 50, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.offset.positiveY + desc: Shadows can be offset with positive y + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 25; + ctx.fillRect(0, 0, 100, 25); + @assert pixel 50,12 == 0,255,0,255; + @assert pixel 50,37 == 0,255,0,255; + +- name: 2d.shadow.offset.negativeY + desc: Shadows can be offset with negative y + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = -25; + ctx.fillRect(0, 25, 100, 25); + @assert pixel 50,12 == 0,255,0,255; + @assert pixel 50,37 == 0,255,0,255; + +- name: 2d.shadow.outside + desc: Shadows of shapes outside the visible area can be offset onto the visible area + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 100; + ctx.fillRect(-100, 0, 25, 50); + ctx.shadowOffsetX = -100; + ctx.fillRect(175, 0, 25, 50); + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 100; + ctx.fillRect(25, -100, 50, 25); + ctx.shadowOffsetY = -100; + ctx.fillRect(25, 125, 50, 25); + @assert pixel 12,25 == 0,255,0,255; + @assert pixel 87,25 == 0,255,0,255; + @assert pixel 50,12 == 0,255,0,255; + @assert pixel 50,37 == 0,255,0,255; + +- name: 2d.shadow.clip.1 + desc: Shadows of clipped shapes are still drawn within the clipping region + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.save(); + ctx.beginPath(); + ctx.rect(50, 0, 50, 50); + ctx.clip(); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + ctx.restore(); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.clip.2 + desc: Shadows are not drawn outside the clipping region + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.save(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + ctx.restore(); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.clip.3 + desc: Shadows of clipped shapes are still drawn within the clipping region + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.save(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 50; + ctx.fillRect(-50, 0, 50, 50); + ctx.restore(); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.stroke.basic + desc: Shadows are drawn for strokes + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.moveTo(0, -25); + ctx.lineTo(100, -25); + ctx.stroke(); + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + +- name: 2d.shadow.stroke.cap.1 + desc: Shadows are not drawn for areas outside stroke caps + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.lineCap = 'butt'; + ctx.moveTo(-50, -25); + ctx.lineTo(0, -25); + ctx.moveTo(100, -25); + ctx.lineTo(150, -25); + ctx.stroke(); + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + +- name: 2d.shadow.stroke.cap.2 + desc: Shadows are drawn for stroke caps + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.lineCap = 'square'; + ctx.moveTo(25, -25); + ctx.lineTo(75, -25); + ctx.stroke(); + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + +- name: 2d.shadow.stroke.join.1 + desc: Shadows are not drawn for areas outside stroke joins + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = 'bevel'; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.shadow.stroke.join.2 + desc: Shadows are drawn for stroke joins + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.shadow.stroke.join.3 + desc: Shadows are drawn for stroke joins respecting miter limit + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 0.1; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3) + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.shadow.image.basic + desc: Shadows are drawn for images + testing: + - 2d.shadow.render + images: + - red.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, -50); + @assert pixel 50,25 == 0,255,0,255; + }); + +- name: 2d.shadow.image.transparent.1 + desc: Shadows are not drawn for transparent images + testing: + - 2d.shadow.render + images: + - transparent.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, -50); + @assert pixel 50,25 == 0,255,0,255; + }); + +- name: 2d.shadow.image.transparent.2 + desc: Shadows are not drawn for transparent parts of images + testing: + - 2d.shadow.render + images: + - redtransparent.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 50, -50); + ctx.shadowColor = '#f00'; + ctx.drawImage(response, -50, -50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + }); + +- name: 2d.shadow.image.alpha + desc: Shadows are drawn correctly for partially-transparent images + testing: + - 2d.shadow.render + images: + - transparent50.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent50.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, -50); + @assert pixel 50,25 ==~ 127,0,127,255; + }); + +- name: 2d.shadow.image.section + desc: Shadows are not drawn for areas outside image source rectangles + testing: + - 2d.shadow.render + images: + - redtransparent.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#f00'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 50, 0, 50, 50, 0, -50, 50, 50); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }); + +- name: 2d.shadow.image.scale + desc: Shadows are drawn correctly for scaled images + testing: + - 2d.shadow.render + images: + - redtransparent.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0, 100, 50, -10, -50, 240, 50); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }); + +- name: 2d.shadow.canvas.basic + desc: Shadows are drawn for canvases + testing: + - 2d.shadow.render + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.drawImage(offscreenCanvas2, 0, -50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.canvas.transparent.1 + desc: Shadows are not drawn for transparent canvases + testing: + - 2d.shadow.render + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.drawImage(offscreenCanvas2, 0, -50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.canvas.transparent.2 + desc: Shadows are not drawn for transparent parts of canvases + testing: + - 2d.shadow.render + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.drawImage(offscreenCanvas2, 50, -50); + ctx.shadowColor = '#f00'; + ctx.drawImage(offscreenCanvas2, -50, -50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.canvas.alpha + desc: Shadows are drawn correctly for partially-transparent canvases + testing: + - 2d.shadow.render + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.drawImage(offscreenCanvas2, 0, -50); + @assert pixel 50,25 ==~ 127,0,127,255; + +- name: 2d.shadow.pattern.basic + desc: Shadows are drawn for fill patterns + testing: + - 2d.shadow.render + images: + - red.png + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + }); + +- name: 2d.shadow.pattern.transparent.1 + desc: Shadows are not drawn for transparent fill patterns + testing: + - 2d.shadow.render + # http://bugs.webkit.org/show_bug.cgi?id=15266 + images: + - transparent.png + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + }); + +- name: 2d.shadow.pattern.transparent.2 + desc: Shadows are not drawn for transparent parts of fill patterns + testing: + - 2d.shadow.render + images: + - redtransparent.png + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + }); + +- name: 2d.shadow.pattern.alpha + desc: Shadows are drawn correctly for partially-transparent fill patterns + testing: + - 2d.shadow.render + images: + - transparent50.png + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/transparent50.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + var pattern = ctx.createPattern(response, 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + }); + +- name: 2d.shadow.gradient.basic + desc: Shadows are drawn for gradient fills + testing: + - 2d.shadow.render + # http://bugs.webkit.org/show_bug.cgi?id=15266 + code: | + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, '#f00'); + gradient.addColorStop(1, '#f00'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.gradient.transparent.1 + desc: Shadows are not drawn for transparent gradient fills + testing: + - 2d.shadow.render + # http://bugs.webkit.org/show_bug.cgi?id=15266 + code: | + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, 'rgba(0,0,0,0)'); + gradient.addColorStop(1, 'rgba(0,0,0,0)'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.gradient.transparent.2 + desc: Shadows are not drawn for transparent parts of gradient fills + testing: + - 2d.shadow.render + code: | + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, '#f00'); + gradient.addColorStop(0.499, '#f00'); + gradient.addColorStop(0.5, 'rgba(0,0,0,0)'); + gradient.addColorStop(1, 'rgba(0,0,0,0)'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + +- name: 2d.shadow.gradient.alpha + desc: Shadows are drawn correctly for partially-transparent gradient fills + testing: + - 2d.shadow.render + code: | + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, 'rgba(255,0,0,0.5)'); + gradient.addColorStop(1, 'rgba(255,0,0,0.5)'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 ==~ 127,0,127,255; + +- name: 2d.shadow.transform.1 + desc: Shadows take account of transformations + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.translate(100, 100); + ctx.fillRect(-100, -150, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.transform.2 + desc: Shadow offsets are not affected by transformations + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.rotate(Math.PI) + ctx.fillRect(-100, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.shadow.alpha.1 + desc: Shadow colour alpha components are used + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = 'rgba(255, 0, 0, 0.01)'; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255 +/- 4; + +- name: 2d.shadow.alpha.2 + desc: Shadow colour alpha components are used + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = 'rgba(0, 0, 255, 0.5)'; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 ==~ 127,0,127,255; + +- name: 2d.shadow.alpha.3 + desc: Shadows are affected by globalAlpha + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) + ctx.shadowColor = '#00f'; + ctx.shadowOffsetY = 50; + ctx.globalAlpha = 0.5; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 ==~ 127,0,127,255; + +- name: 2d.shadow.alpha.4 + desc: Shadows with alpha components are correctly affected by globalAlpha + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) + ctx.shadowColor = 'rgba(0, 0, 255, 0.707)'; + ctx.shadowOffsetY = 50; + ctx.globalAlpha = 0.707; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 ==~ 127,0,127,255; + +- name: 2d.shadow.alpha.5 + desc: Shadows of shapes with alpha components are drawn correctly + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = 'rgba(64, 0, 0, 0.5)'; + ctx.shadowColor = '#00f'; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 ==~ 127,0,127,255; + +- name: 2d.shadow.composite.1 + desc: Shadows are drawn using globalCompositeOperation + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'xor'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 100; + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, 0, 200, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.shadow.composite.2 + desc: Shadows are drawn using globalCompositeOperation + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'xor'; + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 1; + ctx.fillStyle = '#0f0'; + ctx.fillRect(-10, -10, 120, 70); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.shadow.composite.3 + desc: Areas outside shadows are drawn correctly with destination-out + testing: + - 2d.shadow.render + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-out'; + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 10; + ctx.fillStyle = '#f00'; + ctx.fillRect(200, 0, 100, 50); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.clearRect.basic + desc: clearRect clears to transparent black + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.clearRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.clearRect.path + desc: clearRect does not affect the current path + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.rect(0, 0, 100, 50); + ctx.clearRect(0, 0, 16, 16); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.clearRect.zero + desc: clearRect of zero pixels has no effect + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.clearRect(0, 0, 100, 0); + ctx.clearRect(0, 0, 0, 50); + ctx.clearRect(0, 0, 0, 0); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.clearRect.negative + desc: clearRect of negative sizes works + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.clearRect(0, 0, 50, 25); + ctx.clearRect(100, 0, -50, 25); + ctx.clearRect(0, 50, 50, -25); + ctx.clearRect(100, 50, -50, -25); + @assert pixel 25,12 == 0,0,0,0; + @assert pixel 75,12 == 0,0,0,0; + @assert pixel 25,37 == 0,0,0,0; + @assert pixel 75,37 == 0,0,0,0; + +- name: 2d.clearRect.transform + desc: clearRect is affected by transforms + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(10, 10); + ctx.translate(0, 5); + ctx.clearRect(0, -5, 10, 5); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.clearRect.globalalpha + desc: clearRect is not affected by globalAlpha + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0.1; + ctx.clearRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.clearRect.globalcomposite + desc: clearRect is not affected by globalCompositeOperation + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-atop'; + ctx.clearRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.clearRect.clip + desc: clearRect is affected by clipping regions + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(0, 0, 16, 16); + ctx.clip(); + ctx.clearRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 16); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.clearRect.shadow + desc: clearRect does not draw shadows + testing: + - 2d.clearRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 0; + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 50; + ctx.clearRect(0, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.clearRect.nonfinite + desc: clearRect() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @nonfinite ctx.clearRect(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillRect.basic + desc: fillRect works + testing: + - 2d.fillRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillRect.path + desc: fillRect does not affect the current path + testing: + - 2d.fillRect + code: | + ctx.beginPath(); + ctx.rect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 16, 16); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillRect.zero + desc: fillRect of zero pixels has no effect + testing: + - 2d.fillRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 0); + ctx.fillRect(0, 0, 0, 50); + ctx.fillRect(0, 0, 0, 0); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillRect.negative + desc: fillRect of negative sizes works + testing: + - 2d.fillRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + ctx.fillRect(100, 0, -50, 25); + ctx.fillRect(0, 50, 50, -25); + ctx.fillRect(100, 50, -50, -25); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; + +- name: 2d.fillRect.transform + desc: fillRect is affected by transforms + testing: + - 2d.fillRect + code: | + ctx.scale(10, 10); + ctx.translate(0, 5); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, -5, 10, 5); + @assert pixel 50,25 == 0,255,0,255; + +# don't bother testing globalalpha, globalcomposite because they're already heavily used by other test cases + +- name: 2d.fillRect.clip + desc: fillRect is affected by clipping regions + testing: + - 2d.fillRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(0, 0, 16, 16); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 16); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillRect.shadow + desc: fillRect draws shadows + testing: + - 2d.fillRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowBlur = 0; + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.fillRect.nonfinite + desc: fillRect() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + @nonfinite ctx.fillRect(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.basic + desc: strokeRect works + testing: + - 2d.strokeRect + code: | + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.strokeRect(25, 24, 50, 2); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.path + desc: strokeRect does not affect the current path + testing: + - 2d.strokeRect + code: | + ctx.beginPath(); + ctx.rect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 5; + ctx.strokeRect(0, 0, 16, 16); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.zero.1 + desc: strokeRect of 0x0 pixels draws nothing + testing: + - 2d.strokeRect + code: | + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 250; + ctx.strokeRect(50, 25, 0, 0); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.strokeRect.zero.2 + desc: strokeRect of 0x0 pixels draws nothing, including caps and joins + testing: + - 2d.strokeRect + code: | + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 250; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.strokeRect(50, 25, 0, 0); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.strokeRect.zero.3 + desc: strokeRect of Nx0 pixels draws a straight line + testing: + - 2d.strokeRect + code: | + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.strokeRect(0, 25, 100, 0); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.zero.4 + desc: strokeRect of Nx0 pixels draws a closed line with no caps + testing: + - 2d.strokeRect + code: | + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 250; + ctx.lineCap = 'round'; + ctx.strokeRect(100, 25, 100, 0); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.strokeRect.zero.5 + desc: strokeRect of Nx0 pixels draws a closed line with joins + testing: + - 2d.strokeRect + code: | + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 250; + ctx.lineJoin = 'round'; + ctx.strokeRect(100, 25, 100, 0); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.negative + desc: strokeRect of negative sizes works + testing: + - 2d.strokeRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 25; + ctx.strokeRect(12, 12, 26, 1); + ctx.strokeRect(88, 12, -26, 1); + ctx.strokeRect(12, 38, 26, -1); + ctx.strokeRect(88, 38, -26, -1); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; + +- name: 2d.strokeRect.transform + desc: fillRect is affected by transforms + testing: + - 2d.strokeRect + code: | + ctx.scale(10, 10); + ctx.translate(0, 5); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 5; + ctx.strokeRect(2.5, -2.6, 5, 0.2); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.globalalpha + desc: strokeRect is affected by globalAlpha + testing: + - 2d.strokeRect + code: | + ctx.globalAlpha = 0; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.strokeRect(25, 24, 50, 2); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.strokeRect.globalcomposite + desc: strokeRect is not affected by globalCompositeOperation + testing: + - 2d.strokeRect + code: | + ctx.globalCompositeOperation = 'source-in'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.strokeRect(25, 24, 50, 2); + @assert pixel 50,25 == 0,0,0,0; + +- name: 2d.strokeRect.clip + desc: strokeRect is affected by clipping regions + testing: + - 2d.strokeRect + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(0, 0, 16, 16); + ctx.clip(); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.strokeRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 16); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.shadow + desc: strokeRect draws shadows + testing: + - 2d.strokeRect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowBlur = 0; + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 50; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.strokeRect(0, -75, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.strokeRect.nonfinite + desc: strokeRect() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 150; + @nonfinite ctx.strokeRect(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @assert pixel 50,25 == 0,255,0,255; + + +- name: 2d.drawImage.3arg + testing: + - 2d.drawImage.defaultsource + - 2d.drawImage.defaultdest + images: + - red.png + - green.png + code: | + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 0, 0); + ctx.drawImage(response1, -100, 0); + ctx.drawImage(response1, 100, 0); + ctx.drawImage(response1, 0, -50); + ctx.drawImage(response1, 0, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.5arg + testing: + - 2d.drawImage.defaultsource + images: + - red.png + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 50, 0, 50, 50); + ctx.drawImage(response1, 0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.9arg.basic + testing: + - 2d.drawImage.paint + images: + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0, 100, 50, 0, 0, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.9arg.sourcepos + testing: + - 2d.drawImage.paint + images: + - rgrg-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 140, 20, 100, 50, 0, 0, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.9arg.sourcesize + testing: + - 2d.drawImage.paint + images: + - rgrg-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/rgrg-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0, 256, 256, 0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 51, 26); + ctx.fillRect(49, 24, 51, 26); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + @assert pixel 20,20 ==~ 0,255,0,255; + @assert pixel 80,20 ==~ 0,255,0,255; + @assert pixel 20,30 ==~ 0,255,0,255; + @assert pixel 80,30 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.9arg.destpos + testing: + - 2d.drawImage.paint + images: + - red.png + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 0, 0, 100, 50, 0, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, -100, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 100, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 0, -50, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 0, 50, 100, 50); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.9arg.destsize + testing: + - 2d.drawImage.paint + images: + - red.png + - green.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 1, 1, 1, 1, 0, 0, 100, 50); + ctx.drawImage(response1, 0, 0, 100, 50, -50, 0, 50, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 100, 0, 50, 50); + ctx.drawImage(response1, 0, 0, 100, 50, 0, -25, 100, 25); + ctx.drawImage(response1, 0, 0, 100, 50, 0, 50, 100, 25); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.canvas + testing: + - 2d.drawImage.paint + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + +- name: 2d.drawImage.self.1 + testing: + - 2d.drawImage.self + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.drawImage(offscreenCanvas, 50, 0); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + +- name: 2d.drawImage.self.2 + testing: + - 2d.drawImage.self + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 1, 100, 49); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 1); + ctx.drawImage(offscreenCanvas, 0, 1); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 2); + @assert pixel 0,0 ==~ 0,255,0,255; + @assert pixel 99,0 ==~ 0,255,0,255; + @assert pixel 0,49 ==~ 0,255,0,255; + @assert pixel 99,49 ==~ 0,255,0,255; + +- name: 2d.drawImage.null + testing: + - 2d.drawImage.IDL + code: | + @assert throws TypeError ctx.drawImage(null, 0, 0); + +- name: 2d.drawImage.zerocanvas + testing: + - 2d.drawImage.zerocanvas + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var offscreenCanvas2 = new OffscreenCanvas(0, 10); + ctx.drawImage(offscreenCanvas2, 0, 0); + offscreenCanvas2.width = 10; + offscreenCanvas2.height = 0; + ctx.drawImage(offscreenCanvas2, 0, 0); + offscreenCanvas2.width = 0; + offscreenCanvas2.height = 0; + ctx.drawImage(offscreenCanvas2, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.drawImage.wrongtype + desc: Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError + testing: + - 2d.drawImage.IDL + code: | + @assert throws TypeError ctx.drawImage(undefined, 0, 0); + @assert throws TypeError ctx.drawImage(0, 0, 0); + @assert throws TypeError ctx.drawImage("", 0, 0); + +- name: 2d.drawImage.floatsource + testing: + - 2d.drawImage.paint + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.zerosource + desc: drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR + testing: + - 2d.drawImage.zerosource + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + @assert throws INDEX_SIZE_ERR ctx.drawImage(response, 10, 10, 0, 1, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response, 10, 10, 1, 0, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response, 10, 10, 0, 0, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.zerosource.image + desc: drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR + testing: + - 2d.drawImage.zerosource + images: + - red-zerowidth.svg + - red-zeroheight.svg + - red-zerosize.svg + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red-zerowidth.svg'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + @assert throws INDEX_SIZE_ERR ctx.drawImage(response, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response, 0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + }); + +- name: 2d.drawImage.negativesource + desc: Negative source width/height represents the correct rectangle + testing: + - 2d.drawImage.direction + mozilla: { throws } + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 100, 78, -100, 50, 0, 0, 50, 50); + ctx.drawImage(response, 100, 128, -100, -50, 50, 0, 50, 50); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.negativedest + desc: Negative destination width/height represents the correct rectangle + testing: + - 2d.drawImage.direction + mozilla: { throws } + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 100, 78, 50, 50, 0, 50, 50, -50); + ctx.drawImage(response, 100, 128, 50, -50, 100, 50, -50, -50); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.negativedir + desc: Negative dimensions do not affect the direction of the image + testing: + - 2d.drawImage.direction + mozilla: { throws } + images: + - ggrr-256x256.png + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/ggrr-256x256.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 178, 50, -100, 0, 0, 50, 100); + ctx.drawImage(response, 0, 78, 50, 100, 50, 100, 50, -100); + @assert pixel 1,1 ==~ 0,255,0,255; + @assert pixel 1,48 ==~ 0,255,0,255; + @assert pixel 98,1 ==~ 0,255,0,255; + @assert pixel 98,48 ==~ 0,255,0,255; + @assert pixel 48,1 ==~ 0,255,0,255; + @assert pixel 48,48 ==~ 0,255,0,255; + @assert pixel 51,1 ==~ 0,255,0,255; + @assert pixel 51,48 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.outsidesource + DISABLED: fix this to match the current spec (transparent black outside source) + testing: + - 2d.drawImage.outsidesource + code: | + var promise1 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + var promise2 = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + Promise.all([promise1, promise2]).then(function(response1, response2) { + ctx.drawImage(response2, 10.5, 10.5, 89.5, 39.5, 0, 0, 100, 50); + ctx.drawImage(response2, 5.5, 5.5, -5.5, -5.5, 0, 0, 100, 50); + ctx.drawImage(response2, 100, 50, -5, -5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, -0.001, 0, 100, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 0, -0.001, 100, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 0, 0, 100.001, 50, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 0, 0, 100, 50.001, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 50, 0, 50.001, 50, 0, 0, 100, 50); @moz-todo + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 0, 0, -5, 5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 0, 0, 5, -5, 0, 0, 100, 50); + @assert throws INDEX_SIZE_ERR ctx.drawImage(response1, 110, 60, -20, -20, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + }); + +- name: 2d.drawImage.broken + testing: + - 2d.drawImage.incomplete.image + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/broken.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + }); + +- name: 2d.drawImage.svg + desc: drawImage() of an SVG image + testing: + - 2d.drawImage.svg + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/green.svg'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.animated.poster + desc: drawImage() of an APNG draws the poster frame + testing: + - 2d.drawImage.animated.image + images: + - anim-poster-gr.png + code: | + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/anim-poster-gr.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo + }); + +- name: 2d.drawImage.path + testing: + - 2d.drawImage.unaffect + code: | + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + ctx.fill(); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.transform + testing: + - 2d.drawImage.subject + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(100, 0); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.alpha + testing: + - 2d.drawImage.subject + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.clip + testing: + - 2d.drawImage.subject + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.composite + testing: + - 2d.drawImage.subject + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-over'; + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/red.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.nowrap + desc: Stretched images do not get pixels wrapping around the edges + images: + - redtransparent.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + ctx.drawImage(response, -1950, 0, 2000, 50); + @assert pixel 45,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 55,25 ==~ 0,255,0,255; + }); + +- name: 2d.drawImage.nonfinite + desc: drawImage() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + images: + - red.png + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var promise = new Promise(function(resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", '/images/redtransparent.png'); + xhr.responseType = 'blob'; + xhr.send(); + xhr.onload = function() { + resolve(xhr.response); + }; + }); + promise.then(function(response) { + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @nonfinite ctx.drawImage(, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + @assert pixel 50,25 == 0,255,0,255; + }); + +- name: 2d.imageData.create2.basic + desc: createImageData(sw, sh) exists and returns something + testing: + - 2d.imageData.create2.object + code: | + @assert ctx.createImageData(1, 1) !== null; + +- name: 2d.imageData.create1.basic + desc: createImageData(imgdata) exists and returns something + testing: + - 2d.imageData.create1.object + code: | + @assert ctx.createImageData(ctx.createImageData(1, 1)) !== null; + +- name: 2d.imageData.create2.initial + desc: createImageData(sw, sh) returns transparent black data of the right size + testing: + - 2d.imageData.create2.size + - 2d.imageData.create.initial + - 2d.imageData.initial + code: | + var imgdata = ctx.createImageData(10, 20); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + @assert imgdata.width < imgdata.height; + @assert imgdata.width > 0; + var isTransparentBlack = true; + for (var i = 0; i < imgdata.data.length; ++i) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; + +- name: 2d.imageData.create1.initial + desc: createImageData(imgdata) returns transparent black data of the right size + testing: + - 2d.imageData.create1.size + - 2d.imageData.create.initial + - 2d.imageData.initial + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var imgdata1 = ctx.getImageData(0, 0, 10, 20); + var imgdata2 = ctx.createImageData(imgdata1); + @assert imgdata2.data.length === imgdata1.data.length; + @assert imgdata2.width === imgdata1.width; + @assert imgdata2.height === imgdata1.height; + var isTransparentBlack = true; + for (var i = 0; i < imgdata2.data.length; ++i) + if (imgdata2.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; + +- name: 2d.imageData.create2.large + desc: createImageData(sw, sh) works for sizes much larger than the canvas + testing: + - 2d.imageData.create2.size + code: | + var imgdata = ctx.createImageData(1000, 2000); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + @assert imgdata.width < imgdata.height; + @assert imgdata.width > 0; + var isTransparentBlack = true; + for (var i = 0; i < imgdata.data.length; i += 7813) // check ~1024 points (assuming normal scaling) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; + +- name: 2d.imageData.create2.tiny + desc: createImageData(sw, sh) works for sizes smaller than one pixel + testing: + - 2d.imageData.create2.size + - 2d.imageData.one + code: | + var imgdata = ctx.createImageData(0.0001, 0.0001); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + @assert imgdata.width === 1; + @assert imgdata.height === 1; + var isTransparentBlack = true; + for (var i = 0; i < imgdata.data.length; ++i) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; + +- name: 2d.imageData.create2.negative + desc: createImageData(sw, sh) takes the absolute magnitude of the size arguments + testing: + - 2d.imageData.create2.size + code: | + var imgdata1 = ctx.createImageData(10, 20); + var imgdata2 = ctx.createImageData(-10, 20); + var imgdata3 = ctx.createImageData(10, -20); + var imgdata4 = ctx.createImageData(-10, -20); + @assert imgdata1.data.length === imgdata2.data.length; + @assert imgdata2.data.length === imgdata3.data.length; + @assert imgdata3.data.length === imgdata4.data.length; + +- name: 2d.imageData.create2.zero + desc: createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero + testing: + - 2d.imageData.getcreate.zero + code: | + @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0); + @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 10); + @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 0); + +- name: 2d.imageData.create2.nonfinite + desc: createImageData() throws TypeError if arguments are not finite + testing: + - 2d.imageData.getcreate.nonfinite + code: | + @nonfinite @assert throws TypeError ctx.createImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + var posinfobj = { valueOf: function() { return Infinity; } }, + neginfobj = { valueOf: function() { return -Infinity; } }, + nanobj = { valueOf: function() { return -Infinity; } }; + @nonfinite @assert throws TypeError ctx.createImageData(<10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>); + +- name: 2d.imageData.create1.zero + desc: createImageData(null) throws TypeError + testing: + - 2d.imageData.create.null + code: | + @assert throws TypeError ctx.createImageData(null); + +- name: 2d.imageData.create2.round + desc: createImageData(w, h) is rounded the same as getImageData(0, 0, w, h) + testing: + - 2d.imageData.createround + code: | + var imgdata1 = ctx.createImageData(10.01, 10.99); + var imgdata2 = ctx.getImageData(0, 0, 10.01, 10.99); + @assert imgdata1.width === imgdata2.width; + @assert imgdata1.height === imgdata2.height; + +- name: 2d.imageData.get.basic + desc: getImageData() exists and returns something + testing: + - 2d.imageData.get.basic + code: | + @assert ctx.getImageData(0, 0, 100, 50) !== null; + +- name: 2d.imageData.get.zero + desc: getImageData() throws INDEX_SIZE_ERR if size is zero + testing: + - 2d.imageData.getcreate.zero + code: | + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 10); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 0); + +- name: 2d.imageData.get.nonfinite + desc: getImageData() throws TypeError if arguments are not finite + testing: + - 2d.imageData.getcreate.nonfinite + code: | + @nonfinite @assert throws TypeError ctx.getImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + var posinfobj = { valueOf: function() { return Infinity; } }, + neginfobj = { valueOf: function() { return -Infinity; } }, + nanobj = { valueOf: function() { return -Infinity; } }; + @nonfinite @assert throws TypeError ctx.getImageData(<10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>); + +- name: 2d.imageData.get.source.outside + desc: getImageData() returns transparent black outside the canvas + testing: + - 2d.imageData.get.basic + - 2d.imageData.get.outside + code: | + ctx.fillStyle = '#08f'; + ctx.fillRect(0, 0, 100, 50); + var imgdata1 = ctx.getImageData(-10, 5, 1, 1); + @assert imgdata1.data[0] === 0; + @assert imgdata1.data[1] === 0; + @assert imgdata1.data[2] === 0; + @assert imgdata1.data[3] === 0; + var imgdata2 = ctx.getImageData(10, -5, 1, 1); + @assert imgdata2.data[0] === 0; + @assert imgdata2.data[1] === 0; + @assert imgdata2.data[2] === 0; + @assert imgdata2.data[3] === 0; + var imgdata3 = ctx.getImageData(200, 5, 1, 1); + @assert imgdata3.data[0] === 0; + @assert imgdata3.data[1] === 0; + @assert imgdata3.data[2] === 0; + @assert imgdata3.data[3] === 0; + var imgdata4 = ctx.getImageData(10, 60, 1, 1); + @assert imgdata4.data[0] === 0; + @assert imgdata4.data[1] === 0; + @assert imgdata4.data[2] === 0; + @assert imgdata4.data[3] === 0; + var imgdata5 = ctx.getImageData(100, 10, 1, 1); + @assert imgdata5.data[0] === 0; + @assert imgdata5.data[1] === 0; + @assert imgdata5.data[2] === 0; + @assert imgdata5.data[3] === 0; + var imgdata6 = ctx.getImageData(0, 10, 1, 1); + @assert imgdata6.data[0] === 0; + @assert imgdata6.data[1] === 136; + @assert imgdata6.data[2] === 255; + @assert imgdata6.data[3] === 255; + var imgdata7 = ctx.getImageData(-10, 10, 20, 20); + @assert imgdata7.data[ 0*4+0] === 0; + @assert imgdata7.data[ 0*4+1] === 0; + @assert imgdata7.data[ 0*4+2] === 0; + @assert imgdata7.data[ 0*4+3] === 0; + @assert imgdata7.data[ 9*4+0] === 0; + @assert imgdata7.data[ 9*4+1] === 0; + @assert imgdata7.data[ 9*4+2] === 0; + @assert imgdata7.data[ 9*4+3] === 0; + @assert imgdata7.data[10*4+0] === 0; + @assert imgdata7.data[10*4+1] === 136; + @assert imgdata7.data[10*4+2] === 255; + @assert imgdata7.data[10*4+3] === 255; + @assert imgdata7.data[19*4+0] === 0; + @assert imgdata7.data[19*4+1] === 136; + @assert imgdata7.data[19*4+2] === 255; + @assert imgdata7.data[19*4+3] === 255; + @assert imgdata7.data[20*4+0] === 0; + @assert imgdata7.data[20*4+1] === 0; + @assert imgdata7.data[20*4+2] === 0; + @assert imgdata7.data[20*4+3] === 0; + +- name: 2d.imageData.get.source.negative + desc: getImageData() works with negative width and height, and returns top-to-bottom left-to-right + testing: + - 2d.imageData.get.basic + - 2d.pixelarray.order + code: | + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#fff'; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(85, 25, -10, -10); + @assert imgdata1.data[0] === 255; + @assert imgdata1.data[1] === 255; + @assert imgdata1.data[2] === 255; + @assert imgdata1.data[3] === 255; + @assert imgdata1.data[imgdata1.data.length-4+0] === 0; + @assert imgdata1.data[imgdata1.data.length-4+1] === 0; + @assert imgdata1.data[imgdata1.data.length-4+2] === 0; + @assert imgdata1.data[imgdata1.data.length-4+3] === 255; + var imgdata2 = ctx.getImageData(0, 0, -1, -1); + @assert imgdata2.data[0] === 0; + @assert imgdata2.data[1] === 0; + @assert imgdata2.data[2] === 0; + @assert imgdata2.data[3] === 0; + +- name: 2d.imageData.get.source.size + desc: getImageData() returns bigger ImageData for bigger source rectangle + testing: + - 2d.imageData.get.basic + code: | + var imgdata1 = ctx.getImageData(0, 0, 10, 10); + var imgdata2 = ctx.getImageData(0, 0, 20, 20); + @assert imgdata2.width > imgdata1.width; + @assert imgdata2.height > imgdata1.height; + +- name: 2d.imageData.get.tiny + desc: getImageData() works for sizes smaller than one pixel + testing: + - 2d.imageData.one + code: | + var imgdata = ctx.getImageData(0, 0, 0.0001, 0.0001); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + @assert imgdata.width === 1; + @assert imgdata.height === 1; + +- name: 2d.imageData.get.nonpremul + desc: getImageData() returns non-premultiplied colours + testing: + - 2d.imageData.get.premul + code: | + ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(10, 10, 10, 10); + @assert imgdata.data[0] > 200; + @assert imgdata.data[1] > 200; + @assert imgdata.data[2] > 200; + @assert imgdata.data[3] > 100; + @assert imgdata.data[3] < 200; + +- name: 2d.imageData.get.range + desc: getImageData() returns values in the range [0, 255] + testing: + - 2d.pixelarray.range + - 2d.pixelarray.retrieve + code: | + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#fff'; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(10, 5, 1, 1); + @assert imgdata1.data[0] === 0; + var imgdata2 = ctx.getImageData(30, 15, 1, 1); + @assert imgdata2.data[0] === 255; + +- name: 2d.imageData.get.clamp + desc: getImageData() clamps colours to the range [0, 255] + testing: + - 2d.pixelarray.range + code: | + ctx.fillStyle = 'rgb(-100, -200, -300)'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = 'rgb(256, 300, 400)'; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(10, 5, 1, 1); + @assert imgdata1.data[0] === 0; + @assert imgdata1.data[1] === 0; + @assert imgdata1.data[2] === 0; + var imgdata2 = ctx.getImageData(30, 15, 1, 1); + @assert imgdata2.data[0] === 255; + @assert imgdata2.data[1] === 255; + @assert imgdata2.data[2] === 255; + +- name: 2d.imageData.get.length + desc: getImageData() returns a correctly-sized Uint8ClampedArray + testing: + - 2d.pixelarray.length + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + +- name: 2d.imageData.get.order.cols + desc: getImageData() returns leftmost columns first + testing: + - 2d.pixelarray.order + code: | + ctx.fillStyle = '#fff'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 2, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[0] === 0; + @assert imgdata.data[Math.round(imgdata.width/2*4)] === 255; + @assert imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)] === 0; + +- name: 2d.imageData.get.order.rows + desc: getImageData() returns topmost rows first + testing: + - 2d.pixelarray.order + code: | + ctx.fillStyle = '#fff'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 2); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[0] === 0; + @assert imgdata.data[Math.floor(imgdata.width/2*4)] === 0; + @assert imgdata.data[(imgdata.height/2)*imgdata.width*4] === 255; + +- name: 2d.imageData.get.order.rgb + desc: getImageData() returns R then G then B + testing: + - 2d.pixelarray.order + - 2d.pixelarray.indexes + code: | + ctx.fillStyle = '#48c'; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[0] === 0x44; + @assert imgdata.data[1] === 0x88; + @assert imgdata.data[2] === 0xCC; + @assert imgdata.data[3] === 255; + @assert imgdata.data[4] === 0x44; + @assert imgdata.data[5] === 0x88; + @assert imgdata.data[6] === 0xCC; + @assert imgdata.data[7] === 255; + +- name: 2d.imageData.get.order.alpha + desc: getImageData() returns A in the fourth component + testing: + - 2d.pixelarray.order + code: | + ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[3] < 200; + @assert imgdata.data[3] > 100; + +- name: 2d.imageData.get.unaffected + desc: getImageData() is not affected by context state + testing: + - 2d.imageData.unaffected + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50) + ctx.save(); + ctx.translate(50, 0); + ctx.globalAlpha = 0.1; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#f00'; + ctx.rect(0, 0, 5, 5); + ctx.clip(); + var imgdata = ctx.getImageData(0, 0, 50, 50); + ctx.restore(); + ctx.putImageData(imgdata, 50, 0); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + + +- name: 2d.imageData.object.properties + desc: ImageData objects have the right properties + testing: + - 2d.imageData.type + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert typeof(imgdata.width) === 'number'; + @assert typeof(imgdata.height) === 'number'; + @assert typeof(imgdata.data) === 'object'; + +- name: 2d.imageData.object.readonly + desc: ImageData objects properties are read-only + testing: + - 2d.imageData.type + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + var w = imgdata.width; + var h = imgdata.height; + var d = imgdata.data; + imgdata.width = 123; + imgdata.height = 123; + imgdata.data = [100,100,100,100]; + @assert imgdata.width === w; + @assert imgdata.height === h; + @assert imgdata.data === d; + @assert imgdata.data[0] === 0; + @assert imgdata.data[1] === 0; + @assert imgdata.data[2] === 0; + @assert imgdata.data[3] === 0; + +- name: 2d.imageData.object.set + desc: ImageData.data can be modified + testing: + - 2d.pixelarray.modify + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + @assert imgdata.data[0] === 100; + imgdata.data[0] = 200; + @assert imgdata.data[0] === 200; + +- name: 2d.imageData.object.undefined + desc: ImageData.data converts undefined to 0 + testing: + - 2d.pixelarray.modify + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = undefined; + @assert imgdata.data[0] === 0; + +- name: 2d.imageData.object.nan + desc: ImageData.data converts NaN to 0 + testing: + - 2d.pixelarray.modify + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = NaN; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = "cheese"; + @assert imgdata.data[0] === 0; + +- name: 2d.imageData.object.string + desc: ImageData.data converts strings to numbers with ToNumber + testing: + - 2d.pixelarray.modify + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = "110"; + @assert imgdata.data[0] === 110; + imgdata.data[0] = 100; + imgdata.data[0] = "0x78"; + @assert imgdata.data[0] === 120; + imgdata.data[0] = 100; + imgdata.data[0] = " +130e0 "; + @assert imgdata.data[0] === 130; + +- name: 2d.imageData.object.clamp + desc: ImageData.data clamps numbers to [0, 255] + testing: + - 2d.pixelarray.modify + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = 300; + @assert imgdata.data[0] === 255; + imgdata.data[0] = 100; + imgdata.data[0] = -100; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = 200+Math.pow(2, 32); + @assert imgdata.data[0] === 255; + imgdata.data[0] = 100; + imgdata.data[0] = -200-Math.pow(2, 32); + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = Math.pow(10, 39); + @assert imgdata.data[0] === 255; + imgdata.data[0] = 100; + imgdata.data[0] = -Math.pow(10, 39); + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = -Infinity; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = Infinity; + @assert imgdata.data[0] === 255; + +- name: 2d.imageData.object.round + desc: ImageData.data rounds numbers with round-to-zero + testing: + - 2d.pixelarray.modify + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 0.499; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 0.5; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 0.501; + @assert imgdata.data[0] === 1; + imgdata.data[0] = 1.499; + @assert imgdata.data[0] === 1; + imgdata.data[0] = 1.5; + @assert imgdata.data[0] === 2; + imgdata.data[0] = 1.501; + @assert imgdata.data[0] === 2; + imgdata.data[0] = 2.5; + @assert imgdata.data[0] === 2; + imgdata.data[0] = 3.5; + @assert imgdata.data[0] === 4; + imgdata.data[0] = 252.5; + @assert imgdata.data[0] === 252; + imgdata.data[0] = 253.5; + @assert imgdata.data[0] === 254; + imgdata.data[0] = 254.5; + @assert imgdata.data[0] === 254; + imgdata.data[0] = 256.5; + @assert imgdata.data[0] === 255; + imgdata.data[0] = -0.5; + @assert imgdata.data[0] === 0; + imgdata.data[0] = -1.5; + @assert imgdata.data[0] === 0; + +- name: 2d.imageData.put.null + desc: putImageData() with null imagedata throws TypeError + testing: + - 2d.imageData.put.wrongtype + code: | + @assert throws TypeError ctx.putImageData(null, 0, 0); + +- name: 2d.imageData.put.nonfinite + desc: putImageData() throws TypeError if arguments are not finite + testing: + - 2d.imageData.put.nonfinite + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + +- name: 2d.imageData.put.basic + desc: putImageData() puts image data from getImageData() onto the canvas + testing: + - 2d.imageData.put.normal + - 2d.imageData.put.3arg + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.created + desc: putImageData() puts image data from createImageData() onto the canvas + testing: + - 2d.imageData.put.normal + code: | + var imgdata = ctx.createImageData(100, 50); + for (var i = 0; i < imgdata.data.length; i += 4) { + imgdata.data[i] = 0; + imgdata.data[i+1] = 255; + imgdata.data[i+2] = 0; + imgdata.data[i+3] = 255; + } + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.wrongtype + desc: putImageData() does not accept non-ImageData objects + testing: + - 2d.imageData.put.wrongtype + code: | + var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; + @assert throws TypeError ctx.putImageData(imgdata, 0, 0); + @assert throws TypeError ctx.putImageData("cheese", 0, 0); + @assert throws TypeError ctx.putImageData(42, 0, 0); + +- name: 2d.imageData.put.cross + desc: putImageData() accepts image data got from a different canvas + testing: + - 2d.imageData.put.normal + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var ctx2 = offscreenCanvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50) + var imgdata = ctx2.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.alpha + desc: putImageData() puts non-solid image data correctly + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,64; + +- name: 2d.imageData.put.modified + desc: putImageData() puts modified image data correctly + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(45, 20, 10, 10) + var imgdata = ctx.getImageData(45, 20, 10, 10); + for (var i = 0, len = imgdata.width*imgdata.height*4; i < len; i += 4) + { + imgdata.data[i] = 0; + imgdata.data[i+1] = 255; + } + ctx.putImageData(imgdata, 45, 20); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.dirty.zero + desc: putImageData() with zero-sized dirty rectangle puts nothing + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0, 0, 0, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.dirty.rect1 + desc: putImageData() only modifies areas inside the dirty rectangle, using width and height + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 20, 20) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(40, 20, 20, 20) + ctx.putImageData(imgdata, 40, 20, 0, 0, 20, 20); + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 35,25 ==~ 0,255,0,255; + @assert pixel 65,25 ==~ 0,255,0,255; + @assert pixel 50,15 ==~ 0,255,0,255; + @assert pixel 50,45 ==~ 0,255,0,255; + +- name: 2d.imageData.put.dirty.rect2 + desc: putImageData() only modifies areas inside the dirty rectangle, using x and y + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(60, 30, 20, 20) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(40, 20, 20, 20) + ctx.putImageData(imgdata, -20, -10, 60, 30, 20, 20); + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 35,25 ==~ 0,255,0,255; + @assert pixel 65,25 ==~ 0,255,0,255; + @assert pixel 50,15 ==~ 0,255,0,255; + @assert pixel 50,45 ==~ 0,255,0,255; + +- name: 2d.imageData.put.dirty.negative + desc: putImageData() handles negative-sized dirty rectangles correctly + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 20, 20) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(40, 20, 20, 20) + ctx.putImageData(imgdata, 40, 20, 20, 20, -20, -20); + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 35,25 ==~ 0,255,0,255; + @assert pixel 65,25 ==~ 0,255,0,255; + @assert pixel 50,15 ==~ 0,255,0,255; + @assert pixel 50,45 ==~ 0,255,0,255; + +- name: 2d.imageData.put.dirty.outside + desc: putImageData() handles dirty rectangles outside the canvas correctly + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 100, 20, 20, 20, -20, -20); + ctx.putImageData(imgdata, 200, 200, 0, 0, 100, 50); + ctx.putImageData(imgdata, 40, 20, -30, -20, 30, 20); + ctx.putImageData(imgdata, -30, 20, 0, 0, 30, 20); + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 98,15 ==~ 0,255,0,255; + @assert pixel 98,25 ==~ 0,255,0,255; + @assert pixel 98,45 ==~ 0,255,0,255; + @assert pixel 1,5 ==~ 0,255,0,255; + @assert pixel 1,25 ==~ 0,255,0,255; + @assert pixel 1,45 ==~ 0,255,0,255; + +- name: 2d.imageData.put.unchanged + desc: putImageData(getImageData(...), ...) has no effect + testing: + - 2d.imageData.unchanged + code: | + var i = 0; + for (var y = 0; y < 16; ++y) { + for (var x = 0; x < 16; ++x, ++i) { + ctx.fillStyle = 'rgba(' + i + ',' + (Math.floor(i*1.5) % 256) + ',' + (Math.floor(i*23.3) % 256) + ',' + (i/256) + ')'; + ctx.fillRect(x, y, 1, 1); + } + } + var imgdata1 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); + var olddata = []; + for (var i = 0; i < imgdata1.data.length; ++i) + olddata[i] = imgdata1.data[i]; + ctx.putImageData(imgdata1, 0.1, 0.2); + var imgdata2 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); + for (var i = 0; i < imgdata2.data.length; ++i) { + @assert olddata[i] === imgdata2.data[i]; + } + +- name: 2d.imageData.put.unaffected + desc: putImageData() is not affected by context state + testing: + - 2d.imageData.unaffected + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.globalAlpha = 0.1; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 1; + ctx.translate(100, 50); + ctx.scale(0.1, 0.1); + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.clip + desc: putImageData() is not affected by clipping regions + testing: + - 2d.imageData.unaffected + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.putImageData(imgdata, 0, 0); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + +- name: 2d.imageData.put.path + desc: putImageData() does not affect the current path + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.rect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 ==~ 0,255,0,255; + +- name: 2d.line.defaults + testing: + - 2d.lineWidth.default + - 2d.lineCap.default + - 2d.lineJoin.default + - 2d.miterLimit.default + code: | + @assert ctx.lineWidth === 1; + @assert ctx.lineCap === 'butt'; + @assert ctx.lineJoin === 'miter'; + @assert ctx.miterLimit === 10; + +- name: 2d.line.width.basic + desc: lineWidth determines the width of line strokes + testing: + - 2d.lineWidth + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 20; + // Draw a green line over a red box, to check the line is not too small + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 15, 20, 20); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + // Draw a green box over a red line, to check the line is not too large + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 15, 20, 20); + @assert pixel 14,25 == 0,255,0,255; + @assert pixel 15,25 == 0,255,0,255; + @assert pixel 16,25 == 0,255,0,255; + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 34,25 == 0,255,0,255; + @assert pixel 35,25 == 0,255,0,255; + @assert pixel 36,25 == 0,255,0,255; + @assert pixel 64,25 == 0,255,0,255; + @assert pixel 65,25 == 0,255,0,255; + @assert pixel 66,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + @assert pixel 84,25 == 0,255,0,255; + @assert pixel 85,25 == 0,255,0,255; + @assert pixel 86,25 == 0,255,0,255; + +- name: 2d.line.width.transformed + desc: Line stroke widths are affected by scale transformations + testing: + - 2d.lineWidth + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 4; + // Draw a green line over a red box, to check the line is not too small + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 15, 20, 20); + ctx.save(); + ctx.scale(5, 1); + ctx.beginPath(); + ctx.moveTo(5, 15); + ctx.lineTo(5, 35); + ctx.stroke(); + ctx.restore(); + // Draw a green box over a red line, to check the line is not too large + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.save(); + ctx.scale(-5, 1); + ctx.beginPath(); + ctx.moveTo(-15, 15); + ctx.lineTo(-15, 35); + ctx.stroke(); + ctx.restore(); + ctx.fillRect(65, 15, 20, 20); + @assert pixel 14,25 == 0,255,0,255; + @assert pixel 15,25 == 0,255,0,255; + @assert pixel 16,25 == 0,255,0,255; + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 34,25 == 0,255,0,255; + @assert pixel 35,25 == 0,255,0,255; + @assert pixel 36,25 == 0,255,0,255; + @assert pixel 64,25 == 0,255,0,255; + @assert pixel 65,25 == 0,255,0,255; + @assert pixel 66,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + @assert pixel 84,25 == 0,255,0,255; + @assert pixel 85,25 == 0,255,0,255; + @assert pixel 86,25 == 0,255,0,255; + +- name: 2d.line.width.scaledefault + desc: Default lineWidth strokes are affected by scale transformations + testing: + - 2d.lineWidth + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(50, 50); + ctx.strokeStyle = '#0f0'; + ctx.moveTo(0, 0.5); + ctx.lineTo(2, 0.5); + ctx.stroke(); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + @assert pixel 50,5 == 0,255,0,255; + @assert pixel 50,45 == 0,255,0,255; + +- name: 2d.line.width.valid + desc: Setting lineWidth to valid values works + testing: + - 2d.lineWidth.set + - 2d.lineWidth.get + code: | + ctx.lineWidth = 1.5; + @assert ctx.lineWidth === 1.5; + ctx.lineWidth = "1e1"; + @assert ctx.lineWidth === 10; + ctx.lineWidth = 1/1024; + @assert ctx.lineWidth === 1/1024; + ctx.lineWidth = 1000; + @assert ctx.lineWidth === 1000; + +- name: 2d.line.width.invalid + desc: Setting lineWidth to invalid values is ignored + testing: + - 2d.lineWidth.invalid + code: | + ctx.lineWidth = 1.5; + @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = 0; + @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = -1; + @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = Infinity; + @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = -Infinity; + @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = NaN; + @assert ctx.lineWidth === 1.5; + +- name: 2d.line.cap.butt + desc: lineCap 'butt' is rendered correctly + testing: + - 2d.lineCap.butt + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineCap = 'butt'; + ctx.lineWidth = 20; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 15, 20, 20); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 15, 20, 20); + @assert pixel 25,14 == 0,255,0,255; + @assert pixel 25,15 == 0,255,0,255; + @assert pixel 25,16 == 0,255,0,255; + @assert pixel 25,34 == 0,255,0,255; + @assert pixel 25,35 == 0,255,0,255; + @assert pixel 25,36 == 0,255,0,255; + @assert pixel 75,14 == 0,255,0,255; + @assert pixel 75,15 == 0,255,0,255; + @assert pixel 75,16 == 0,255,0,255; + @assert pixel 75,34 == 0,255,0,255; + @assert pixel 75,35 == 0,255,0,255; + @assert pixel 75,36 == 0,255,0,255; + +- name: 2d.line.cap.round + desc: lineCap 'round' is rendered correctly + testing: + - 2d.lineCap.round + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var tol = 1; // tolerance to avoid antialiasing artifacts + ctx.lineCap = 'round'; + ctx.lineWidth = 20; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(35-tol, 15); + ctx.arc(25, 15, 10-tol, 0, Math.PI, true); + ctx.arc(25, 35, 10-tol, Math.PI, 0, true); + ctx.fill(); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(85+tol, 15); + ctx.arc(75, 15, 10+tol, 0, Math.PI, true); + ctx.arc(75, 35, 10+tol, Math.PI, 0, true); + ctx.fill(); + @assert pixel 17,6 == 0,255,0,255; + @assert pixel 25,6 == 0,255,0,255; + @assert pixel 32,6 == 0,255,0,255; + @assert pixel 17,43 == 0,255,0,255; + @assert pixel 25,43 == 0,255,0,255; + @assert pixel 32,43 == 0,255,0,255; + @assert pixel 67,6 == 0,255,0,255; + @assert pixel 75,6 == 0,255,0,255; + @assert pixel 82,6 == 0,255,0,255; + @assert pixel 67,43 == 0,255,0,255; + @assert pixel 75,43 == 0,255,0,255; + @assert pixel 82,43 == 0,255,0,255; + +- name: 2d.line.cap.square + desc: lineCap 'square' is rendered correctly + testing: + - 2d.lineCap.square + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineCap = 'square'; + ctx.lineWidth = 20; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 5, 20, 40); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 5, 20, 40); + @assert pixel 25,4 == 0,255,0,255; + @assert pixel 25,5 == 0,255,0,255; + @assert pixel 25,6 == 0,255,0,255; + @assert pixel 25,44 == 0,255,0,255; + @assert pixel 25,45 == 0,255,0,255; + @assert pixel 25,46 == 0,255,0,255; + @assert pixel 75,4 == 0,255,0,255; + @assert pixel 75,5 == 0,255,0,255; + @assert pixel 75,6 == 0,255,0,255; + @assert pixel 75,44 == 0,255,0,255; + @assert pixel 75,45 == 0,255,0,255; + @assert pixel 75,46 == 0,255,0,255; + +- name: 2d.line.cap.open + desc: Line caps are drawn at the corners of an unclosed rectangle + testing: + - 2d.lineCap.end + code: | + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineJoin = 'bevel'; + ctx.lineCap = 'square'; + ctx.lineWidth = 400; + ctx.beginPath(); + ctx.moveTo(200, 200); + ctx.lineTo(200, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 200); + ctx.lineTo(200, 200); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.cap.closed + desc: Line caps are not drawn at the corners of an unclosed rectangle + testing: + - 2d.lineCap.end + code: | + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineJoin = 'bevel'; + ctx.lineCap = 'square'; + ctx.lineWidth = 400; + ctx.beginPath(); + ctx.moveTo(200, 200); + ctx.lineTo(200, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 200); + ctx.closePath(); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.cap.valid + desc: Setting lineCap to valid values works + testing: + - 2d.lineCap.set + - 2d.lineCap.get + code: | + ctx.lineCap = 'butt' + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'round'; + @assert ctx.lineCap === 'round'; + ctx.lineCap = 'square'; + @assert ctx.lineCap === 'square'; + +- name: 2d.line.cap.invalid + desc: Setting lineCap to invalid values is ignored + testing: + - 2d.lineCap.invalid + code: | + ctx.lineCap = 'butt' + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'invalid'; + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'ROUND'; + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'round\0'; + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'round '; + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = ""; + @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'bevel'; + @assert ctx.lineCap === 'butt'; + +- name: 2d.line.join.bevel + desc: lineJoin 'bevel' is rendered correctly + testing: + - 2d.lineJoin.common + - 2d.lineJoin.bevel + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var tol = 1; // tolerance to avoid antialiasing artifacts + ctx.lineJoin = 'bevel'; + ctx.lineWidth = 20; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(10, 10, 20, 20); + ctx.fillRect(20, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(30, 20); + ctx.lineTo(40-tol, 20); + ctx.lineTo(30, 10+tol); + ctx.fill(); + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + ctx.fillRect(60, 10, 20, 20); + ctx.fillRect(70, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(80, 20); + ctx.lineTo(90+tol, 20); + ctx.lineTo(80, 10-tol); + ctx.fill(); + @assert pixel 34,16 == 0,255,0,255; + @assert pixel 34,15 == 0,255,0,255; + @assert pixel 35,15 == 0,255,0,255; + @assert pixel 36,15 == 0,255,0,255; + @assert pixel 36,14 == 0,255,0,255; + @assert pixel 84,16 == 0,255,0,255; + @assert pixel 84,15 == 0,255,0,255; + @assert pixel 85,15 == 0,255,0,255; + @assert pixel 86,15 == 0,255,0,255; + @assert pixel 86,14 == 0,255,0,255; + +- name: 2d.line.join.round + desc: lineJoin 'round' is rendered correctly + testing: + - 2d.lineJoin.round + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var tol = 1; // tolerance to avoid antialiasing artifacts + ctx.lineJoin = 'round'; + ctx.lineWidth = 20; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(10, 10, 20, 20); + ctx.fillRect(20, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(30, 20); + ctx.arc(30, 20, 10-tol, 0, 2*Math.PI, true); + ctx.fill(); + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + ctx.fillRect(60, 10, 20, 20); + ctx.fillRect(70, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(80, 20); + ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); + ctx.fill(); + @assert pixel 36,14 == 0,255,0,255; + @assert pixel 36,13 == 0,255,0,255; + @assert pixel 37,13 == 0,255,0,255; + @assert pixel 38,13 == 0,255,0,255; + @assert pixel 38,12 == 0,255,0,255; + @assert pixel 86,14 == 0,255,0,255; + @assert pixel 86,13 == 0,255,0,255; + @assert pixel 87,13 == 0,255,0,255; + @assert pixel 88,13 == 0,255,0,255; + @assert pixel 88,12 == 0,255,0,255; + +- name: 2d.line.join.miter + desc: lineJoin 'miter' is rendered correctly + testing: + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineJoin = 'miter'; + ctx.lineWidth = 20; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(10, 10, 30, 20); + ctx.fillRect(20, 10, 20, 30); + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + ctx.fillRect(60, 10, 30, 20); + ctx.fillRect(70, 10, 20, 30); + @assert pixel 38,12 == 0,255,0,255; + @assert pixel 39,11 == 0,255,0,255; + @assert pixel 40,10 == 0,255,0,255; + @assert pixel 41,9 == 0,255,0,255; + @assert pixel 42,8 == 0,255,0,255; + @assert pixel 88,12 == 0,255,0,255; + @assert pixel 89,11 == 0,255,0,255; + @assert pixel 90,10 == 0,255,0,255; + @assert pixel 91,9 == 0,255,0,255; + @assert pixel 92,8 == 0,255,0,255; + +- name: 2d.line.join.open + desc: Line joins are not drawn at the corner of an unclosed rectangle + testing: + - 2d.lineJoin.joins + code: | + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineJoin = 'miter'; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.moveTo(100, 50); + ctx.lineTo(100, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 50); + ctx.lineTo(100, 50); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.join.closed + desc: Line joins are drawn at the corner of a closed rectangle + testing: + - 2d.lineJoin.joinclosed + code: | + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineJoin = 'miter'; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.moveTo(100, 50); + ctx.lineTo(100, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 50); + ctx.closePath(); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.join.parallel + desc: Line joins are drawn at 180-degree joins + testing: + - 2d.lineJoin.joins + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 300; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.lineTo(0, 25); + ctx.lineTo(-100, 25); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.join.valid + desc: Setting lineJoin to valid values works + testing: + - 2d.lineJoin.set + - 2d.lineJoin.get + code: | + ctx.lineJoin = 'bevel' + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'round'; + @assert ctx.lineJoin === 'round'; + ctx.lineJoin = 'miter'; + @assert ctx.lineJoin === 'miter'; + +- name: 2d.line.join.invalid + desc: Setting lineJoin to invalid values is ignored + testing: + - 2d.lineJoin.invalid + code: | + ctx.lineJoin = 'bevel' + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'invalid'; + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'ROUND'; + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'round\0'; + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'round '; + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = ""; + @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'butt'; + @assert ctx.lineJoin === 'bevel'; + +- name: 2d.line.miter.exceeded + desc: Miter joins are not drawn when the miter limit is exceeded + testing: + - 2d.lineJoin.miterLimit + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.miter.acute + desc: Miter joins are drawn correctly with acute angles + testing: + - 2d.lineJoin.miterLimit + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.strokeStyle = '#0f0'; + ctx.miterLimit = 2.614; + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(100, 100); + ctx.lineTo(1000, 1000); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 2.613; + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(100, 100); + ctx.lineTo(1000, 1000); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.miter.obtuse + desc: Miter joins are drawn correctly with obtuse angles + testing: + - 2d.lineJoin.miterLimit + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 1600; + ctx.lineJoin = 'miter'; + ctx.strokeStyle = '#0f0'; + ctx.miterLimit = 1.083; + ctx.beginPath(); + ctx.moveTo(800, 10000); + ctx.lineTo(800, 300); + ctx.lineTo(10000, -8900); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.082; + ctx.beginPath(); + ctx.moveTo(800, 10000); + ctx.lineTo(800, 300); + ctx.lineTo(10000, -8900); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.miter.rightangle + desc: Miter joins are not drawn when the miter limit is exceeded, on exact right angles + testing: + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 200); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.miter.lineedge + desc: Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle + testing: + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.strokeRect(100, 25, 200, 0); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.miter.within + desc: Miter joins are drawn when the miter limit is not quite exceeded + testing: + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + ctx.strokeStyle = '#0f0'; + ctx.miterLimit = 1.416; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 201); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.miter.valid + desc: Setting miterLimit to valid values works + testing: + - 2d.miterLimit.set + - 2d.miterLimit.get + code: | + ctx.miterLimit = 1.5; + @assert ctx.miterLimit === 1.5; + ctx.miterLimit = "1e1"; + @assert ctx.miterLimit === 10; + ctx.miterLimit = 1/1024; + @assert ctx.miterLimit === 1/1024; + ctx.miterLimit = 1000; + @assert ctx.miterLimit === 1000; + +- name: 2d.line.miter.invalid + desc: Setting miterLimit to invalid values is ignored + testing: + - 2d.miterLimit.invalid + code: | + ctx.miterLimit = 1.5; + @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = 0; + @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = -1; + @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = Infinity; + @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = -Infinity; + @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = NaN; + @assert ctx.miterLimit === 1.5; + +- name: 2d.line.cross + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.lineJoin = 'bevel'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(110, 50); + ctx.lineTo(110, 60); + ctx.lineTo(100, 60); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + +- name: 2d.line.union + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 24); + ctx.lineTo(100, 25); + ctx.lineTo(0, 26); + ctx.closePath(); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 25,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 25,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + +- name: 2d.path.initial + testing: + - 2d.path.initial + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.closePath(); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.beginPath + testing: + - 2d.path.beginPath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.moveTo.basic + testing: + - 2d.path.moveTo + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 10, 50); + ctx.moveTo(100, 0); + ctx.lineTo(10, 0); + ctx.lineTo(10, 50); + ctx.lineTo(100, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 90,25 == 0,255,0,255; + +- name: 2d.path.moveTo.newsubpath + testing: + - 2d.path.moveTo + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.moveTo(100, 0); + ctx.moveTo(100, 50); + ctx.moveTo(0, 50); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.moveTo.multiple + testing: + - 2d.path.moveTo + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 25); + ctx.moveTo(100, 25); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.moveTo.nonfinite + desc: moveTo() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.moveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.closePath.empty + testing: + - 2d.path.closePath.empty + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.closePath(); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.closePath.newline + testing: + - 2d.path.closePath.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -100); + ctx.lineTo(200, -100); + ctx.lineTo(200, 25); + ctx.closePath(); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.closePath.nextpoint + testing: + - 2d.path.closePath.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -1000); + ctx.closePath(); + ctx.lineTo(1000, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.lineTo.ensuresubpath.1 + desc: If there is no subpath, the point is added and nothing is drawn + testing: + - 2d.path.lineTo.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.lineTo(100, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.lineTo.ensuresubpath.2 + desc: If there is no subpath, the point is added and used for subsequent drawing + testing: + - 2d.path.lineTo.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.lineTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.lineTo.basic + testing: + - 2d.path.lineTo.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.lineTo.nextpoint + testing: + - 2d.path.lineTo.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.lineTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.lineTo.nonfinite + desc: lineTo() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.lineTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; + +- name: 2d.path.lineTo.nonfinite.details + desc: lineTo() with Infinity/NaN for first arg still converts the second arg + testing: + - 2d.nonfinite + code: | + for (var arg1 of [Infinity, -Infinity, NaN]) { + var converted = false; + ctx.lineTo(arg1, { valueOf: function() { converted = true; return 0; } }); + @assert converted; + } + +- name: 2d.path.quadraticCurveTo.ensuresubpath.1 + desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) + testing: + - 2d.path.quadratic.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.quadraticCurveTo(100, 50, 200, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 95,45 == 0,255,0,255; @moz-todo + +- name: 2d.path.quadraticCurveTo.ensuresubpath.2 + desc: If there is no subpath, the first control point is added + testing: + - 2d.path.quadratic.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.quadraticCurveTo(0, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 5,45 == 0,255,0,255; @moz-todo + +- name: 2d.path.quadraticCurveTo.basic + testing: + - 2d.path.quadratic.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.quadraticCurveTo(100, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.quadraticCurveTo.shape + testing: + - 2d.path.quadratic.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 55; + ctx.beginPath(); + ctx.moveTo(-1000, 1050); + ctx.quadraticCurveTo(0, -1000, 1200, 1050); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.quadraticCurveTo.scaled + testing: + - 2d.path.quadratic.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1000, 1000); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 0.055; + ctx.beginPath(); + ctx.moveTo(-1, 1.05); + ctx.quadraticCurveTo(0, -1, 1.2, 1.05); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.quadraticCurveTo.nonfinite + desc: quadraticCurveTo() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.quadraticCurveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; + +- name: 2d.path.bezierCurveTo.ensuresubpath.1 + desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) + testing: + - 2d.path.bezier.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 95,45 == 0,255,0,255; + +- name: 2d.path.bezierCurveTo.ensuresubpath.2 + desc: If there is no subpath, the first control point is added + testing: + - 2d.path.bezier.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 5,45 == 0,255,0,255; + +- name: 2d.path.bezierCurveTo.basic + testing: + - 2d.path.bezier.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.bezierCurveTo.shape + testing: + - 2d.path.bezier.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 55; + ctx.beginPath(); + ctx.moveTo(-2000, 3100); + ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.bezierCurveTo.scaled + testing: + - 2d.path.bezier.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1000, 1000); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 0.055; + ctx.beginPath(); + ctx.moveTo(-2, 3.1); + ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.bezierCurveTo.nonfinite + desc: bezierCurveTo() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.bezierCurveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; + +- name: 2d.path.arcTo.ensuresubpath.1 + desc: If there is no subpath, the first control point is added (and nothing is drawn up to it) + testing: + - 2d.path.arcTo.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arcTo(100, 50, 200, 50, 0.1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.ensuresubpath.2 + desc: If there is no subpath, the first control point is added + testing: + - 2d.path.arcTo.empty + - 2d.path.ensure + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.coincide.1 + desc: arcTo() has no effect if P0 = P1 + testing: + - 2d.path.arcTo.coincide.01 + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(0, 25, 50, 1000, 1); + ctx.lineTo(100, 25); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arcTo(50, 25, 100, 25, 1); + ctx.stroke(); + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + +- name: 2d.path.arcTo.coincide.2 + desc: arcTo() draws a straight line to P1 if P1 = P2 + testing: + - 2d.path.arcTo.coincide.12 + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 100, 25, 1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.collinear.1 + desc: arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 + testing: + - 2d.path.arcTo.collinear + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 200, 25, 1); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.arcTo(0, 25, 100, 25, 1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.collinear.2 + desc: arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 + testing: + - 2d.path.arcTo.collinear + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 10, 25, 1); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 110, 25, 1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.collinear.3 + desc: arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 + testing: + - 2d.path.arcTo.collinear + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, -100, 25, 1); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 0, 25, 1); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.arcTo(0, 25, -200, 25, 1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.shape.curve1 + desc: arcTo() curves in the right kind of shape + testing: + - 2d.path.arcTo.shape + code: | + var tol = 1.5; // tolerance to avoid antialiasing artifacts + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.moveTo(10, 25); + ctx.arcTo(75, 25, 75, 60, 20); + ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.rect(10, 20, 45, 10); + ctx.moveTo(80, 45); + ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); + ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 55,19 == 0,255,0,255; + @assert pixel 55,20 == 0,255,0,255; + @assert pixel 55,21 == 0,255,0,255; + @assert pixel 64,22 == 0,255,0,255; + @assert pixel 65,21 == 0,255,0,255; + @assert pixel 72,28 == 0,255,0,255; + @assert pixel 73,27 == 0,255,0,255; + @assert pixel 78,36 == 0,255,0,255; + @assert pixel 79,35 == 0,255,0,255; + @assert pixel 80,44 == 0,255,0,255; + @assert pixel 80,45 == 0,255,0,255; + @assert pixel 80,46 == 0,255,0,255; + @assert pixel 65,45 == 0,255,0,255; + +- name: 2d.path.arcTo.shape.curve2 + desc: arcTo() curves in the right kind of shape + testing: + - 2d.path.arcTo.shape + code: | + var tol = 1.5; // tolerance to avoid antialiasing artifacts + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.rect(10, 20, 45, 10); + ctx.moveTo(80, 45); + ctx.arc(55, 45, 25-tol, 0, -Math.PI/2, true); + ctx.arc(55, 45, 15+tol, -Math.PI/2, 0, false); + ctx.fill(); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.moveTo(10, 25); + ctx.arcTo(75, 25, 75, 60, 20); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 55,19 == 0,255,0,255; + @assert pixel 55,20 == 0,255,0,255; + @assert pixel 55,21 == 0,255,0,255; + @assert pixel 64,22 == 0,255,0,255; + @assert pixel 65,21 == 0,255,0,255; + @assert pixel 72,28 == 0,255,0,255; + @assert pixel 73,27 == 0,255,0,255; + @assert pixel 78,36 == 0,255,0,255; + @assert pixel 79,35 == 0,255,0,255; + @assert pixel 80,44 == 0,255,0,255; + @assert pixel 80,45 == 0,255,0,255; + @assert pixel 80,46 == 0,255,0,255; + +- name: 2d.path.arcTo.shape.start + desc: arcTo() draws a straight line from P0 to P1 + testing: + - 2d.path.arcTo.shape + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(200, 25, 200, 50, 10); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arcTo.shape.end + desc: arcTo() does not draw anything from P1 to P2 + testing: + - 2d.path.arcTo.shape + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.arcTo(-100, 25, 200, 25, 10); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arcTo.negative + desc: arcTo() with negative radius throws an exception + testing: + - 2d.path.arcTo.negative + code: | + @assert throws INDEX_SIZE_ERR ctx.arcTo(0, 0, 0, 0, -1); + +- name: 2d.path.arcTo.zero.1 + desc: arcTo() with zero radius draws a straight line from P0 to P1 + testing: + - 2d.path.arcTo.zeroradius + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 100, 100, 0); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(0, -25); + ctx.arcTo(50, -25, 50, 50, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.zero.2 + desc: arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear + testing: + - 2d.path.arcTo.zeroradius + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, -100, 25, 0); + ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 50, 25, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arcTo.transformation + desc: arcTo joins up to the last subpath point correctly + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 50); + ctx.translate(100, 0); + ctx.arcTo(50, 50, 50, 0, 50); + ctx.lineTo(-100, 0); + ctx.fill(); + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; + +- name: 2d.path.arcTo.scale + desc: arcTo scales the curve, not just the control points + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 50); + ctx.translate(100, 0); + ctx.scale(0.1, 1); + ctx.arcTo(50, 50, 50, 0, 50); + ctx.lineTo(-1000, 0); + ctx.fill(); + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; + +- name: 2d.path.arcTo.nonfinite + desc: arcTo() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.arcTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; + + +- name: 2d.path.arc.empty + desc: arc() with an empty path does not draw a straight line to the start point + testing: + - 2d.path.arc.nonempty + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(200, 25, 5, 0, 2*Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.nonempty + desc: arc() with a non-empty path does draw a straight line to the start point + testing: + - 2d.path.arc.nonempty + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arc(200, 25, 5, 0, 2*Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.end + desc: arc() adds the end point of the arc to the subpath + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(-100, 0); + ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.default + desc: arc() with missing last argument defaults to clockwise + testing: + - 2d.path.arc.omitted + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.angle.1 + desc: arc() draws pi/2 .. -pi anticlockwise correctly + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.angle.2 + desc: arc() draws -3pi/2 .. -pi anticlockwise correctly + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.angle.3 + desc: arc() wraps angles mod 2pi when anticlockwise and end > start+2pi + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.angle.4 + desc: arc() draws a full circle when clockwise and end > start+2pi + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.angle.5 + desc: arc() wraps angles mod 2pi when clockwise and start > end+2pi + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.angle.6 + desc: arc() draws a full circle when anticlockwise and start > end+2pi + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.zero.1 + desc: arc() draws nothing when startAngle = endAngle and anticlockwise + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 0, true); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; + +- name: 2d.path.arc.zero.2 + desc: arc() draws nothing when startAngle = endAngle and clockwise + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 0, false); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; + +- name: 2d.path.arc.twopie.1 + desc: arc() draws nothing when end = start + 2pi-e and anticlockwise + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; + +- name: 2d.path.arc.twopie.2 + desc: arc() draws a full circle when end = start + 2pi-e and clockwise + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; + +- name: 2d.path.arc.twopie.3 + desc: arc() draws a full circle when end = start + 2pi+e and anticlockwise + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; + +- name: 2d.path.arc.twopie.4 + desc: arc() draws nothing when end = start + 2pi+e and clockwise + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; + +- name: 2d.path.arc.shape.1 + desc: arc() from 0 to pi does not draw anything in the wrong half + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 20,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.shape.2 + desc: arc() from 0 to pi draws stuff in the right half + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 20,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.shape.3 + desc: arc() from 0 to -pi/2 does not draw anything in the wrong quadrant + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(0, 50, 50, 0, -Math.PI/2, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.shape.4 + desc: arc() from 0 to -pi/2 draws stuff in the right quadrant + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 150; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.shape.5 + desc: arc() from 0 to 5pi does not draw crazy things + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(300, 0, 100, 0, 5*Math.PI, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.selfintersect.1 + desc: arc() with lineWidth > 2*radius is drawn sensibly + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(100, 50, 25, 0, -Math.PI/2, true); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(0, 0, 25, 0, -Math.PI/2, true); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.selfintersect.2 + desc: arc() with lineWidth > 2*radius is drawn sensibly + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 180; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(-50, 50, 25, 0, -Math.PI/2, true); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(100, 0, 25, 0, -Math.PI/2, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,10 == 0,255,0,255; + @assert pixel 97,1 == 0,255,0,255; + @assert pixel 97,2 == 0,255,0,255; + @assert pixel 97,3 == 0,255,0,255; + @assert pixel 2,48 == 0,255,0,255; + +- name: 2d.path.arc.negative + desc: arc() with negative radius throws INDEX_SIZE_ERR + testing: + - 2d.path.arc.negative + code: | + @assert throws INDEX_SIZE_ERR ctx.arc(0, 0, -1, 0, 0, true); + +- name: 2d.path.arc.zeroradius + desc: arc() with zero radius draws a line to the start point + testing: + - 2d.path.arc.zero + code: | + ctx.fillStyle = '#f00' + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arc(200, 25, 0, 0, Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.arc.scale.1 + desc: Non-uniformly scaled arcs are the right shape + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 0.5); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(25, 50, 56, 0, 2*Math.PI, false); + ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(-25, 50); + ctx.arc(-25, 50, 24, 0, 2*Math.PI, false); + ctx.moveTo(75, 50); + ctx.arc(75, 50, 24, 0, 2*Math.PI, false); + ctx.moveTo(25, -25); + ctx.arc(25, -25, 24, 0, 2*Math.PI, false); + ctx.moveTo(25, 125); + ctx.arc(25, 125, 24, 0, 2*Math.PI, false); + ctx.fill(); + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; + +- name: 2d.path.arc.scale.2 + desc: Highly scaled arcs are the right shape + testing: + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(100, 100); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 1.2; + ctx.beginPath(); + ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.arc.nonfinite + desc: arc() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.arc(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <2*Math.PI Infinity -Infinity NaN>, ); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; + + +- name: 2d.path.rect.basic + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 100, 50); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.newsubpath + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-50, 25); + ctx.rect(200, 25, 1, 1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.closed + testing: + - 2d.path.rect.closed + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.rect(100, 50, 100, 100); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.end.1 + testing: + - 2d.path.rect.newsubpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.rect(200, 100, 400, 1000); + ctx.lineTo(-2000, -1000); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.end.2 + testing: + - 2d.path.rect.newsubpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 450; + ctx.lineCap = 'round'; + ctx.lineJoin = 'bevel'; + ctx.rect(150, 150, 2000, 2000); + ctx.lineTo(160, 160); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + +- name: 2d.path.rect.zero.1 + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(0, 50, 100, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.zero.2 + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(50, -100, 0, 250); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.zero.3 + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(50, 25, 0, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.zero.4 + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.rect(100, 25, 0, 0); + ctx.lineTo(0, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.zero.5 + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.moveTo(0, 0); + ctx.rect(100, 25, 0, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.rect.zero.6 + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 1.5; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.rect(100, 25, 1000, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.rect.negative + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 50, 25); + ctx.rect(100, 0, -50, 25); + ctx.rect(0, 50, 50, -25); + ctx.rect(100, 50, -50, -25); + ctx.fill(); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; + +- name: 2d.path.rect.winding + testing: + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#f00'; + ctx.rect(0, 0, 50, 50); + ctx.rect(100, 50, -50, -50); + ctx.rect(0, 25, 100, -25); + ctx.rect(100, 25, -100, 25); + ctx.fill(); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; + +- name: 2d.path.rect.selfintersect + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 90; + ctx.beginPath(); + ctx.rect(45, 20, 10, 10); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.rect.nonfinite + desc: rect() with Infinity/NaN is ignored + testing: + - 2d.nonfinite + code: | + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.rect(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; + +- name: 2d.path.fill.overlap + testing: + - 2d.path.fill.basic + code: | + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.rect(0, 0, 100, 50); + ctx.closePath(); + ctx.rect(10, 10, 80, 30); + ctx.fill(); + @assert pixel 50,25 ==~ 0,127,0,255 +/- 1; + +- name: 2d.path.fill.winding.add + testing: + - 2d.path.fill.basic + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.fill.winding.subtract.1 + testing: + - 2d.path.fill.basic + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.fill.winding.subtract.2 + testing: + - 2d.path.fill.basic + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.fill.winding.subtract.3 + testing: + - 2d.path.fill.basic + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(-20, -20); + ctx.lineTo(120, -20); + ctx.lineTo(120, 70); + ctx.lineTo(-20, 70); + ctx.lineTo(-20, -20); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.fill.closed.basic + testing: + - 2d.path.fill.closed + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.fill.closed.unaffected + testing: + - 2d.path.fill.closed + code: | + ctx.fillStyle = '#00f'; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.fillStyle = '#f00'; + ctx.fill(); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 90,10 == 0,255,0,255; + @assert pixel 10,40 == 0,255,0,255; + +- name: 2d.path.stroke.overlap + desc: Stroked subpaths are combined before being drawn + testing: + - 2d.path.stroke.basic + code: | + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.lineWidth = 50; + ctx.moveTo(0, 20); + ctx.lineTo(100, 20); + ctx.moveTo(0, 30); + ctx.lineTo(100, 30); + ctx.stroke(); + @assert pixel 50,25 ==~ 0,127,0,255 +/- 1; + +- name: 2d.path.stroke.union + desc: Strokes in opposite directions are unioned, not subtracted + testing: + - 2d.path.stroke.basic + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 40; + ctx.moveTo(0, 10); + ctx.lineTo(100, 10); + ctx.moveTo(100, 40); + ctx.lineTo(0, 40); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.stroke.unaffected + desc: Stroking does not start a new path or subpath + testing: + - 2d.path.stroke.basic + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -100); + ctx.lineTo(200, -100); + ctx.lineTo(200, 25); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.closePath(); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.stroke.scale1 + desc: Stroke line widths are scaled by the current transformation matrix + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(25, 12.5, 50, 25); + ctx.save(); + ctx.scale(50, 25); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + ctx.restore(); + ctx.beginPath(); + ctx.rect(-25, -12.5, 150, 75); + ctx.save(); + ctx.scale(50, 25); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; + +- name: 2d.path.stroke.scale2 + desc: Stroke line widths are scaled by the current transformation matrix + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(25, 12.5, 50, 25); + ctx.save(); + ctx.rotate(Math.PI/2); + ctx.scale(25, 50); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + ctx.restore(); + ctx.beginPath(); + ctx.rect(-25, -12.5, 150, 75); + ctx.save(); + ctx.rotate(Math.PI/2); + ctx.scale(25, 50); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; + +- name: 2d.path.stroke.skew + desc: Strokes lines are skewed by the current transformation matrix + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.beginPath(); + ctx.moveTo(49, -50); + ctx.lineTo(201, -50); + ctx.rotate(Math.PI/4); + ctx.scale(1, 283); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + ctx.restore(); + ctx.save(); + ctx.beginPath(); + ctx.translate(-150, 0); + ctx.moveTo(49, -50); + ctx.lineTo(199, -50); + ctx.rotate(Math.PI/4); + ctx.scale(1, 142); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + ctx.save(); + ctx.beginPath(); + ctx.translate(-150, 0); + ctx.moveTo(49, -50); + ctx.lineTo(199, -50); + ctx.rotate(Math.PI/4); + ctx.scale(1, 142); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; + +- name: 2d.path.stroke.empty + desc: Empty subpaths are not stroked + testing: + - 2d.path.stroke.empty + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(40, 25); + ctx.moveTo(60, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.stroke.prune.line + desc: Zero-length line segments from lineTo are removed before stroking + testing: + - 2d.path.stroke.prune + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.lineTo(50, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.stroke.prune.closed + desc: Zero-length line segments from closed paths are removed before stroking + testing: + - 2d.path.stroke.prune + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.lineTo(50, 25); + ctx.closePath(); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.stroke.prune.curve + desc: Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking + testing: + - 2d.path.stroke.prune + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.quadraticCurveTo(50, 25, 50, 25); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.stroke.prune.arc + desc: Zero-length line segments from arcTo and arc are removed before stroking + testing: + - 2d.path.stroke.prune + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arcTo(50, 25, 150, 25, 10); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(60, 25); + ctx.arc(50, 25, 10, 0, 0, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.stroke.prune.rect + desc: Zero-length line segments from rect and strokeRect are removed before stroking + testing: + - 2d.path.stroke.prune + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.rect(50, 25, 0, 0); + ctx.stroke(); + ctx.strokeRect(50, 25, 0, 0); + @assert pixel 50,25 == 0,255,0,255; @moz-todo + +- name: 2d.path.stroke.prune.corner + desc: Zero-length line segments are removed before stroking with miters + testing: + - 2d.path.stroke.prune + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 1.4; + ctx.beginPath(); + ctx.moveTo(-1000, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 1000); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.transformation.basic + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(-100, 0); + ctx.rect(100, 0, 100, 50); + ctx.translate(0, -100); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.transformation.multiple + desc: Transformations are applied while building paths, not when drawing + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.translate(-100, 0); + ctx.rect(0, 0, 100, 50); + ctx.fill(); + ctx.translate(100, 0); + ctx.fill(); + ctx.beginPath(); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.translate(0, -50); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + ctx.translate(0, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.transformation.changing + desc: Transformations are applied while building paths, not when drawing + testing: + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.moveTo(0, 0); + ctx.translate(100, 0); + ctx.lineTo(0, 0); + ctx.translate(0, 50); + ctx.lineTo(0, 0); + ctx.translate(-100, 0); + ctx.lineTo(0, 0); + ctx.translate(1000, 1000); + ctx.rotate(Math.PI/2); + ctx.scale(0.1, 0.1); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.empty + testing: + - 2d.path.clip.basic + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.basic.1 + testing: + - 2d.path.clip.basic + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(0, 0, 100, 50); + ctx.clip(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.basic.2 + testing: + - 2d.path.clip.basic + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(-100, 0, 100, 50); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.intersect + testing: + - 2d.path.clip.basic + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.beginPath(); + ctx.rect(50, 0, 50, 50) + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.winding.1 + testing: + - 2d.path.clip.basic + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.winding.2 + testing: + - 2d.path.clip.basic + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.clip(); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.lineTo(0, 0); + ctx.clip(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.clip.unaffected + testing: + - 2d.path.clip.closed + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.clip(); + ctx.lineTo(0, 0); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + +- name: 2d.path.isPointInPath.basic.1 + desc: isPointInPath() detects whether the point is inside the path + testing: + - 2d.path.isPointInPath + code: | + ctx.rect(0, 0, 20, 20); + @assert ctx.isPointInPath(10, 10) === true; + @assert ctx.isPointInPath(30, 10) === false; + +- name: 2d.path.isPointInPath.basic.2 + desc: isPointInPath() detects whether the point is inside the path + testing: + - 2d.path.isPointInPath + code: | + ctx.rect(20, 0, 20, 20); + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(30, 10) === true; + +- name: 2d.path.isPointInPath.edge + desc: isPointInPath() counts points on the path as being inside + testing: + - 2d.path.isPointInPath.edge + code: | + ctx.rect(0, 0, 20, 20); + @assert ctx.isPointInPath(0, 0) === true; + @assert ctx.isPointInPath(10, 0) === true; + @assert ctx.isPointInPath(20, 0) === true; + @assert ctx.isPointInPath(20, 10) === true; + @assert ctx.isPointInPath(20, 20) === true; + @assert ctx.isPointInPath(10, 20) === true; + @assert ctx.isPointInPath(0, 20) === true; + @assert ctx.isPointInPath(0, 10) === true; + @assert ctx.isPointInPath(10, -0.01) === false; + @assert ctx.isPointInPath(10, 20.01) === false; + @assert ctx.isPointInPath(-0.01, 10) === false; + @assert ctx.isPointInPath(20.01, 10) === false; + +- name: 2d.path.isPointInPath.empty + desc: isPointInPath() works when there is no path + testing: + - 2d.path.isPointInPath + code: | + @assert ctx.isPointInPath(0, 0) === false; + +- name: 2d.path.isPointInPath.subpath + desc: isPointInPath() uses the current path, not just the subpath + testing: + - 2d.path.isPointInPath + code: | + ctx.rect(0, 0, 20, 20); + ctx.beginPath(); + ctx.rect(20, 0, 20, 20); + ctx.closePath(); + ctx.rect(40, 0, 20, 20); + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(30, 10) === true; + @assert ctx.isPointInPath(50, 10) === true; + +- name: 2d.path.isPointInPath.outside + desc: isPointInPath() works on paths outside the canvas + testing: + - 2d.path.isPointInPath + code: | + ctx.rect(0, -100, 20, 20); + ctx.rect(20, -10, 20, 20); + @assert ctx.isPointInPath(10, -110) === false; + @assert ctx.isPointInPath(10, -90) === true; + @assert ctx.isPointInPath(10, -70) === false; + @assert ctx.isPointInPath(30, -20) === false; + @assert ctx.isPointInPath(30, 0) === true; + @assert ctx.isPointInPath(30, 20) === false; + +- name: 2d.path.isPointInPath.unclosed + desc: isPointInPath() works on unclosed subpaths + testing: + - 2d.path.isPointInPath + code: | + ctx.moveTo(0, 0); + ctx.lineTo(20, 0); + ctx.lineTo(20, 20); + ctx.lineTo(0, 20); + @assert ctx.isPointInPath(10, 10) === true; + @assert ctx.isPointInPath(30, 10) === false; + +- name: 2d.path.isPointInPath.arc + desc: isPointInPath() works on arcs + testing: + - 2d.path.isPointInPath + code: | + ctx.arc(50, 25, 10, 0, Math.PI, false); + @assert ctx.isPointInPath(50, 10) === false; + @assert ctx.isPointInPath(50, 20) === false; + @assert ctx.isPointInPath(50, 30) === true; + @assert ctx.isPointInPath(50, 40) === false; + @assert ctx.isPointInPath(30, 20) === false; + @assert ctx.isPointInPath(70, 20) === false; + @assert ctx.isPointInPath(30, 30) === false; + @assert ctx.isPointInPath(70, 30) === false; + +- name: 2d.path.isPointInPath.bigarc + desc: isPointInPath() works on unclosed arcs larger than 2pi + opera: { bug: 320937 } + testing: + - 2d.path.isPointInPath + code: | + ctx.arc(50, 25, 10, 0, 7, false); + @assert ctx.isPointInPath(50, 10) === false; + @assert ctx.isPointInPath(50, 20) === true; + @assert ctx.isPointInPath(50, 30) === true; + @assert ctx.isPointInPath(50, 40) === false; + @assert ctx.isPointInPath(30, 20) === false; + @assert ctx.isPointInPath(70, 20) === false; + @assert ctx.isPointInPath(30, 30) === false; + @assert ctx.isPointInPath(70, 30) === false; + +- name: 2d.path.isPointInPath.bezier + desc: isPointInPath() works on Bezier curves + testing: + - 2d.path.isPointInPath + code: | + ctx.moveTo(25, 25); + ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); + @assert ctx.isPointInPath(25, 20) === false; + @assert ctx.isPointInPath(25, 30) === false; + @assert ctx.isPointInPath(30, 20) === true; + @assert ctx.isPointInPath(30, 30) === false; + @assert ctx.isPointInPath(40, 2) === false; + @assert ctx.isPointInPath(40, 20) === true; + @assert ctx.isPointInPath(40, 30) === false; + @assert ctx.isPointInPath(40, 47) === false; + @assert ctx.isPointInPath(45, 20) === true; + @assert ctx.isPointInPath(45, 30) === false; + @assert ctx.isPointInPath(55, 20) === false; + @assert ctx.isPointInPath(55, 30) === true; + @assert ctx.isPointInPath(60, 2) === false; + @assert ctx.isPointInPath(60, 20) === false; + @assert ctx.isPointInPath(60, 30) === true; + @assert ctx.isPointInPath(60, 47) === false; + @assert ctx.isPointInPath(70, 20) === false; + @assert ctx.isPointInPath(70, 30) === true; + @assert ctx.isPointInPath(75, 20) === false; + @assert ctx.isPointInPath(75, 30) === false; + +- name: 2d.path.isPointInPath.winding + desc: isPointInPath() uses the non-zero winding number rule + testing: + - 2d.path.isPointInPath + code: | + // Create a square ring, using opposite windings to make a hole in the centre + ctx.moveTo(0, 0); + ctx.lineTo(50, 0); + ctx.lineTo(50, 50); + ctx.lineTo(0, 50); + ctx.lineTo(0, 0); + ctx.lineTo(10, 10); + ctx.lineTo(10, 40); + ctx.lineTo(40, 40); + ctx.lineTo(40, 10); + ctx.lineTo(10, 10); + @assert ctx.isPointInPath(5, 5) === true; + @assert ctx.isPointInPath(25, 5) === true; + @assert ctx.isPointInPath(45, 5) === true; + @assert ctx.isPointInPath(5, 25) === true; + @assert ctx.isPointInPath(25, 25) === false; + @assert ctx.isPointInPath(45, 25) === true; + @assert ctx.isPointInPath(5, 45) === true; + @assert ctx.isPointInPath(25, 45) === true; + @assert ctx.isPointInPath(45, 45) === true; + +- name: 2d.path.isPointInPath.transform.1 + desc: isPointInPath() handles transformations correctly + testing: + - 2d.path.isPointInPath + code: | + ctx.translate(50, 0); + ctx.rect(0, 0, 20, 20); + @assert ctx.isPointInPath(-40, 10) === false; + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(49, 10) === false; + @assert ctx.isPointInPath(51, 10) === true; + @assert ctx.isPointInPath(69, 10) === true; + @assert ctx.isPointInPath(71, 10) === false; + +- name: 2d.path.isPointInPath.transform.2 + desc: isPointInPath() handles transformations correctly + testing: + - 2d.path.isPointInPath + code: | + ctx.rect(50, 0, 20, 20); + ctx.translate(50, 0); + @assert ctx.isPointInPath(-40, 10) === false; + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(49, 10) === false; + @assert ctx.isPointInPath(51, 10) === true; + @assert ctx.isPointInPath(69, 10) === true; + @assert ctx.isPointInPath(71, 10) === false; + +- name: 2d.path.isPointInPath.transform.3 + desc: isPointInPath() handles transformations correctly + testing: + - 2d.path.isPointInPath + code: | + ctx.scale(-1, 1); + ctx.rect(-70, 0, 20, 20); + @assert ctx.isPointInPath(-40, 10) === false; + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(49, 10) === false; + @assert ctx.isPointInPath(51, 10) === true; + @assert ctx.isPointInPath(69, 10) === true; + @assert ctx.isPointInPath(71, 10) === false; + +- name: 2d.path.isPointInPath.transform.4 + desc: isPointInPath() handles transformations correctly + testing: + - 2d.path.isPointInPath + code: | + ctx.translate(50, 0); + ctx.rect(50, 0, 20, 20); + ctx.translate(0, 50); + @assert ctx.isPointInPath(60, 10) === false; + @assert ctx.isPointInPath(110, 10) === true; + @assert ctx.isPointInPath(110, 60) === false; + +- name: 2d.path.isPointInPath.nonfinite + desc: isPointInPath() returns false for non-finite arguments + testing: + - 2d.path.isPointInPath.nonfinite + code: | + ctx.rect(-100, -50, 200, 100); + @assert ctx.isPointInPath(Infinity, 0) === false; + @assert ctx.isPointInPath(-Infinity, 0) === false; + @assert ctx.isPointInPath(NaN, 0) === false; + @assert ctx.isPointInPath(0, Infinity) === false; + @assert ctx.isPointInPath(0, -Infinity) === false; + @assert ctx.isPointInPath(0, NaN) === false; + @assert ctx.isPointInPath(NaN, NaN) === false; + +- name: 2d.coordinatespace + desc: Coordinate space goes from top-left to bottom-right + notes: This should not be upside down. + testing: + - 2d.coordinatespace + code: | + ctx.fillStyle = '#00f'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0ff'; + ctx.fillRect(0, 0, 50, 25); + @assert pixel 25,12 == 0,255,255,255; + @assert pixel 75,12 == 0,0,255,255; + @assert pixel 25,37 == 0,0,255,255; + @assert pixel 75,37 == 0,0,255,255; + +- name: 2d.missingargs + desc: Missing arguments cause TypeError + code: | + @assert throws TypeError ctx.scale(); + @assert throws TypeError ctx.scale(1); + @assert throws TypeError ctx.rotate(); + @assert throws TypeError ctx.translate(); + @assert throws TypeError ctx.translate(0); + if (ctx.transform) { // (avoid spurious failures, since the aim here is not to test that all features are supported) + @assert throws TypeError ctx.transform(); + @assert throws TypeError ctx.transform(1); + @assert throws TypeError ctx.transform(1, 0); + @assert throws TypeError ctx.transform(1, 0, 0); + @assert throws TypeError ctx.transform(1, 0, 0, 1); + @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); + @assert throws TypeError ctx.setTransform(1, 0, 0, 1); + @assert throws TypeError ctx.setTransform(1, 0, 0, 1, 0); + } + @assert throws TypeError ctx.createLinearGradient(); + @assert throws TypeError ctx.createLinearGradient(0); + @assert throws TypeError ctx.createLinearGradient(0, 0); + @assert throws TypeError ctx.createLinearGradient(0, 0, 1); + @assert throws TypeError ctx.createRadialGradient(); + @assert throws TypeError ctx.createRadialGradient(0); + @assert throws TypeError ctx.createRadialGradient(0, 0); + @assert throws TypeError ctx.createRadialGradient(0, 0, 1); + @assert throws TypeError ctx.createRadialGradient(0, 0, 1, 0); + @assert throws TypeError ctx.createRadialGradient(0, 0, 1, 0, 0); + @assert throws TypeError ctx.createPattern(offscreenCanvas); + @assert throws TypeError ctx.clearRect(); + @assert throws TypeError ctx.clearRect(0); + @assert throws TypeError ctx.clearRect(0, 0); + @assert throws TypeError ctx.clearRect(0, 0, 0); + @assert throws TypeError ctx.fillRect(); + @assert throws TypeError ctx.fillRect(0); + @assert throws TypeError ctx.fillRect(0, 0); + @assert throws TypeError ctx.fillRect(0, 0, 0); + @assert throws TypeError ctx.strokeRect(); + @assert throws TypeError ctx.strokeRect(0); + @assert throws TypeError ctx.strokeRect(0, 0); + @assert throws TypeError ctx.strokeRect(0, 0, 0); + @assert throws TypeError ctx.moveTo(); + @assert throws TypeError ctx.moveTo(0); + @assert throws TypeError ctx.lineTo(); + @assert throws TypeError ctx.lineTo(0); + @assert throws TypeError ctx.quadraticCurveTo(); + @assert throws TypeError ctx.quadraticCurveTo(0); + @assert throws TypeError ctx.quadraticCurveTo(0, 0); + @assert throws TypeError ctx.quadraticCurveTo(0, 0, 0); + @assert throws TypeError ctx.bezierCurveTo(); + @assert throws TypeError ctx.bezierCurveTo(0); + @assert throws TypeError ctx.bezierCurveTo(0, 0); + @assert throws TypeError ctx.bezierCurveTo(0, 0, 0); + @assert throws TypeError ctx.bezierCurveTo(0, 0, 0, 0); + @assert throws TypeError ctx.bezierCurveTo(0, 0, 0, 0, 0); + @assert throws TypeError ctx.arcTo(); + @assert throws TypeError ctx.arcTo(0); + @assert throws TypeError ctx.arcTo(0, 0); + @assert throws TypeError ctx.arcTo(0, 0, 0); + @assert throws TypeError ctx.arcTo(0, 0, 0, 0); + @assert throws TypeError ctx.rect(); + @assert throws TypeError ctx.rect(0); + @assert throws TypeError ctx.rect(0, 0); + @assert throws TypeError ctx.rect(0, 0, 0); + @assert throws TypeError ctx.arc(); + @assert throws TypeError ctx.arc(0); + @assert throws TypeError ctx.arc(0, 0); + @assert throws TypeError ctx.arc(0, 0, 1); + @assert throws TypeError ctx.arc(0, 0, 1, 0); + @assert throws TypeError ctx.drawImage(); + @assert throws TypeError ctx.drawImage(offscreenCanvas); + @assert throws TypeError ctx.drawImage(offscreenCanvas, 0); + // TODO: n >= 3 args on drawImage could be either a valid overload, + // or too few for another overload, or too many for another + // overload - what should happen? + if (ctx.createImageData) { + @assert throws TypeError ctx.createImageData(); + @assert throws TypeError ctx.createImageData(1); + } + if (ctx.getImageData) { + @assert throws TypeError ctx.getImageData(); + @assert throws TypeError ctx.getImageData(0); + @assert throws TypeError ctx.getImageData(0, 0); + @assert throws TypeError ctx.getImageData(0, 0, 1); + } + if (ctx.putImageData) { + var imgdata = ctx.getImageData(0, 0, 1, 1); + @assert throws TypeError ctx.putImageData(); + @assert throws TypeError ctx.putImageData(imgdata); + @assert throws TypeError ctx.putImageData(imgdata, 0); + } + var g = ctx.createLinearGradient(0, 0, 0, 0); + @assert throws TypeError g.addColorStop(); @moz-todo + @assert throws TypeError g.addColorStop(0); @moz-todo + +- name: 2d.voidreturn + desc: void methods return undefined + code: | + @assert ctx.save() === undefined; + @assert ctx.restore() === undefined; + @assert ctx.scale(1, 1) === undefined; + @assert ctx.rotate(0) === undefined; + @assert ctx.translate(0, 0) === undefined; + if (ctx.transform) { // (avoid spurious failures, since the aim here is not to test that all features are supported) + @assert ctx.transform(1, 0, 0, 1, 0, 0) === undefined; + } + if (ctx.setTransform) { + @assert ctx.setTransform(1, 0, 0, 1, 0, 0) === undefined; + } + @assert ctx.clearRect(0, 0, 0, 0) === undefined; + @assert ctx.fillRect(0, 0, 0, 0) === undefined; + @assert ctx.strokeRect(0, 0, 0, 0) === undefined; + @assert ctx.beginPath() === undefined; + @assert ctx.closePath() === undefined; + @assert ctx.moveTo(0, 0) === undefined; + @assert ctx.lineTo(0, 0) === undefined; + @assert ctx.quadraticCurveTo(0, 0, 0, 0) === undefined; + @assert ctx.bezierCurveTo(0, 0, 0, 0, 0, 0) === undefined; + @assert ctx.arcTo(0, 0, 0, 0, 1) === undefined; + @assert ctx.rect(0, 0, 0, 0) === undefined; + @assert ctx.arc(0, 0, 1, 0, 0, true) === undefined; + @assert ctx.fill() === undefined; + @assert ctx.stroke() === undefined; + @assert ctx.clip() === undefined; + if (ctx.putImageData) { + @assert ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 0, 0) === undefined; + } + @assert ctx.drawImage(offscreenCanvas, 0, 0, 1, 1, 0, 0, 0, 0) === undefined; + @assert ctx.createLinearGradient(0, 0, 0, 0).addColorStop(0, 'white') === undefined; + +- name: 2d.canvas.reference + desc: canvas refers back to its canvas + testing: + - 2d.canvas + code: | + @assert ctx.canvas === offscreenCanvas; + +- name: 2d.canvas.readonly + desc: canvas is readonly + testing: + - 2d.canvas.attribute + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + var d = ctx.canvas; + @assert offscreenCanvas2 !== d; + ctx.canvas = offscreenCanvas2; + @assert ctx.canvas === d; + +- name: 2d.getcontext.exists + desc: The 2D context is implemented + testing: + - context.2d + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert offscreenCanvas2.getContext('2d') !== null; + +- name: 2d.getcontext.extraargs + desc: The 2D context ignores extra getContext arguments + testing: + - context.2d.extraargs + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert offscreenCanvas2.getContext('2d', false, {}, [], 1, "2") !== null; + +- name: 2d.getcontext.unique + desc: getContext('2d') returns the same object + testing: + - context.unique + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert offscreenCanvas2.getContext('2d') === offscreenCanvas2.getContext('2d'); + +- name: 2d.getcontext.shared + desc: getContext('2d') returns objects which share canvas state + testing: + - context.unique + code: | + var ctx2 = offscreenCanvas.getContext('2d'); + ctx.fillStyle = '#f00'; + ctx2.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: context.emptystring + desc: getContext with empty string returns null + testing: + - context.unrecognised + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext(""); + +- name: context.unrecognised.badname + desc: getContext with unrecognised context name returns null + testing: + - context.unrecognised + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext('This is not an implemented context in any real browser'); + +- name: context.unrecognised.badsuffix + desc: Context name "2d" plus a suffix is unrecognised + testing: + - context.unrecognised + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext("2d#"); + +- name: context.unrecognised.nullsuffix + desc: Context name "2d" plus a "\0" suffix is unrecognised + testing: + - context.unrecognised + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext("2d\0"); + +- name: context.unrecognised.unicode + desc: Context name which kind of looks like "2d" is unrecognised + testing: + - context.unrecognised + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext("2\uFF44"); + +- name: context.casesensitive + desc: Context name "2D" is unrecognised; matching is case sensitive + testing: + - context.unrecognised + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext('2D'); + +- name: context.arguments.missing + testing: + - canvas.getContext + code: | + var offscreenCanvas2 = new OffscreenCanvas(100, 50); + @assert throws TypeError offscreenCanvas2.getContext(); @moz-todo + + +- name: initial.colour + desc: Initial state is transparent black + testing: + - initial.colour + code: | + @assert pixel 20,20 == 0,0,0,0; + +- name: initial.reset.different + desc: Changing size resets canvas to transparent black + testing: + - initial.reset + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 20,20 == 255,0,0,255; + offscreenCanvas.width = 50; + @assert pixel 20,20 == 0,0,0,0; + +- name: initial.reset.same + desc: Setting size (not changing the value) resets canvas to transparent black + testing: + - initial.reset + code: | + offscreenCanvas.width = 100; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 20,20 == 255,0,0,255; + offscreenCanvas.width = 100; + @assert pixel 20,20 == 0,0,0,0; + +- name: initial.reset.path + desc: Resetting the canvas state resets the current path + testing: + - initial.reset + code: | + offscreenCanvas.width = 100; + ctx.rect(0, 0, 100, 50); + offscreenCanvas.width = 100; + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 20,20 == 0,0,0,0; + +- name: initial.reset.clip + desc: Resetting the canvas state resets the current clip region + testing: + - initial.reset + code: | + offscreenCanvas.width = 100; + ctx.rect(0, 0, 1, 1); + ctx.clip(); + offscreenCanvas.width = 100; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 20,20 == 0,255,0,255; + +- name: initial.reset.transform + desc: Resetting the canvas state resets the current transformation matrix + testing: + - initial.reset + code: | + offscreenCanvas.width = 100; + ctx.scale(0.1, 0.1); + offscreenCanvas.width = 100; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 20,20 == 0,255,0,255; + +- name: initial.reset.gradient + desc: Resetting the canvas state does not invalidate any existing gradients + testing: + - initial.reset + code: | + offscreenCanvas.width = 50; + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + offscreenCanvas.width = 100; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: initial.reset.pattern + desc: Resetting the canvas state does not invalidate any existing patterns + testing: + - initial.reset + code: | + offscreenCanvas.width = 30; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 30, 50); + var p = ctx.createPattern(offscreenCanvas, 'repeat-x'); + offscreenCanvas.width = 100; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = p; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + +- name: size.attributes.idl.set.zero + desc: Setting width/height IDL attributes to 0 + testing: + - size.width + - size.height + code: | + offscreenCanvas.width = 0; + offscreenCanvas.height = 0; + @assert offscreenCanvas.width === 0; + @assert offscreenCanvas.height === 0; + +- name: size.attributes.idl + desc: Getting/setting width/height IDL attributes + testing: + - size.width + - size.height + webidl: + - es-unsigned-long + code: | + offscreenCanvas.width = "100"; + offscreenCanvas.height = "100"; + @assert offscreenCanvas.width === 100; + @assert offscreenCanvas.height === 100; + offscreenCanvas.width = "+1.5e2"; + offscreenCanvas.height = "0x96"; + @assert offscreenCanvas.width === 150; + @assert offscreenCanvas.height === 150; + offscreenCanvas.width = 301.999; + offscreenCanvas.height = 301.001; + @assert offscreenCanvas.width === 301; + @assert offscreenCanvas.height === 301; + offscreenCanvas.width = "400x"; + offscreenCanvas.height = "foo"; + @assert offscreenCanvas.width === 0; + @assert offscreenCanvas.height === 0; + +- name: size.attributes.default + desc: Default width/height when attributes are missing + testing: + - size.default + - size.missing + code: | + @assert offscreenCanvas.width === 100; + @assert offscreenCanvas.height === 50; + +- name: size.attributes.reflect.setidl + desc: Setting IDL attributes updates IDL and content attributes + testing: + - size.reflect + code: | + offscreenCanvas.width = 120; + offscreenCanvas.height = 60; + @assert offscreenCanvas.width === 120; + @assert offscreenCanvas.height === 60; + +- name: size.attributes.reflect.setidlzero + desc: Setting IDL attributes to 0 updates IDL and content attributes + testing: + - size.reflect + code: | + offscreenCanvas.width = 0; + offscreenCanvas.height = 0; + @assert offscreenCanvas.width === 0; + @assert offscreenCanvas.height === 0; + +- meta: | + cases = [ + ("zero", "0", 0), + ("empty", "", None), + ("onlyspace", " ", None), + ("space", " 100", 100), + ("whitespace", "\t\f100", 100), + ("plus", "+100", 100), + ("minus", "-100", None), + ("octal", "0100", 100), + ("hex", "0x100", 0x100), + ("exp", "100e1", 100e1), + ("decimal", "100.999", 100), + ("percent", "100%", 100), + ("em", "100em", 100), + ("junk", "#!?", None), + ("trailingjunk", "100#!?", 100), + ] + def gen(name, string, exp, code): + testing = ["size.nonnegativeinteger"] + if exp is None: + testing.append("size.error") + code += "offscreenCanvas.width = '%s';\noffscreenCanvas.height = '%s';\n" % (string, string) + code += "@assert offscreenCanvas.width === 100;\n@assert offscreenCanvas.height === 50;\n" + expected = None + else: + code += "offscreenCanvas.width = '%s';\noffscreenCanvas.height = '%s';\n" % (string, string) + code += "@assert offscreenCanvas.width === %s;\n@assert offscreenCanvas.height === %s;\n" % (exp, exp) + expected = None + + if exp == 0: + expected = None # can't generate zero-sized PNGs for the expected image + + return code, testing, expected + + for name, string, exp in cases: + code = "" + code, testing, expected = gen(name, string, exp, code) + tests.append( { + "name": "size.attributes.parse.%s" % name, + "desc": "Parsing of non-negative integers", + "testing": testing, + "code": code, + } ) + +- name: size.large + testing: + - size.width + - size.height + notes: Not sure how reasonable this is, but the spec doesn't say there's an upper limit on the size. + code: | + var n = 2147483647; // 2^31 - 1, which should be supported by any sensible definition of "long" + offscreenCanvas.width = n; + offscreenCanvas.height = n; + @assert offscreenCanvas.width === n; + @assert offscreenCanvas.height === n; diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.order.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.order.html new file mode 100644 index 00000000000..8d01b5aac6f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.order.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.transformation.order + + + + +

    2d.transformation.order

    +

    Transformations are applied in the right order

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.order.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.order.worker.js new file mode 100644 index 00000000000..e6aa169ed85 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.order.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.order +// Description:Transformations are applied in the right order +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Transformations are applied in the right order"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(2, 1); +ctx.rotate(Math.PI / 2); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, -50, 50, 50); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.direction.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.direction.html new file mode 100644 index 00000000000..81dfdadf876 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.direction.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.rotate.direction + + + + +

    2d.transformation.rotate.direction

    +

    rotate() is clockwise

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js new file mode 100644 index 00000000000..328296fce17 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.direction.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.rotate.direction +// Description:rotate() is clockwise +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rotate() is clockwise"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.rotate(Math.PI / 2); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, -100, 50, 100); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html new file mode 100644 index 00000000000..fb6a73fbf61 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.html @@ -0,0 +1,32 @@ + + +OffscreenCanvas test: 2d.transformation.rotate.nonfinite + + + + +

    2d.transformation.rotate.nonfinite

    +

    rotate() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js new file mode 100644 index 00000000000..dbfdfc76c57 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.nonfinite.worker.js @@ -0,0 +1,28 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.rotate.nonfinite +// Description:rotate() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rotate() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 10); +ctx.rotate(Infinity); +ctx.rotate(-Infinity); +ctx.rotate(NaN); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -10, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.radians.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.radians.html new file mode 100644 index 00000000000..55bc2930981 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.radians.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.rotate.radians + + + + +

    2d.transformation.rotate.radians

    +

    rotate() uses radians

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js new file mode 100644 index 00000000000..243ed5e46c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.radians.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.rotate.radians +// Description:rotate() uses radians +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rotate() uses radians"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html new file mode 100644 index 00000000000..9c1333a3611 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrap.html @@ -0,0 +1,34 @@ + + +OffscreenCanvas test: 2d.transformation.rotate.wrap + + + + +

    2d.transformation.rotate.wrap

    +

    rotate() wraps large positive values correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js new file mode 100644 index 00000000000..5a7a413a62c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrap.worker.js @@ -0,0 +1,30 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.rotate.wrap +// Description:rotate() wraps large positive values correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rotate() wraps large positive values correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) +// We need about pi +/- 0.001 in order to get correct-looking results +// 32-bit floats can store pi*4097 with precision 2^-10, so that should +// be safe enough on reasonable implementations +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html new file mode 100644 index 00000000000..108f6d83078 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.html @@ -0,0 +1,31 @@ + + +OffscreenCanvas test: 2d.transformation.rotate.wrapnegative + + + + +

    2d.transformation.rotate.wrapnegative

    +

    rotate() wraps large negative values correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js new file mode 100644 index 00000000000..5d13b3224f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.wrapnegative.worker.js @@ -0,0 +1,27 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.rotate.wrapnegative +// Description:rotate() wraps large negative values correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rotate() wraps large negative values correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.rotate(-Math.PI * (1 + 4096)); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -50, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,2, 0,255,0,255, "98,2", "0,255,0,255"); +_assertPixel(offscreenCanvas, 98,47, 0,255,0,255, "98,47", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.zero.html new file mode 100644 index 00000000000..1d0a3e4c03c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.zero.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.rotate.zero + + + + +

    2d.transformation.rotate.zero

    +

    rotate() by 0 does nothing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js new file mode 100644 index 00000000000..4b664be80ba --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.rotate.zero.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.rotate.zero +// Description:rotate() by 0 does nothing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("rotate() by 0 does nothing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.rotate(0); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.basic.html new file mode 100644 index 00000000000..1f760c10156 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.basic.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.scale.basic + + + + +

    2d.transformation.scale.basic

    +

    scale() works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js new file mode 100644 index 00000000000..d35a350caac --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.basic.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.scale.basic +// Description:scale() works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("scale() works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(2, 4); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 12.5); +_assertPixel(offscreenCanvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.large.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.large.html new file mode 100644 index 00000000000..5383b54cf80 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.large.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.scale.large + + + + +

    2d.transformation.scale.large

    +

    scale() with large scale factors works

    + +

    Not really that large at all, but it hits the limits in Firefox. + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js new file mode 100644 index 00000000000..a9225542077 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.large.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.scale.large +// Description:scale() with large scale factors works +// Note:

    Not really that large at all, but it hits the limits in Firefox. + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("scale() with large scale factors works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(1e5, 1e5); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 1, 1); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.multiple.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.multiple.html new file mode 100644 index 00000000000..cea70306f42 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.multiple.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.transformation.scale.multiple + + + + +

    2d.transformation.scale.multiple

    +

    Multiple scale()s combine

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js new file mode 100644 index 00000000000..1341166a3da --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.multiple.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.scale.multiple +// Description:Multiple scale()s combine +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("Multiple scale()s combine"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.scale(Math.sqrt(2), Math.sqrt(2)); +ctx.scale(Math.sqrt(2), Math.sqrt(2)); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 25); +_assertPixel(offscreenCanvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.negative.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.negative.html new file mode 100644 index 00000000000..4881383fd8c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.negative.html @@ -0,0 +1,37 @@ + + +OffscreenCanvas test: 2d.transformation.scale.negative + + + + +

    2d.transformation.scale.negative

    +

    scale() with negative scale factors works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js new file mode 100644 index 00000000000..27d6de0c530 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.negative.worker.js @@ -0,0 +1,33 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.scale.negative +// Description:scale() with negative scale factors works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("scale() with negative scale factors works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.scale(-1, 1); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-50, 0, 50, 50); +ctx.restore(); +ctx.save(); +ctx.scale(1, -1); +ctx.fillStyle = '#0f0'; +ctx.fillRect(50, -50, 50, 50); +ctx.restore(); +_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255"); +_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html new file mode 100644 index 00000000000..7ffa3023233 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.transformation.scale.nonfinite + + + + +

    2d.transformation.scale.nonfinite

    +

    scale() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js new file mode 100644 index 00000000000..f89950fe6e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.nonfinite.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.scale.nonfinite +// Description:scale() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("scale() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 10); +ctx.scale(Infinity, 0.1); +ctx.scale(-Infinity, 0.1); +ctx.scale(NaN, 0.1); +ctx.scale(0.1, Infinity); +ctx.scale(0.1, -Infinity); +ctx.scale(0.1, NaN); +ctx.scale(Infinity, Infinity); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -10, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.zero.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.zero.html new file mode 100644 index 00000000000..092ba86d3f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.zero.html @@ -0,0 +1,38 @@ + + +OffscreenCanvas test: 2d.transformation.scale.zero + + + + +

    2d.transformation.scale.zero

    +

    scale() with a scale factor of zero works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js new file mode 100644 index 00000000000..2559357db00 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.scale.zero.worker.js @@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.scale.zero +// Description:scale() with a scale factor of zero works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("scale() with a scale factor of zero works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.save(); +ctx.translate(50, 0); +ctx.scale(0, 1); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.restore(); +ctx.save(); +ctx.translate(0, 25); +ctx.scale(1, 0); +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.restore(); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html new file mode 100644 index 00000000000..666b4c54a32 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.transformation.setTransform.multiple + + + + +

    2d.transformation.setTransform.multiple

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js new file mode 100644 index 00000000000..835301624ae --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.multiple.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.setTransform.multiple +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.setTransform(1/2,0, 0,1/2, 0,0); +ctx.setTransform(2,0, 0,2, 0,0); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 50, 25); +_assertPixel(offscreenCanvas, 75,35, 0,255,0,255, "75,35", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html new file mode 100644 index 00000000000..fca5d5df919 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.html @@ -0,0 +1,104 @@ + + +OffscreenCanvas test: 2d.transformation.setTransform.nonfinite + + + + +

    2d.transformation.setTransform.nonfinite

    +

    setTransform() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js new file mode 100644 index 00000000000..12cdbca923b --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.nonfinite.worker.js @@ -0,0 +1,100 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.setTransform.nonfinite +// Description:setTransform() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("setTransform() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 10); +ctx.setTransform(Infinity, 0, 0, 0, 0, 0); +ctx.setTransform(-Infinity, 0, 0, 0, 0, 0); +ctx.setTransform(NaN, 0, 0, 0, 0, 0); +ctx.setTransform(0, Infinity, 0, 0, 0, 0); +ctx.setTransform(0, -Infinity, 0, 0, 0, 0); +ctx.setTransform(0, NaN, 0, 0, 0, 0); +ctx.setTransform(0, 0, Infinity, 0, 0, 0); +ctx.setTransform(0, 0, -Infinity, 0, 0, 0); +ctx.setTransform(0, 0, NaN, 0, 0, 0); +ctx.setTransform(0, 0, 0, Infinity, 0, 0); +ctx.setTransform(0, 0, 0, -Infinity, 0, 0); +ctx.setTransform(0, 0, 0, NaN, 0, 0); +ctx.setTransform(0, 0, 0, 0, Infinity, 0); +ctx.setTransform(0, 0, 0, 0, -Infinity, 0); +ctx.setTransform(0, 0, 0, 0, NaN, 0); +ctx.setTransform(0, 0, 0, 0, 0, Infinity); +ctx.setTransform(0, 0, 0, 0, 0, -Infinity); +ctx.setTransform(0, 0, 0, 0, 0, NaN); +ctx.setTransform(Infinity, Infinity, 0, 0, 0, 0); +ctx.setTransform(Infinity, Infinity, Infinity, 0, 0, 0); +ctx.setTransform(Infinity, Infinity, Infinity, Infinity, 0, 0); +ctx.setTransform(Infinity, Infinity, Infinity, Infinity, Infinity, 0); +ctx.setTransform(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.setTransform(Infinity, Infinity, Infinity, Infinity, 0, Infinity); +ctx.setTransform(Infinity, Infinity, Infinity, 0, Infinity, 0); +ctx.setTransform(Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.setTransform(Infinity, Infinity, Infinity, 0, 0, Infinity); +ctx.setTransform(Infinity, Infinity, 0, Infinity, 0, 0); +ctx.setTransform(Infinity, Infinity, 0, Infinity, Infinity, 0); +ctx.setTransform(Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.setTransform(Infinity, Infinity, 0, Infinity, 0, Infinity); +ctx.setTransform(Infinity, Infinity, 0, 0, Infinity, 0); +ctx.setTransform(Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.setTransform(Infinity, Infinity, 0, 0, 0, Infinity); +ctx.setTransform(Infinity, 0, Infinity, 0, 0, 0); +ctx.setTransform(Infinity, 0, Infinity, Infinity, 0, 0); +ctx.setTransform(Infinity, 0, Infinity, Infinity, Infinity, 0); +ctx.setTransform(Infinity, 0, Infinity, Infinity, Infinity, Infinity); +ctx.setTransform(Infinity, 0, Infinity, Infinity, 0, Infinity); +ctx.setTransform(Infinity, 0, Infinity, 0, Infinity, 0); +ctx.setTransform(Infinity, 0, Infinity, 0, Infinity, Infinity); +ctx.setTransform(Infinity, 0, Infinity, 0, 0, Infinity); +ctx.setTransform(Infinity, 0, 0, Infinity, 0, 0); +ctx.setTransform(Infinity, 0, 0, Infinity, Infinity, 0); +ctx.setTransform(Infinity, 0, 0, Infinity, Infinity, Infinity); +ctx.setTransform(Infinity, 0, 0, Infinity, 0, Infinity); +ctx.setTransform(Infinity, 0, 0, 0, Infinity, 0); +ctx.setTransform(Infinity, 0, 0, 0, Infinity, Infinity); +ctx.setTransform(Infinity, 0, 0, 0, 0, Infinity); +ctx.setTransform(0, Infinity, Infinity, 0, 0, 0); +ctx.setTransform(0, Infinity, Infinity, Infinity, 0, 0); +ctx.setTransform(0, Infinity, Infinity, Infinity, Infinity, 0); +ctx.setTransform(0, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.setTransform(0, Infinity, Infinity, Infinity, 0, Infinity); +ctx.setTransform(0, Infinity, Infinity, 0, Infinity, 0); +ctx.setTransform(0, Infinity, Infinity, 0, Infinity, Infinity); +ctx.setTransform(0, Infinity, Infinity, 0, 0, Infinity); +ctx.setTransform(0, Infinity, 0, Infinity, 0, 0); +ctx.setTransform(0, Infinity, 0, Infinity, Infinity, 0); +ctx.setTransform(0, Infinity, 0, Infinity, Infinity, Infinity); +ctx.setTransform(0, Infinity, 0, Infinity, 0, Infinity); +ctx.setTransform(0, Infinity, 0, 0, Infinity, 0); +ctx.setTransform(0, Infinity, 0, 0, Infinity, Infinity); +ctx.setTransform(0, Infinity, 0, 0, 0, Infinity); +ctx.setTransform(0, 0, Infinity, Infinity, 0, 0); +ctx.setTransform(0, 0, Infinity, Infinity, Infinity, 0); +ctx.setTransform(0, 0, Infinity, Infinity, Infinity, Infinity); +ctx.setTransform(0, 0, Infinity, Infinity, 0, Infinity); +ctx.setTransform(0, 0, Infinity, 0, Infinity, 0); +ctx.setTransform(0, 0, Infinity, 0, Infinity, Infinity); +ctx.setTransform(0, 0, Infinity, 0, 0, Infinity); +ctx.setTransform(0, 0, 0, Infinity, Infinity, 0); +ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity); +ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); +ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -10, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html new file mode 100644 index 00000000000..d36502d3d59 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.html @@ -0,0 +1,51 @@ + + +OffscreenCanvas test: 2d.transformation.setTransform.skewed + + + + +

    2d.transformation.setTransform.skewed

    +

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js new file mode 100644 index 00000000000..6d728bff388 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.setTransform.skewed.worker.js @@ -0,0 +1,47 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.setTransform.skewed +// Description: +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test(""); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Create green with a red square ring inside it +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(20, 10, 60, 30); +ctx.fillStyle = '#0f0'; +ctx.fillRect(40, 20, 20, 10); +// Draw a skewed shape to fill that gap, to make sure it is aligned correctly +ctx.setTransform(1,4, 2,3, 5,6); +// Post-transform coordinates: +// [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; +// Hence pre-transform coordinates: +var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], + [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], + [-7.4,11.2]]; +ctx.beginPath(); +ctx.moveTo(pts[0][0], pts[0][1]); +for (var i = 0; i < pts.length; ++i) + ctx.lineTo(pts[i][0], pts[i][1]); +ctx.fill(); +_assertPixel(offscreenCanvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); +_assertPixel(offscreenCanvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); +_assertPixel(offscreenCanvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); +_assertPixel(offscreenCanvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); +_assertPixel(offscreenCanvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.identity.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.identity.html new file mode 100644 index 00000000000..b5890c10f2a --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.identity.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.transform.identity + + + + +

    2d.transformation.transform.identity

    +

    transform() with the identity matrix does nothing

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js new file mode 100644 index 00000000000..166fc5b4b84 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.identity.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.transform.identity +// Description:transform() with the identity matrix does nothing +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("transform() with the identity matrix does nothing"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.transform(1,0, 0,1, 0,0); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.multiply.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.multiply.html new file mode 100644 index 00000000000..1c6d1661db5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.multiply.html @@ -0,0 +1,30 @@ + + +OffscreenCanvas test: 2d.transformation.transform.multiply + + + + +

    2d.transformation.transform.multiply

    +

    transform() multiplies the CTM

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js new file mode 100644 index 00000000000..f01d3d992fd --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.multiply.worker.js @@ -0,0 +1,26 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.transform.multiply +// Description:transform() multiplies the CTM +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("transform() multiplies the CTM"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.transform(1,2, 3,4, 5,6); +ctx.transform(-2,1, 3/2,-1/2, 1,-2); +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html new file mode 100644 index 00000000000..2071c73d8f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.html @@ -0,0 +1,104 @@ + + +OffscreenCanvas test: 2d.transformation.transform.nonfinite + + + + +

    2d.transformation.transform.nonfinite

    +

    transform() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js new file mode 100644 index 00000000000..1ee3659628c --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.nonfinite.worker.js @@ -0,0 +1,100 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.transform.nonfinite +// Description:transform() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("transform() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 10); +ctx.transform(Infinity, 0, 0, 0, 0, 0); +ctx.transform(-Infinity, 0, 0, 0, 0, 0); +ctx.transform(NaN, 0, 0, 0, 0, 0); +ctx.transform(0, Infinity, 0, 0, 0, 0); +ctx.transform(0, -Infinity, 0, 0, 0, 0); +ctx.transform(0, NaN, 0, 0, 0, 0); +ctx.transform(0, 0, Infinity, 0, 0, 0); +ctx.transform(0, 0, -Infinity, 0, 0, 0); +ctx.transform(0, 0, NaN, 0, 0, 0); +ctx.transform(0, 0, 0, Infinity, 0, 0); +ctx.transform(0, 0, 0, -Infinity, 0, 0); +ctx.transform(0, 0, 0, NaN, 0, 0); +ctx.transform(0, 0, 0, 0, Infinity, 0); +ctx.transform(0, 0, 0, 0, -Infinity, 0); +ctx.transform(0, 0, 0, 0, NaN, 0); +ctx.transform(0, 0, 0, 0, 0, Infinity); +ctx.transform(0, 0, 0, 0, 0, -Infinity); +ctx.transform(0, 0, 0, 0, 0, NaN); +ctx.transform(Infinity, Infinity, 0, 0, 0, 0); +ctx.transform(Infinity, Infinity, Infinity, 0, 0, 0); +ctx.transform(Infinity, Infinity, Infinity, Infinity, 0, 0); +ctx.transform(Infinity, Infinity, Infinity, Infinity, Infinity, 0); +ctx.transform(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.transform(Infinity, Infinity, Infinity, Infinity, 0, Infinity); +ctx.transform(Infinity, Infinity, Infinity, 0, Infinity, 0); +ctx.transform(Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.transform(Infinity, Infinity, Infinity, 0, 0, Infinity); +ctx.transform(Infinity, Infinity, 0, Infinity, 0, 0); +ctx.transform(Infinity, Infinity, 0, Infinity, Infinity, 0); +ctx.transform(Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.transform(Infinity, Infinity, 0, Infinity, 0, Infinity); +ctx.transform(Infinity, Infinity, 0, 0, Infinity, 0); +ctx.transform(Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.transform(Infinity, Infinity, 0, 0, 0, Infinity); +ctx.transform(Infinity, 0, Infinity, 0, 0, 0); +ctx.transform(Infinity, 0, Infinity, Infinity, 0, 0); +ctx.transform(Infinity, 0, Infinity, Infinity, Infinity, 0); +ctx.transform(Infinity, 0, Infinity, Infinity, Infinity, Infinity); +ctx.transform(Infinity, 0, Infinity, Infinity, 0, Infinity); +ctx.transform(Infinity, 0, Infinity, 0, Infinity, 0); +ctx.transform(Infinity, 0, Infinity, 0, Infinity, Infinity); +ctx.transform(Infinity, 0, Infinity, 0, 0, Infinity); +ctx.transform(Infinity, 0, 0, Infinity, 0, 0); +ctx.transform(Infinity, 0, 0, Infinity, Infinity, 0); +ctx.transform(Infinity, 0, 0, Infinity, Infinity, Infinity); +ctx.transform(Infinity, 0, 0, Infinity, 0, Infinity); +ctx.transform(Infinity, 0, 0, 0, Infinity, 0); +ctx.transform(Infinity, 0, 0, 0, Infinity, Infinity); +ctx.transform(Infinity, 0, 0, 0, 0, Infinity); +ctx.transform(0, Infinity, Infinity, 0, 0, 0); +ctx.transform(0, Infinity, Infinity, Infinity, 0, 0); +ctx.transform(0, Infinity, Infinity, Infinity, Infinity, 0); +ctx.transform(0, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.transform(0, Infinity, Infinity, Infinity, 0, Infinity); +ctx.transform(0, Infinity, Infinity, 0, Infinity, 0); +ctx.transform(0, Infinity, Infinity, 0, Infinity, Infinity); +ctx.transform(0, Infinity, Infinity, 0, 0, Infinity); +ctx.transform(0, Infinity, 0, Infinity, 0, 0); +ctx.transform(0, Infinity, 0, Infinity, Infinity, 0); +ctx.transform(0, Infinity, 0, Infinity, Infinity, Infinity); +ctx.transform(0, Infinity, 0, Infinity, 0, Infinity); +ctx.transform(0, Infinity, 0, 0, Infinity, 0); +ctx.transform(0, Infinity, 0, 0, Infinity, Infinity); +ctx.transform(0, Infinity, 0, 0, 0, Infinity); +ctx.transform(0, 0, Infinity, Infinity, 0, 0); +ctx.transform(0, 0, Infinity, Infinity, Infinity, 0); +ctx.transform(0, 0, Infinity, Infinity, Infinity, Infinity); +ctx.transform(0, 0, Infinity, Infinity, 0, Infinity); +ctx.transform(0, 0, Infinity, 0, Infinity, 0); +ctx.transform(0, 0, Infinity, 0, Infinity, Infinity); +ctx.transform(0, 0, Infinity, 0, 0, Infinity); +ctx.transform(0, 0, 0, Infinity, Infinity, 0); +ctx.transform(0, 0, 0, Infinity, Infinity, Infinity); +ctx.transform(0, 0, 0, Infinity, 0, Infinity); +ctx.transform(0, 0, 0, 0, Infinity, Infinity); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -10, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.skewed.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.skewed.html new file mode 100644 index 00000000000..83769e03446 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.skewed.html @@ -0,0 +1,51 @@ + + +OffscreenCanvas test: 2d.transformation.transform.skewed + + + + +

    2d.transformation.transform.skewed

    +

    transform() with skewy matrix transforms correctly

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js new file mode 100644 index 00000000000..b8ae83fda7d --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.transform.skewed.worker.js @@ -0,0 +1,47 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.transform.skewed +// Description:transform() with skewy matrix transforms correctly +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("transform() with skewy matrix transforms correctly"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +// Create green with a red square ring inside it +ctx.fillStyle = '#0f0'; +ctx.fillRect(0, 0, 100, 50); +ctx.fillStyle = '#f00'; +ctx.fillRect(20, 10, 60, 30); +ctx.fillStyle = '#0f0'; +ctx.fillRect(40, 20, 20, 10); +// Draw a skewed shape to fill that gap, to make sure it is aligned correctly +ctx.transform(1,4, 2,3, 5,6); +// Post-transform coordinates: +// [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; +// Hence pre-transform coordinates: +var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], + [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], + [-7.4,11.2]]; +ctx.beginPath(); +ctx.moveTo(pts[0][0], pts[0][1]); +for (var i = 0; i < pts.length; ++i) + ctx.lineTo(pts[i][0], pts[i][1]); +ctx.fill(); +_assertPixel(offscreenCanvas, 21,11, 0,255,0,255, "21,11", "0,255,0,255"); +_assertPixel(offscreenCanvas, 79,11, 0,255,0,255, "79,11", "0,255,0,255"); +_assertPixel(offscreenCanvas, 21,39, 0,255,0,255, "21,39", "0,255,0,255"); +_assertPixel(offscreenCanvas, 79,39, 0,255,0,255, "79,39", "0,255,0,255"); +_assertPixel(offscreenCanvas, 39,19, 0,255,0,255, "39,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 61,19, 0,255,0,255, "61,19", "0,255,0,255"); +_assertPixel(offscreenCanvas, 39,31, 0,255,0,255, "39,31", "0,255,0,255"); +_assertPixel(offscreenCanvas, 61,31, 0,255,0,255, "61,31", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.basic.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.basic.html new file mode 100644 index 00000000000..2978be81495 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.basic.html @@ -0,0 +1,29 @@ + + +OffscreenCanvas test: 2d.transformation.translate.basic + + + + +

    2d.transformation.translate.basic

    +

    translate() works

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js new file mode 100644 index 00000000000..e019abb25a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.basic.worker.js @@ -0,0 +1,25 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.translate.basic +// Description:translate() works +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("translate() works"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 50); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -50, 100, 50); +_assertPixel(offscreenCanvas, 90,40, 0,255,0,255, "90,40", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html new file mode 100644 index 00000000000..0a90f725b34 --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.html @@ -0,0 +1,36 @@ + + +OffscreenCanvas test: 2d.transformation.translate.nonfinite + + + + +

    2d.transformation.translate.nonfinite

    +

    translate() with Infinity/NaN is ignored

    + + + diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js new file mode 100644 index 00000000000..ea26178151f --- /dev/null +++ b/tests/wpt/web-platform-tests/offscreen-canvas/transformations/2d.transformation.translate.nonfinite.worker.js @@ -0,0 +1,32 @@ +// DO NOT EDIT! This test has been generated by tools/gentest.py. +// OffscreenCanvas test in a worker:2d.transformation.translate.nonfinite +// Description:translate() with Infinity/NaN is ignored +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/common/canvas-tests.js"); + +var t = async_test("translate() with Infinity/NaN is ignored"); +t.step(function() { + +var offscreenCanvas = new OffscreenCanvas(100, 50); +var ctx = offscreenCanvas.getContext('2d'); + +ctx.fillStyle = '#f00'; +ctx.fillRect(0, 0, 100, 50); +ctx.translate(100, 10); +ctx.translate(Infinity, 0.1); +ctx.translate(-Infinity, 0.1); +ctx.translate(NaN, 0.1); +ctx.translate(0.1, Infinity); +ctx.translate(0.1, -Infinity); +ctx.translate(0.1, NaN); +ctx.translate(Infinity, Infinity); +ctx.fillStyle = '#0f0'; +ctx.fillRect(-100, -10, 100, 50); +_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); + +t.done(); + +}); +done(); diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html new file mode 100644 index 00000000000..fbb80e3fe76 --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html @@ -0,0 +1,26 @@ + +PaymentRequest <iframe allowpaymentrequest> in non-active document (cross-origin) + + + + + diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/active-document-same-origin.https.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/active-document-same-origin.https.html new file mode 100644 index 00000000000..69a738ad4c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/active-document-same-origin.https.html @@ -0,0 +1,22 @@ + +PaymentRequest <iframe allowpaymentrequest> in non-active document (same-origin) + + + + diff --git a/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/basic.https.html b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/basic.https.html new file mode 100644 index 00000000000..841880ef94f --- /dev/null +++ b/tests/wpt/web-platform-tests/payment-request/allowpaymentrequest/basic.https.html @@ -0,0 +1,14 @@ + +PaymentRequest <iframe allowpaymentrequest> basic + + + + diff --git a/tests/wpt/web-platform-tests/pointerevents/idlharness.html b/tests/wpt/web-platform-tests/pointerevents/idlharness.html new file mode 100644 index 00000000000..a4ba4c35f5b --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/idlharness.html @@ -0,0 +1,104 @@ + + +idlharness test + + + + + + + +
    +dictionary PointerEventInit : MouseEventInit {
    +    long      pointerId = 0;
    +    double    width = 1;
    +    double    height = 1;
    +    float     pressure = 0;
    +    float     tangentialPressure = 0;
    +    long      tiltX = 0;
    +    long      tiltY = 0;
    +    long      twist = 0;
    +    DOMString pointerType = "";
    +    boolean   isPrimary = false;
    +};
    +
    +[Constructor(DOMString type, optional PointerEventInit eventInitDict)]
    +interface PointerEvent : MouseEvent {
    +    readonly attribute long      pointerId;
    +    readonly attribute double    width;
    +    readonly attribute double    height;
    +    readonly attribute float     pressure;
    +    readonly attribute float     tangentialPressure;
    +    readonly attribute long      tiltX;
    +    readonly attribute long      tiltY;
    +    readonly attribute long      twist;
    +    readonly attribute DOMString pointerType;
    +    readonly attribute boolean   isPrimary;
    +};
    +
    +partial interface Element {
    +    void    setPointerCapture(long pointerId);
    +    void    releasePointerCapture(long pointerId);
    +    boolean hasPointerCapture(long pointerId);
    +};
    +
    +partial interface GlobalEventHandlers {
    +    attribute EventHandler ongotpointercapture;
    +    attribute EventHandler onlostpointercapture;
    +    attribute EventHandler onpointerdown;
    +    attribute EventHandler onpointermove;
    +    attribute EventHandler onpointerup;
    +    attribute EventHandler onpointercancel;
    +    attribute EventHandler onpointerover;
    +    attribute EventHandler onpointerout;
    +    attribute EventHandler onpointerenter;
    +    attribute EventHandler onpointerleave;
    +};
    +
    +partial interface Navigator {
    +    readonly attribute long maxTouchPoints;
    +};
    +
    + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing-manual.html new file mode 100644 index 00000000000..0de4d55ed13 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_boundary_events_in_capturing-manual.html @@ -0,0 +1,97 @@ + + + + Pointer Events boundary events in capturing tests + + + + + + + + + +

    Pointer Events boundary events in capturing

    +

    +

    + Test Description: This test checks the boundary events of pointer events while the capturing changes. If you are using hoverable pen don't leave the range of digitizer while doing the instructions. +
      +
    1. Move your pointer over the black square
    2. +
    3. Press down the pointer (i.e. press left button with mouse or touch the screen with finger or pen).
    4. +
    5. Drag the pointer within the black square.
    6. +
    7. Release the pointer.
    8. +
    + + Test passes if the proper behavior of the events is observed. +

    +
    +
    +
    Do not hover over or touch this element.
    +
    +

    The following pointer types were detected: .

    +

    Refresh the page to run the tests again with a different pointer type.

    +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html deleted file mode 100644 index 754a58facfd..00000000000 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Pointer Event: gotpiontercapture is fired first and asynchronously. - - - - - - - - - - - - -

    Pointer Event: Dispatch gotpointercapture event

    -

    Test Description: - After pointer capture is set for a pointer, and prior to dispatching the first event for the pointer, the gotpointercapture - event must be dispatched to the element that is receiving the pointer capture. The gotpointercapture event must be dispatched asynchronously. -

    -
    -
    - Use the mouse, touch or pen to tap/click this box. -
    -
    Do not hover over or touch this element.
    -
    -

    Test complete: Scroll to Summary to view Pass/Fail Results.

    -

    The following pointer types were detected: .

    -

    Refresh the page to run the tests again with a different pointer type.

    -
    -
    - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html new file mode 100644 index 00000000000..268952e41c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_on_event_handlers.html @@ -0,0 +1,67 @@ + + + + PointerEvent: Constructor test + + + + + + + + +

    PointerEvent: Dispatch custom event

    +

    Test Description: This test checks if on pointer event handlers through attributes works properly using synthetic pointerevents. For valid results, this test must be run without generating real (trusted) events on the black rectangle below.

    +
    + +
    +

    The following pointer types were detected: .

    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click-manual.html new file mode 100644 index 00000000000..274f9a435b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click-manual.html @@ -0,0 +1,83 @@ + + + + Pointer Event: Event sequence at implicit release on click + + + + + + + + + + + +

    Pointer Event: Event sequence at implicit release on click

    +

    +

    + When a captured pointer is implicitly released after a click, the boundary events should follow the lostpointercapture event. +

    +
      +
    1. Click or tap on Black.
    2. +
    3. Click or tap on Green.
    4. +
    +
    +
    +
    +

    The following pointer types were detected: .

    +

    The following events were logged: .

    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_sequence_at_implicit_release_on_drag-manual.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_sequence_at_implicit_release_on_drag-manual.html new file mode 100644 index 00000000000..7b8e39b94d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_sequence_at_implicit_release_on_drag-manual.html @@ -0,0 +1,84 @@ + + + + Pointer Event: Event sequence at implicit release on drag + + + + + + + + + + + +

    Pointer Event: Event sequence at implicit release on drag

    +

    +

    + When a captured pointer is implicitly released after a drag, the boundary events should follow the lostpointercapture event. +

    +
      +
    1. Drag quickly down starting on Black.
    2. +
    3. Click or tap on Green.
    4. +
    +
    +
    +
    +

    The following pointer types were detected: .

    +

    The following events were logged: .

    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js index ee479c7d6ad..03332b6a7b1 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js @@ -21,7 +21,7 @@ function check_PointerEvent(event, testNamePrefix) { if (expectedPointerType != null) { test(function () { - assert_equals(event.pointerType, expectedPointerType, "pointerType should be the same as the requested device."); + assert_equals(event.pointerType, expectedPointerType, "pointerType should be the one specified in the test page."); }, pointerTestName + " event pointerType is correct."); } @@ -201,6 +201,7 @@ function rPointerCapture(e) { var globalPointerEventTest = null; var expectedPointerType = null; +const ALL_POINTERS = ['mouse', 'touch', 'pen']; const HOVERABLE_POINTERS = ['mouse', 'pen']; const NOHOVER_POINTERS = ['touch']; @@ -225,6 +226,10 @@ MultiPointerTypeTest.prototype.done = function() { prevTest.done(); } +MultiPointerTypeTest.prototype.step = function(stepFunction) { + this.currentTest.step(stepFunction); +} + MultiPointerTypeTest.prototype.createNextTest = function() { if (this.currentTypeIndex < this.types.length) { var pointerTypeDescription = document.getElementById('pointerTypeDescription'); @@ -240,5 +245,9 @@ MultiPointerTypeTest.prototype.createNextTest = function() { function setup_pointerevent_test(testName, supportedPointerTypes) { - return globalPointerEventTest = new MultiPointerTypeTest(testName, supportedPointerTypes); + return globalPointerEventTest = new MultiPointerTypeTest(testName, supportedPointerTypes); +} + +function checkPointerEventType(event) { + assert_equals(event.pointerType, expectedPointerType, "pointerType should be the same as the requested device."); } diff --git a/tests/wpt/web-platform-tests/preload/avoid_delaying_onload_link_preload.html b/tests/wpt/web-platform-tests/preload/avoid_delaying_onload_link_preload.html new file mode 100644 index 00000000000..e92658dd267 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/avoid_delaying_onload_link_preload.html @@ -0,0 +1,13 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/delaying_onload_link_preload_after_discovery.html b/tests/wpt/web-platform-tests/preload/delaying_onload_link_preload_after_discovery.html new file mode 100644 index 00000000000..44a8cef9ee0 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/delaying_onload_link_preload_after_discovery.html @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/download_resources.html b/tests/wpt/web-platform-tests/preload/download_resources.html new file mode 100644 index 00000000000..a5f275a24b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/download_resources.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/dynamic_adding_preload.html b/tests/wpt/web-platform-tests/preload/dynamic_adding_preload.html new file mode 100644 index 00000000000..3b341b5d512 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/dynamic_adding_preload.html @@ -0,0 +1,24 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload.html b/tests/wpt/web-platform-tests/preload/link_header_preload.html new file mode 100644 index 00000000000..a63ffde8000 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/link_header_preload.html @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload.html.headers b/tests/wpt/web-platform-tests/preload/link_header_preload.html.headers new file mode 100644 index 00000000000..e61b22e0f7c --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/link_header_preload.html.headers @@ -0,0 +1,4 @@ +Link: ;rel=preload;as=script +Link: ;rel=preload;as=style +Link: ;rel=preload;as=image + diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html b/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html new file mode 100644 index 00000000000..2ee24b802aa --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html @@ -0,0 +1,34 @@ + + + + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html.headers b/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html.headers new file mode 100644 index 00000000000..6dad172ff05 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/link_header_preload_delay_onload.html.headers @@ -0,0 +1,5 @@ +Link: ;rel=preload;as=image +Link: ;rel=preload;as=script +Link: ;rel=preload;as=style +Link: ;rel=preload;as=image + diff --git a/tests/wpt/web-platform-tests/preload/onerror_event.html b/tests/wpt/web-platform-tests/preload/onerror_event.html new file mode 100644 index 00000000000..cb2d9ff84cc --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/onerror_event.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/onload_event.html b/tests/wpt/web-platform-tests/preload/onload_event.html new file mode 100644 index 00000000000..2f19cc2cfca --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/onload_event.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html new file mode 100644 index 00000000000..3f3b42eafa9 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-csp.sub.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html new file mode 100644 index 00000000000..76c1b53196b --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload-default-csp.sub.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/preload_with_type.html b/tests/wpt/web-platform-tests/preload/preload_with_type.html new file mode 100644 index 00000000000..1678258ddb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/preload_with_type.html @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/resources/dummy.css b/tests/wpt/web-platform-tests/preload/resources/dummy.css new file mode 100644 index 00000000000..5097166a058 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/dummy.css @@ -0,0 +1 @@ +/* This is just a dummy, empty CSS file */ diff --git a/tests/wpt/web-platform-tests/preload/resources/dummy.js b/tests/wpt/web-platform-tests/preload/resources/dummy.js new file mode 100644 index 00000000000..cfcb9d89a1c --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/dummy.js @@ -0,0 +1 @@ +// This is example JS content. Nothing to see here. diff --git a/tests/wpt/web-platform-tests/preload/resources/dummy.xml b/tests/wpt/web-platform-tests/preload/resources/dummy.xml new file mode 100644 index 00000000000..0d88d0cb3ed --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/resources/dummy.xml @@ -0,0 +1,2 @@ + +Text.me diff --git a/tests/wpt/web-platform-tests/preload/resources/square.png b/tests/wpt/web-platform-tests/preload/resources/square.png new file mode 100644 index 00000000000..01c9666a8de Binary files /dev/null and b/tests/wpt/web-platform-tests/preload/resources/square.png differ diff --git a/tests/wpt/web-platform-tests/preload/single_download_late_used_preload.html b/tests/wpt/web-platform-tests/preload/single_download_late_used_preload.html new file mode 100644 index 00000000000..64e7085ce5a --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/single_download_late_used_preload.html @@ -0,0 +1,19 @@ + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/preload/single_download_preload.html b/tests/wpt/web-platform-tests/preload/single_download_preload.html new file mode 100644 index 00000000000..0c20194b09b --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/single_download_preload.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + +
    + + + + +PASS - this text is here just so that the browser will download the font. diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationAvailability_onchange-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationAvailability_onchange-manual.html new file mode 100644 index 00000000000..186dbd3d9f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationAvailability_onchange-manual.html @@ -0,0 +1,78 @@ + + +Monitoring the list of available presentation displays. + + + + + + +

    Please wait for a moment...

    +

    The test passes if a "PASS" result appears.

    + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html index f6d912bcbc9..a4aa65e9adc 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html @@ -26,6 +26,13 @@ var request = new PresentationRequest(presentationUrls); request.start() .then(function(connection) { + + // Enable timeout again, cause no user action is needed from here. + t.step_timeout(function() { + t.force_timeout(); + t.done(); + }, 5000); + assert_true(connection instanceof PresentationConnection, 'the connection is setup'); connection.onclose = t.step_func_done(function(evt) { assert_equals(evt.type, "close"); diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onconnected-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onconnected-manual.html index 0d26062e8b6..3c75b969e0e 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onconnected-manual.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onconnected-manual.html @@ -25,11 +25,18 @@ var request = new PresentationRequest(presentationUrls); request.start() .then(function(connection) { + + // Enable timeout again, cause no user action is needed from here. + t.step_timeout(function() { + t.force_timeout(); + t.done(); + }, 5000); + assert_true(connection instanceof PresentationConnection); connection.onconnect = t.step_func_done(function() { assert_equals(connection.state, "connected"); + connection.terminate(); }); - connection.close(); }) .catch(function(ex) { assert_unreached(ex.name + ":" + ex.message); diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html index b4f5f4e46a9..68ee6280a85 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html @@ -26,9 +26,16 @@ var request = new PresentationRequest(presentationUrls); request.start() .then(function(connection) { + + // Enable timeout again, cause no user action is needed from here. + t.step_timeout(function() { + t.force_timeout(); + t.done(); + }, 5000); + assert_true(connection instanceof PresentationConnection); - connection.onconnected = t.step_func(function(evt) { - assert_equals(evt.state, "connected"); + connection.onconnect = t.step_func(function(evt) { + assert_equals(connection.state, "connected"); connection.terminate(); }); connection.onterminate = t.step_func_done(function(evt) { diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/defaultRequest_success-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/defaultRequest_success-manual.html index 993343a58bd..23832d70f12 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/defaultRequest_success-manual.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/defaultRequest_success-manual.html @@ -48,7 +48,7 @@ var connection = evt.connection; // check the presentation connection and its attributes assert_equals(connection.state, 'connecting', 'The initial state of the presentation connection is "connecting".'); - assert_true(!connection.id, 'The connection ID is set.'); + assert_true(!!connection.id, 'The connection ID is set.'); assert_true(typeof connection.id === 'string', 'The connection ID is a string.'); assert_true(connection instanceof PresentationConnection, 'The connection is an instance of PresentationConnection.'); }); diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_success-manual.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_success-manual.html index db06cf6d86a..aca6006a8c4 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_success-manual.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_success-manual.html @@ -1,72 +1,45 @@ -Presentation API, reconnect to presentation tests for Controlling User Agent (success - manual test) +Reconnect to presentation success manual test - + + -
      -
    1. Start the presentation with the blue button.
    2. -
    3. After the presentation ist running successfully, disconnect the connected device.
    4. -
    5. Reconnect the device and press the green button, to start the reconnection process.
    6. -
    - - - +

    Click the button below to start the manual test. Select a presentation device after the selection dialog is prompted. + The test assumes that at least one presentation device is available. The test passes if a "PASS" result appears.

    + - diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_error.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_error.html index 8a4e6282410..b8458d85474 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_error.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_error.html @@ -11,7 +11,7 @@ // ----------------------------------- promise_test(function (t) { var request = new PresentationRequest('presentation.html'); - promise_rejects(t, 'InvalidAccessError', request.start()); + return promise_rejects(t, 'InvalidAccessError', request.start()); }, "The presentation could not start, because a user gesture is required."); // ---------------------------------- // Launch New Presentation Test - end diff --git a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/support/presentation.html b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/support/presentation.html index ea13ded4ad9..f1eef248b84 100644 --- a/tests/wpt/web-platform-tests/presentation-api/controlling-ua/support/presentation.html +++ b/tests/wpt/web-platform-tests/presentation-api/controlling-ua/support/presentation.html @@ -10,15 +10,16 @@ this.onmessage = function (evt) { this.send(evt.data); }; + }; }; - navigator.receiver.connectionList + + navigator.presentation.receiver.connectionList .then(function(list) { - list.onconnectionavailable = function(connections) { - addConnection(connections[connections.length - 1]); + list.onconnectionavailable = function(evt) { + addConnection(evt.connection); }; list.connections.map(function(connection) { addConnection(connection); }); }); - } diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/common.js b/tests/wpt/web-platform-tests/referrer-policy/generic/common.js index 4b7feb4777b..0107a3857d8 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/common.js +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/common.js @@ -111,23 +111,52 @@ function queryIframe(url, callback, referrer_policy) { window.addEventListener("message", listener); } -function queryImage(url, callback, referrer_policy) { - // For images, we'll test both images in a top-level document as well as - // images in a `srcdoc` frame to ensure that the latter has the same referrer - // as the former. - var i = document.createElement('iframe'); - i.srcdoc = "Hello, world."; - i.onload = function () { +function queryImage(url, callback, attributes, referrerPolicy) { + // For images, we'll test: + // - images in a `srcdoc` frame to ensure that it uses the referrer + // policy of its parent, + // - images in a top-level document, + // - and images in a `srcdoc` frame with its own referrer policy to + // override its parent. + + var noSrcDocPolicy = new Promise((resolve, reject) => { + var iframeWithoutOwnPolicy = document.createElement('iframe'); + iframeWithoutOwnPolicy.srcdoc = "Hello, world."; + iframeWithoutOwnPolicy.onload = function () { + var nextUrl = url + "&cache_destroyer2=" + (new Date()).getTime(); + loadImageInWindow(nextUrl, function (img) { + resolve(decodeImageData(extractImageData(img))); + }, attributes, iframeWithoutOwnPolicy.contentWindow); + }; + document.body.appendChild(iframeWithoutOwnPolicy); + }); + + // Give a srcdoc iframe a referrer policy different from the top-level page's policy. + var iframePolicy = (referrerPolicy === "no-referrer") ? "unsafe-url" : "no-referrer"; + var srcDocPolicy = new Promise((resolve, reject) => { + var iframeWithOwnPolicy = document.createElement('iframe'); + iframeWithOwnPolicy.srcdoc = "Hello world."; + + iframeWithOwnPolicy.onload = function () { + var nextUrl = url + "&cache_destroyer3=" + (new Date()).getTime(); + loadImageInWindow(nextUrl, function (img) { + resolve(decodeImageData(extractImageData(img))); + }, null, iframeWithOwnPolicy.contentWindow); + }; + document.body.appendChild(iframeWithOwnPolicy); + }); + + var pagePolicy = new Promise((resolve, reject) => { loadImageInWindow(url, function (img) { - var srcdocData = decodeImageData(extractImageData(img)); - loadImageInWindow(url, function (img) { - var topLevelData = decodeImageData(extractImageData(img)); - assert_equals(srcdocData.referrer, topLevelData.referrer, "Referrer inside 'srcdoc' should be the same as embedder's referrer."); - callback(wrapResult(url, topLevelData), url); - }, referrer_policy, window); - }, referrer_policy, i.contentWindow); - }; - document.body.appendChild(i); + resolve(decodeImageData(extractImageData(img))); + }, attributes, window); + }); + + Promise.all([noSrcDocPolicy, srcDocPolicy, pagePolicy]).then(values => { + assert_equals(values[0].headers.referer, values[2].headers.referer, "Referrer inside 'srcdoc' without its own policy should be the same as embedder's referrer."); + assert_equals((iframePolicy === "no-referrer" ? undefined : document.location.href), values[1].headers.referer, "Referrer inside 'srcdoc' should use the iframe's policy if it has one"); + callback(wrapResult(url, values[2]), url); + }); } function queryXhr(url, callback) { diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js b/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js index c4cf96fb04b..887f13b0ce0 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/referrer-policy-test-case.js @@ -85,9 +85,9 @@ function ReferrerPolicyTestCase(scenario, testDescription, sanityChecker) { if (delivery_method in elementAttributesForDeliveryMethod) { invoker(t._subresourceUrl, callback, - elementAttributesForDeliveryMethod[delivery_method]); + elementAttributesForDeliveryMethod[delivery_method], t._scenario.referrer_policy); } else { - invoker(t._subresourceUrl, callback); + invoker(t._subresourceUrl, callback, null, t._scenario.referrer_policy); } }, diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html index 083fb829a4a..133c0cf43d3 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource-test/image-decoding.html @@ -19,7 +19,7 @@ var messaging_test = async_test("Image is encoding headers as JSON."); var urlPath = '/referrer-policy/generic/subresource/image.py'; var url = location.protocol + "//www1." + location.hostname + ":" + location.port + - urlPath; + urlPath + "?cache_destroyer=" + (new Date()).getTime(); queryImage(url, function(message) { var pre = document.getElementById('received_message') var headers = message.headers; diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html b/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html index a40dded44eb..b6c5b306765 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html @@ -16,7 +16,7 @@ + + + + + + +

    Description

    +

    This test validates that a 304 Not Modified resource appears in the buffer.

    +
    + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html b/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html new file mode 100644 index 00000000000..fb9f63e5447 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html @@ -0,0 +1,57 @@ + + + + +Resource Timing connection reuse + + + + + + + + + +

    Description

    +

    This test validates that connectStart and connectEnd are the same when a connection is reused (e.g. when a persistent connection is used).

    +
    + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html b/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html new file mode 100644 index 00000000000..c669a383803 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html @@ -0,0 +1,64 @@ + + + + +Resource Timing initiator types with dynamic insertion + + + + + + + + + +

    Description

    +

    This test validates that initiator types are represented even when dynamically inserted.

    +
    + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.html b/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.html new file mode 100644 index 00000000000..52cad6c4157 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.html @@ -0,0 +1,19 @@ + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py b/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py new file mode 100644 index 00000000000..9f2e43df069 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/fake_responses.py @@ -0,0 +1,19 @@ +# XMLHttpRequest/resources/conditional.py -- to fake a 304 response + +def main(request, response): + tag = request.GET.first("tag", None) + match = request.headers.get("If-None-Match", None) + date = request.GET.first("date", "") + modified = request.headers.get("If-Modified-Since", None) + if tag: + response.headers.set("ETag", '"%s"' % tag) + elif date: + response.headers.set("Last-Modified", date) + + if ((match is not None and match == tag) or + (modified is not None and modified == date)): + response.status = (304, "SUPERCOOL") + return "" + else: + response.headers.set("Content-Type", "text/plain") + return "MAYBE NOT" \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/inject_resource_test.html b/tests/wpt/web-platform-tests/resource-timing/resources/inject_resource_test.html new file mode 100644 index 00000000000..44d09675d38 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/inject_resource_test.html @@ -0,0 +1,7 @@ + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharnessextension.js b/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharnessextension.js new file mode 100644 index 00000000000..230f2ac6769 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharnessextension.js @@ -0,0 +1,198 @@ +/* +Distributed under both the W3C Test Suite License [1] and the W3C +3-clause BSD License [2]. To contribute to a W3C Test Suite, see the +policies and contribution forms [3]. + +[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license +[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license +[3] http://www.w3.org/2004/10/27-testcases + */ + +var mark_names = [ + '', + '1', + 'abc', +]; + +var measures = [ + [''], + ['2', 1], + ['aaa', 'navigationStart', ''], +]; + +function test_method_exists(method, method_name, properties) +{ + var msg; + if (typeof method === 'function') + msg = 'performance.' + method.name + ' is supported!'; + else + msg = 'performance.' + method_name + ' is supported!'; + wp_test(function() { assert_true(typeof method === 'function', msg); }, msg, properties); +} + +function test_method_throw_exception(func_str, exception, msg) +{ + var exception_name = typeof exception === "object" ? exception.name : exception; + var msg = 'Invocation of ' + func_str + ' should throw ' + exception_name + ' Exception.'; + wp_test(function() { assert_throws(exception, function() {eval(func_str)}, msg); }, msg); +} + +function test_noless_than(value, greater_than, msg, properties) +{ + wp_test(function () { assert_true(value >= greater_than, msg); }, msg, properties); +} + +function test_fail(msg, properties) +{ + wp_test(function() { assert_unreached(); }, msg, properties); +} + +function test_resource_entries(entries, expected_entries) +{ + // This is slightly convoluted so that we can sort the output. + var actual_entries = {}; + var origin = window.location.protocol + "//" + window.location.host; + + for (var i = 0; i < entries.length; ++i) { + var entry = entries[i]; + var found = false; + for (var expected_entry in expected_entries) { + if (entry.name == origin + expected_entry) { + found = true; + if (expected_entry in actual_entries) { + test_fail(expected_entry + ' is not expected to have duplicate entries'); + } + actual_entries[expected_entry] = entry; + break; + } + } + if (!found) { + test_fail(entries[i].name + ' is not expected to be in the Resource Timing buffer'); + } + } + + sorted_urls = []; + for (var i in actual_entries) { + sorted_urls.push(i); + } + sorted_urls.sort(); + for (var i in sorted_urls) { + var url = sorted_urls[i]; + test_equals(actual_entries[url].initiatorType, + expected_entries[url], + origin + url + ' is expected to have initiatorType ' + expected_entries[url]); + } + for (var j in expected_entries) { + if (!(j in actual_entries)) { + test_fail(origin + j + ' is expected to be in the Resource Timing buffer'); + } + } +} +function performance_entrylist_checker(type) +{ + var entryType = type; + + function entry_check(entry, expectedNames) + { + var msg = 'Entry \"' + entry.name + '\" should be one that we have set.'; + wp_test(function() { assert_in_array(entry.name, expectedNames, msg); }, msg); + test_equals(entry.entryType, entryType, 'entryType should be \"' + entryType + '\".'); + if (type === "measure") { + test_true(isFinite(entry.startTime), 'startTime should be a number.'); + test_true(isFinite(entry.duration), 'duration should be a number.'); + } else if (type === "mark") { + test_greater_than(entry.startTime, 0, 'startTime should greater than 0.'); + test_equals(entry.duration, 0, 'duration of mark should be 0.'); + } + } + + function entrylist_order_check(entryList) + { + var inOrder = true; + for (var i = 0; i < entryList.length - 1; ++i) + { + if (entryList[i + 1].startTime < entryList[i].startTime) { + inOrder = false; + break; + } + } + return inOrder; + } + + function entrylist_check(entryList, expectedLength, expectedNames) + { + test_equals(entryList.length, expectedLength, 'There should be ' + expectedLength + ' entries.'); + test_true(entrylist_order_check(entryList), 'Entries in entrylist should be in order.'); + for (var i = 0; i < entryList.length; ++i) + { + entry_check(entryList[i], expectedNames); + } + } + + return{"entrylist_check":entrylist_check}; +} + +function PerformanceContext(context) +{ + this.performanceContext = context; +} + +PerformanceContext.prototype = { + initialMeasures: function(item, index, array) + { + this.performanceContext.measure.apply(this.performanceContext, item); + }, + + mark: function() + { + this.performanceContext.mark.apply(this.performanceContext, arguments); + }, + + measure: function() + { + this.performanceContext.measure.apply(this.performanceContext, arguments); + }, + + clearMarks: function() + { + this.performanceContext.clearMarks.apply(this.performanceContext, arguments); + + }, + + clearMeasures: function() + { + this.performanceContext.clearMeasures.apply(this.performanceContext, arguments); + + }, + + getEntries: function() + { + return this.performanceContext.getEntries.apply(this.performanceContext, arguments); + }, + + getEntriesByType: function() + { + return this.performanceContext.getEntriesByType.apply(this.performanceContext, arguments); + }, + + getEntriesByName: function() + { + return this.performanceContext.getEntriesByName.apply(this.performanceContext, arguments); + }, + + setResourceTimingBufferSize: function() + { + return this.performanceContext.setResourceTimingBufferSize.apply(this.performanceContext, arguments); + }, + + registerResourceTimingBufferFullCallback: function(func) + { + this.performanceContext.onresourcetimingbufferfull = func; + }, + + clearResourceTimings: function() + { + this.performanceContext.clearResourceTimings.apply(this.performanceContext, arguments); + } + +}; diff --git a/tests/wpt/web-platform-tests/service-workers/OWNERS b/tests/wpt/web-platform-tests/service-workers/OWNERS index e210b8f2d4c..13556f8107b 100644 --- a/tests/wpt/web-platform-tests/service-workers/OWNERS +++ b/tests/wpt/web-platform-tests/service-workers/OWNERS @@ -1 +1,2 @@ @ehsan +@mkruisselbrink diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/common.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/common.https.html index b00199844f7..c06e1f13a67 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/common.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/common.https.html @@ -4,7 +4,6 @@ - - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-delete.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-delete.https.html index 735d2cdb49b..077e6a3fdc1 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-delete.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-delete.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-match.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-match.https.html index 0ff5c679928..ffc64984ea1 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-match.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-match.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-matchAll.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-matchAll.https.html index 372e641a52f..1288b2c0343 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-matchAll.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-matchAll.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-put.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-put.https.html index 1d9e02ba678..ded6e84cb53 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-put.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-put.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-keys.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-keys.https.html index b4f94bade69..669ab9105e2 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-keys.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-keys.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https.html index 72005f43a35..f16c45d001e 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage.https.html index 6c4f4af7fd0..b2f5c385983 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-storage.https.html @@ -4,6 +4,5 @@ - diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/sandboxed-iframes.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/sandboxed-iframes.https.html index 0618585217e..4a99d2af1b0 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/sandboxed-iframes.https.html +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/sandboxed-iframes.https.html @@ -4,7 +4,6 @@ - @@ -10,8 +11,6 @@
    diff --git a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/test-009.html b/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/test-009.html index 5aa6b9218cd..57d8ec8be9c 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/test-009.html +++ b/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/test-009.html @@ -194,7 +194,7 @@ test(function () { test(function () { var ctx = A_04_01_09.setup(); - assert_nodelist_contents_equal_noorder(ctx.d.querySelectorAll('div:last-child'), [ctx.d_div2], 'd.querySelectorAll(\'div:last-child\') return wrong result'); + assert_nodelist_contents_equal_noorder(ctx.d.querySelectorAll('div:last-child'), [ctx.d_div1, ctx.d_div2], 'd.querySelectorAll(\'div:last-child\') return wrong result'); assert_nodelist_contents_equal_noorder(ctx.s1.querySelectorAll('div:last-child'), [ctx.s1_div1, ctx.s1_div2], 's1.querySelectorAll(\'div:last-child\') return wrong result'); assert_nodelist_contents_equal_noorder(ctx.s2.querySelectorAll('div:last-child'), [ctx.s2_div1, ctx.s2_div2], 's2.querySelectorAll(\'div:last-child\') return wrong result'); diff --git a/tests/wpt/web-platform-tests/svg/historical.html b/tests/wpt/web-platform-tests/svg/historical.html index de15f81839f..5626dfcd13d 100644 --- a/tests/wpt/web-platform-tests/svg/historical.html +++ b/tests/wpt/web-platform-tests/svg/historical.html @@ -32,7 +32,6 @@ var mixinInterfaces = [ "SVGFitToViewBox", "SVGTests", "SVGURIReference", - "SVGUnitTypes", "SVGZoomAndPan" ] for (var name of mixinInterfaces) { @@ -81,4 +80,21 @@ for (var member of movedPathMembers) { assert_true(SVGGeometryElement.prototype.hasOwnProperty(member)) }, "SVGPathElement.prototype." + member + " must be moved to SVGGeometryElement.prototype") } + +var implementedSVGUnitTypes = [ + "SVGClipPathElement", + "SVGFilterElement", + "SVGGradientElement", + "SVGMaskElement", + "SVGPatternElement" +] +for (var name of implementedSVGUnitTypes) { + test(function() { + assert_true(name in window); + var interfaceObject = window[name]; + assert_false("SVG_UNIT_TYPE_UNKNOWN" in interfaceObject); + assert_false("SVG_UNIT_TYPE_USERSPACEONUSE" in interfaceObject); + assert_false("SVG_UNIT_TYPE_OBJECTBOUNDINGBOX" in interfaceObject); + }, name + " must not implement SVGUnitTypes") +} diff --git a/tests/wpt/web-platform-tests/svg/interfaces.html b/tests/wpt/web-platform-tests/svg/interfaces.html index c4d7a2740d7..a9bf2bd6bb5 100644 --- a/tests/wpt/web-platform-tests/svg/interfaces.html +++ b/tests/wpt/web-platform-tests/svg/interfaces.html @@ -540,7 +540,6 @@ interface SVGStringList { setter void (unsigned long index, DOMString newItem); }; -[NoInterfaceObject] interface SVGUnitTypes { // Unit Types const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; @@ -921,7 +920,6 @@ interface SVGGradientElement : SVGElement { }; SVGGradientElement implements SVGURIReference; -SVGGradientElement implements SVGUnitTypes; interface SVGLinearGradientElement : SVGGradientElement { [SameObject] readonly attribute SVGAnimatedLength x1; @@ -964,7 +962,6 @@ interface SVGPatternElement : SVGElement { SVGPatternElement implements SVGFitToViewBox; SVGPatternElement implements SVGURIReference; -SVGPatternElement implements SVGUnitTypes; interface SVGHatchElement : SVGElement { }; @@ -1015,7 +1012,6 @@ interface SVGFilterElement : SVGElement { }; SVGFilterElement implements SVGURIReference; -SVGFilterElement implements SVGUnitTypes; [NoInterfaceObject] interface SVGFilterPrimitiveStandardAttributes { diff --git a/tests/wpt/web-platform-tests/tools/sslutils/openssl.py b/tests/wpt/web-platform-tests/tools/sslutils/openssl.py index 1b636f02272..26ed711356d 100644 --- a/tests/wpt/web-platform-tests/tools/sslutils/openssl.py +++ b/tests/wpt/web-platform-tests/tools/sslutils/openssl.py @@ -57,13 +57,7 @@ class OpenSSL(object): self.cmd += ["-config", self.conf_path] self.cmd += list(args) - # Copy the environment, converting to plain strings. Windows - # StartProcess is picky about all the keys/values being plain strings, - # but at least in MSYS shells, the os.environ dictionary can be mixed. - env = {} - for k, v in os.environ.iteritems(): - env[k.encode("utf8")] = v.encode("utf8") - + env = os.environ.copy() if self.base_conf_path is not None: env["OPENSSL_CONF"] = self.base_conf_path.encode("utf8") diff --git a/tests/wpt/web-platform-tests/uievents/constructors/inputevent-constructor.html b/tests/wpt/web-platform-tests/uievents/constructors/inputevent-constructor.html new file mode 100644 index 00000000000..f1f5641785e --- /dev/null +++ b/tests/wpt/web-platform-tests/uievents/constructors/inputevent-constructor.html @@ -0,0 +1,25 @@ + +InputEvent Constructor Tests + + + diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/iframe-redirect-upgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/iframe-redirect-upgrade.https.html new file mode 100644 index 00000000000..9a79825a450 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/iframe-redirect-upgrade.https.html @@ -0,0 +1,37 @@ + + + +Upgrade Insecure Requests: IFrames. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/iframe-upgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/iframe-upgrade.https.html new file mode 100644 index 00000000000..8c4bb370df6 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/iframe-upgrade.https.html @@ -0,0 +1,25 @@ + + + +Upgrade Insecure Requests: IFrames. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/image-redirect-upgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/image-redirect-upgrade.https.html new file mode 100644 index 00000000000..5ed75109dcd --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/image-redirect-upgrade.https.html @@ -0,0 +1,39 @@ + + + +Upgrade Insecure Requests: Redirected Images. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/image-upgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/image-upgrade.https.html new file mode 100644 index 00000000000..515c67469a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/image-upgrade.https.html @@ -0,0 +1,27 @@ + + + +Upgrade Insecure Requests: Images. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/pass.png b/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/pass.png new file mode 100644 index 00000000000..2fa1e0ac066 Binary files /dev/null and b/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/pass.png differ diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/post-origin-to-parent.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/post-origin-to-parent.html new file mode 100644 index 00000000000..4f596ef4dce --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/post-origin-to-parent.html @@ -0,0 +1,3 @@ + diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/testharness-helper.sub.js b/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/testharness-helper.sub.js new file mode 100644 index 00000000000..383506a1437 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/support/testharness-helper.sub.js @@ -0,0 +1,115 @@ +const Host = { + SAME_ORIGIN: "same-origin", + CROSS_ORIGIN: "cross-origin", +}; + +const Protocol = { + INSECURE: "insecure", + SECURE: "secure", +}; + +const ResourceType = { + IMAGE: "image", + FRAME: "frame", + WEBSOCKET: "websocket", +}; + +// These tests rely on some unintuitive cleverness due to WPT's test setup: +// 'Upgrade-Insecure-Requests' does not upgrade the port number, so we use URLs +// in the form `http://[domain]:[https-port]`. If the upgrade fails, the load will fail, +// as we don't serve HTTP over the secure port. +function generateURL(host, protocol, resourceType) { + var url = new URL("http://{{host}}:{{ports[https][0]}}/upgrade-insecure-requests/support/"); + url.protocol = protocol == Protocol.INSECURE ? "http" : "https"; + url.hostname = host == Host.SAME_ORIGIN ? "{{host}}" : "{{domains[天気の良い日]}}"; + + if (resourceType == ResourceType.IMAGE) { + url.pathname += "pass.png"; + } else if (resourceType == ResourceType.FRAME) { + url.pathname += "post-origin-to-parent.html"; + } else if (resourceType == ResourceType.WEBSOCKET) { + url.port = {{ports[wss][0]}}; + url.protocol = protocol == Protocol.INSECURE ? "ws" : "wss"; + url.pathname = "echo"; + } + return { + name: protocol + "/" + host + " " + resourceType, + url: url.toString() + }; +} + +function generateRedirect(host, protocol, target) { + var url = "http://{{host}}:{{ports[https][0]}}/common/redirect.py?location=" + encodeURIComponent(target.url); + url.protocol = protocol == Protocol.INSECURE ? "http" : "https"; + url.hostname = host == Host.SAME_ORIGIN ? "{{host}}" : "{{domains[天気の良い日]}}"; + return { + name: protocol + "/" + host + " => " + target.name, + url: url.toString() + }; +} + +function assert_image_loads(test, url, height, width) { + var i = document.createElement('img'); + i.onload = test.step_func_done(_ => { + assert_equals(i.naturalHeight, height, "Height."); + assert_equals(i.naturalWidth, width, "Width."); + }); + i.onerror = test.unreached_func(url + " should load successfully."); + i.src = url; +} + +function assert_image_loads_in_srcdoc(test, url, height, width) { + var frame = document.createElement('iframe'); + frame.srcdoc = "yay!"; + frame.onload = _ => { + var i = frame.contentDocument.createElement('img'); + i.onload = test.step_func_done(_ => { + assert_equals(i.naturalHeight, height, "Height."); + assert_equals(i.naturalWidth, width, "Width."); + frame.remove(); + }); + i.onerror = test.unreached_func(url + " should load successfully."); + i.src = url; + }; + + document.body.appendChild(frame); +} + +function assert_image_loads_in_blank(test, url, height, width) { + var frame = document.createElement('iframe'); + frame.onload = _ => { + var i = frame.contentDocument.createElement('img'); + i.onload = test.step_func_done(_ => { + assert_equals(i.naturalHeight, height, "Height."); + assert_equals(i.naturalWidth, width, "Width."); + frame.remove(); + }); + i.onerror = test.unreached_func(url + " should load successfully."); + i.src = url; + }; + + document.body.appendChild(frame); +} + +function assert_frame_loads(test, url) { + var i = document.createElement('iframe'); + + window.addEventListener('message', test.step_func(e => { + if (e.source == i.contentWindow) { + i.remove(); + test.done(); + } + })); + + i.src = url; + document.body.appendChild(i); +} + +function assert_websocket_loads(test, url) { + var w = new WebSocket(url, "echo"); + w.onopen = test.step_func(_ => { + w.onclose = test.step_func_done(); + w.close(); + }); + w.onclose = test.unreached_func("WebSocket should not close before open is called."); +} diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/websocket-upgrade.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/websocket-upgrade.https.html new file mode 100644 index 00000000000..aa7237db82b --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/websocket-upgrade.https.html @@ -0,0 +1,25 @@ + + + +Upgrade Insecure Requests: WebSockets. + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/url/a-element-origin-xhtml.xhtml b/tests/wpt/web-platform-tests/url/a-element-origin-xhtml.xhtml new file mode 100644 index 00000000000..d1741bbf073 --- /dev/null +++ b/tests/wpt/web-platform-tests/url/a-element-origin-xhtml.xhtml @@ -0,0 +1,14 @@ + + + + + URL Test + + + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/url/a-element-origin.html b/tests/wpt/web-platform-tests/url/a-element-origin.html new file mode 100644 index 00000000000..bd2f4547ada --- /dev/null +++ b/tests/wpt/web-platform-tests/url/a-element-origin.html @@ -0,0 +1,7 @@ + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/url/a-element-origin.js b/tests/wpt/web-platform-tests/url/a-element-origin.js new file mode 100644 index 00000000000..a1202db5bde --- /dev/null +++ b/tests/wpt/web-platform-tests/url/a-element-origin.js @@ -0,0 +1,35 @@ +var setup = async_test("Loading data…") +setup.step(function() { + var request = new XMLHttpRequest() + request.open("GET", "urltestdata.json") + request.send() + request.responseType = "json" + request.onload = setup.step_func(function() { + runURLTests(request.response) + setup.done() + }) +}) + +function setBase(base) { + document.getElementById("base").href = base +} + +function bURL(url, base) { + base = base || "about:blank" + setBase(base) + var a = document.createElement("a") + a.setAttribute("href", url) + return a +} + +function runURLTests(urltests) { + for(var i = 0, l = urltests.length; i < l; i++) { + var expected = urltests[i] + if (typeof expected === "string" || !("origin" in expected)) continue + + test(function() { + var url = bURL(expected.input, expected.base) + assert_equals(url.origin, expected.origin, "origin") + }, "Parsing origin: <" + expected.input + "> against <" + expected.base + ">") + } +} diff --git a/tests/wpt/web-platform-tests/url/a-element.js b/tests/wpt/web-platform-tests/url/a-element.js index c77df5bf2ee..a3d78139b16 100644 --- a/tests/wpt/web-platform-tests/url/a-element.js +++ b/tests/wpt/web-platform-tests/url/a-element.js @@ -38,9 +38,6 @@ function runURLTests(urltests) { } assert_equals(url.href, expected.href, "href") - if ("origin" in expected) { - assert_equals(url.origin, expected.origin, "origin") - } assert_equals(url.protocol, expected.protocol, "protocol") assert_equals(url.username, expected.username, "username") assert_equals(url.password, expected.password, "password") diff --git a/tests/wpt/web-platform-tests/url/setters_tests.json b/tests/wpt/web-platform-tests/url/setters_tests.json index 4d650e64bb1..d24f5157f16 100644 --- a/tests/wpt/web-platform-tests/url/setters_tests.json +++ b/tests/wpt/web-platform-tests/url/setters_tests.json @@ -1118,12 +1118,12 @@ } }, { - "comment": "No percent-encoding at all (!); nuls, tabs, and newlines are removed", + "comment": "Simple percent-encoding; nuls, tabs, and newlines are removed", "href": "a:/", "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé", "expected": { - "href": "a:/#\u0001\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé", - "hash": "#\u0001\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé" + "href": "a:/#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9", + "hash": "#%01%1F !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~%7F%C2%80%C2%81%C3%89%C3%A9" } }, { @@ -1131,8 +1131,8 @@ "href": "http://example.net", "new_value": "%c3%89té", "expected": { - "href": "http://example.net/#%c3%89té", - "hash": "#%c3%89té" + "href": "http://example.net/#%c3%89t%C3%A9", + "hash": "#%c3%89t%C3%A9" } } ] diff --git a/tests/wpt/web-platform-tests/url/url-constructor.html b/tests/wpt/web-platform-tests/url/url-constructor.html index 8eacce6542f..490917c4f2f 100644 --- a/tests/wpt/web-platform-tests/url/url-constructor.html +++ b/tests/wpt/web-platform-tests/url/url-constructor.html @@ -37,9 +37,6 @@ function runURLTests(urltests) { var url = bURL(expected.input, expected.base) assert_equals(url.href, expected.href, "href") - if ("origin" in expected) { - assert_equals(url.origin, expected.origin, "origin") - } assert_equals(url.protocol, expected.protocol, "protocol") assert_equals(url.username, expected.username, "username") assert_equals(url.password, expected.password, "password") diff --git a/tests/wpt/web-platform-tests/url/url-origin.html b/tests/wpt/web-platform-tests/url/url-origin.html new file mode 100644 index 00000000000..f9d4b3d821d --- /dev/null +++ b/tests/wpt/web-platform-tests/url/url-origin.html @@ -0,0 +1,37 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/url/urltestdata.json b/tests/wpt/web-platform-tests/url/urltestdata.json index ed7c1de379d..50751582a19 100644 --- a/tests/wpt/web-platform-tests/url/urltestdata.json +++ b/tests/wpt/web-platform-tests/url/urltestdata.json @@ -1292,7 +1292,7 @@ { "input": "#β", "base": "http://example.org/foo/bar", - "href": "http://example.org/foo/bar#β", + "href": "http://example.org/foo/bar#%CE%B2", "origin": "http://example.org", "protocol": "http:", "username": "", @@ -1302,7 +1302,7 @@ "port": "", "pathname": "/foo/bar", "search": "", - "hash": "#β" + "hash": "#%CE%B2" }, { "input": "data:text/html,test#test", @@ -2161,7 +2161,7 @@ { "input": "http://www.google.com/foo?bar=baz# »", "base": "about:blank", - "href": "http://www.google.com/foo?bar=baz# »", + "href": "http://www.google.com/foo?bar=baz# %C2%BB", "origin": "http://www.google.com", "protocol": "http:", "username": "", @@ -2171,12 +2171,12 @@ "port": "", "pathname": "/foo", "search": "?bar=baz", - "hash": "# »" + "hash": "# %C2%BB" }, { "input": "data:test# »", "base": "about:blank", - "href": "data:test# »", + "href": "data:test# %C2%BB", "origin": "null", "protocol": "data:", "username": "", @@ -2186,7 +2186,7 @@ "port": "", "pathname": "test", "search": "", - "hash": "# »" + "hash": "# %C2%BB" }, { "input": "http://[www.google.com]/", @@ -4356,5 +4356,236 @@ "search": "", "searchParams": "", "hash": "" + }, + "# Percent encoding of fragments", + { + "input": "http://foo.bar/baz?qux#foo\bbar", + "base": "about:blank", + "href": "http://foo.bar/baz?qux#foo%08bar", + "origin": "http://foo.bar", + "protocol": "http:", + "username": "", + "password": "", + "host": "foo.bar", + "hostname": "foo.bar", + "port": "", + "pathname": "/baz", + "search": "?qux", + "searchParams": "", + "hash": "#foo%08bar" + }, + "# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)", + { + "input": "http://192.168.257", + "base": "http://other.com/", + "href": "http://192.168.1.1/", + "origin": "http://192.168.1.1", + "protocol": "http:", + "username": "", + "password": "", + "host": "192.168.1.1", + "hostname": "192.168.1.1", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://192.168.257.com", + "base": "http://other.com/", + "href": "http://192.168.257.com/", + "origin": "http://192.168.257.com", + "protocol": "http:", + "username": "", + "password": "", + "host": "192.168.257.com", + "hostname": "192.168.257.com", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://256", + "base": "http://other.com/", + "href": "http://0.0.1.0/", + "origin": "http://0.0.1.0", + "protocol": "http:", + "username": "", + "password": "", + "host": "0.0.1.0", + "hostname": "0.0.1.0", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://256.com", + "base": "http://other.com/", + "href": "http://256.com/", + "origin": "http://256.com", + "protocol": "http:", + "username": "", + "password": "", + "host": "256.com", + "hostname": "256.com", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://999999999", + "base": "http://other.com/", + "href": "http://59.154.201.255/", + "origin": "http://59.154.201.255", + "protocol": "http:", + "username": "", + "password": "", + "host": "59.154.201.255", + "hostname": "59.154.201.255", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://999999999.com", + "base": "http://other.com/", + "href": "http://999999999.com/", + "origin": "http://999999999.com", + "protocol": "http:", + "username": "", + "password": "", + "host": "999999999.com", + "hostname": "999999999.com", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://10000000000", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://10000000000.com", + "base": "http://other.com/", + "href": "http://10000000000.com/", + "origin": "http://10000000000.com", + "protocol": "http:", + "username": "", + "password": "", + "host": "10000000000.com", + "hostname": "10000000000.com", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://4294967295", + "base": "http://other.com/", + "href": "http://255.255.255.255/", + "origin": "http://255.255.255.255", + "protocol": "http:", + "username": "", + "password": "", + "host": "255.255.255.255", + "hostname": "255.255.255.255", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://4294967296", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://0xffffffff", + "base": "http://other.com/", + "href": "http://255.255.255.255/", + "origin": "http://255.255.255.255", + "protocol": "http:", + "username": "", + "password": "", + "host": "255.255.255.255", + "hostname": "255.255.255.255", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + { + "input": "http://0xffffffff1", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://256.256.256.256", + "base": "http://other.com/", + "failure": true + }, + { + "input": "http://256.256.256.256.256", + "base": "http://other.com/", + "href": "http://256.256.256.256.256/", + "origin": "http://256.256.256.256.256", + "protocol": "http:", + "username": "", + "password": "", + "host": "256.256.256.256.256", + "hostname": "256.256.256.256.256", + "port": "", + "pathname": "/", + "search": "", + "hash": "" + }, + "# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)", + { + "input": "pix/submit.gif", + "base": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html", + "href": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif", + "search": "", + "hash": "" + }, + { + "input": "..", + "base": "file:///C:/", + "href": "file:///C:/", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/C:/", + "search": "", + "hash": "" + }, + { + "input": "..", + "base": "file:///", + "href": "file:///", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/", + "search": "", + "hash": "" } ] diff --git a/tests/wpt/web-platform-tests/vr/idlharness.html b/tests/wpt/web-platform-tests/vr/idlharness.html new file mode 100644 index 00000000000..958ca2dc425 --- /dev/null +++ b/tests/wpt/web-platform-tests/vr/idlharness.html @@ -0,0 +1,272 @@ + + + + + WebVR IDL test + + + + + + + + + +

    Description

    +

    + This test verifies that implementations of the WebVR API match its WebIDL definition. +

    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/OWNERS b/tests/wpt/web-platform-tests/webmessaging/OWNERS index 94f8bf98eb4..b7d80e92a1d 100644 --- a/tests/wpt/web-platform-tests/webmessaging/OWNERS +++ b/tests/wpt/web-platform-tests/webmessaging/OWNERS @@ -1,5 +1,5 @@ @zqzhang -@plehegar @aogilvie @Ms2ger @jdm +@mkruisselbrink diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/basics.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/basics.html new file mode 100644 index 00000000000..ed16e32f543 --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/basics.html @@ -0,0 +1,120 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html new file mode 100644 index 00000000000..8b50153fdb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html @@ -0,0 +1,79 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/interface.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/interface.html new file mode 100644 index 00000000000..a552563ed66 --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/interface.html @@ -0,0 +1,73 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/sandboxed.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/sandboxed.html new file mode 100644 index 00000000000..e32962cdfd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/sandboxed.html @@ -0,0 +1,10 @@ + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js new file mode 100644 index 00000000000..2f0e4eaa34c --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js @@ -0,0 +1,26 @@ +var c; + +function handler(e, reply) { + if (e.data.ping) { + c.postMessage(e.data.ping); + return; + } + if (e.data.blob) { + c.postMessage({blob: new Blob(e.data.blob)}); + } + c = new BroadcastChannel(e.data.channel); + let messages = []; + c.onmessage = e => { + messages.push(e.data); + if (e.data == 'done') + reply(messages); + }; + c.postMessage('from worker'); +} + +onmessage = e => handler(e, postMessage); + +onconnect = e => { + let port = e.ports[0]; + port.onmessage = e => handler(e, msg => port.postMessage(msg)); +}; diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/sandbox.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/sandbox.html new file mode 100644 index 00000000000..aedf3c0d6fe --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/sandbox.html @@ -0,0 +1,16 @@ + + +Creating BroadcastChannel in an opaque origin + + + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html new file mode 100644 index 00000000000..7ccbd395778 --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html @@ -0,0 +1,108 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html b/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html new file mode 100644 index 00000000000..912aacda52c --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html @@ -0,0 +1,74 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/webmessaging/with-ports/016.html b/tests/wpt/web-platform-tests/webmessaging/with-ports/016.html index 7257c95d0d7..51cadec7c17 100644 --- a/tests/wpt/web-platform-tests/webmessaging/with-ports/016.html +++ b/tests/wpt/web-platform-tests/webmessaging/with-ports/016.html @@ -2,13 +2,18 @@ origin of the script that invoked the method, data: - +
    diff --git a/tests/wpt/web-platform-tests/webmessaging/with-ports/023.html b/tests/wpt/web-platform-tests/webmessaging/with-ports/023.html index 664289585da..da6a5c49a44 100644 --- a/tests/wpt/web-platform-tests/webmessaging/with-ports/023.html +++ b/tests/wpt/web-platform-tests/webmessaging/with-ports/023.html @@ -4,12 +4,8 @@
    diff --git a/tests/wpt/web-platform-tests/webmessaging/without-ports/016.html b/tests/wpt/web-platform-tests/webmessaging/without-ports/016.html index da1d8e59599..51cadec7c17 100644 --- a/tests/wpt/web-platform-tests/webmessaging/without-ports/016.html +++ b/tests/wpt/web-platform-tests/webmessaging/without-ports/016.html @@ -2,13 +2,18 @@ origin of the script that invoked the method, data: - +
    diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html b/tests/wpt/web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html new file mode 100644 index 00000000000..997f65c4380 --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html @@ -0,0 +1,36 @@ + + +RTCDataChannelEvent constructor + + + diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html new file mode 100644 index 00000000000..22d9d4bb591 --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html @@ -0,0 +1,34 @@ + + +RTCPeerConnectionIceEvent constructor + + + diff --git a/tests/wpt/web-platform-tests/webrtc/simplecall.html b/tests/wpt/web-platform-tests/webrtc/simplecall.html index 94d5ea6f761..23f13d4675c 100644 --- a/tests/wpt/web-platform-tests/webrtc/simplecall.html +++ b/tests/wpt/web-platform-tests/webrtc/simplecall.html @@ -36,6 +36,14 @@ property to true in Firefox. var gFirstConnection = null; var gSecondConnection = null; + // if the remote video gets video data that implies the negotiation + // as well as the ICE and DTLS connection are up. + document.getElementById('remote-view') + .addEventListener('loadedmetadata', function() { + // Call negotiated: done. + test.done(); + }); + function getUserMediaOkCallback(localStream) { gFirstConnection = new RTCPeerConnection(null); gFirstConnection.onicecandidate = onIceCandidateToFirst; @@ -78,22 +86,15 @@ property to true in Firefox. var parsedAnswer = new RTCSessionDescription({ type: 'answer', sdp: answerSdp }); gFirstConnection.setRemoteDescription(parsedAnswer); - - // Call negotiated: done. - test.done(); }; var onIceCandidateToFirst = test.step_func(function(event) { // If event.candidate is null = no more candidates. - if (event.candidate) { - gSecondConnection.addIceCandidate(event.candidate); - } + gSecondConnection.addIceCandidate(event.candidate); }); var onIceCandidateToSecond = test.step_func(function(event) { - if (event.candidate) { - gFirstConnection.addIceCandidate(event.candidate); - } + gFirstConnection.addIceCandidate(event.candidate); }); var onRemoteStream = test.step_func(function(event) { diff --git a/tests/wpt/web-platform-tests/websockets/OWNERS b/tests/wpt/web-platform-tests/websockets/OWNERS index a2cbe188a5c..7c26b48d35e 100644 --- a/tests/wpt/web-platform-tests/websockets/OWNERS +++ b/tests/wpt/web-platform-tests/websockets/OWNERS @@ -1,6 +1,5 @@ @kristijanburnik @zcorpan -@plehegar @zqzhang @Jxck @jdm diff --git a/tests/wpt/web-platform-tests/webstorage/OWNERS b/tests/wpt/web-platform-tests/webstorage/OWNERS index 3b7fb5d888f..ccd94c4f332 100644 --- a/tests/wpt/web-platform-tests/webstorage/OWNERS +++ b/tests/wpt/web-platform-tests/webstorage/OWNERS @@ -3,7 +3,6 @@ @zqzhang @chunywang @kangxu -@plehegar @ibelem @jdm @Ms2ger diff --git a/tests/wpt/web-platform-tests/workers/opaque-origin.html b/tests/wpt/web-platform-tests/workers/opaque-origin.html new file mode 100644 index 00000000000..0474b970c96 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/opaque-origin.html @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/workers/support/sandboxed-tests.html b/tests/wpt/web-platform-tests/workers/support/sandboxed-tests.html new file mode 100644 index 00000000000..811c925f56f --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/support/sandboxed-tests.html @@ -0,0 +1,67 @@ + + + + +