diff --git a/chrome/VERSION b/chrome/VERSION index 02cf3d71..f8b8ab324 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=61 MINOR=0 -BUILD=3141 +BUILD=3142 PATCH=0
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG index 5c93a62..6645f1d 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -4411,8 +4411,6 @@ crbug.com/591099 external/wpt/css/css-display-3/display-contents-multicol-001.html [ Failure ] crbug.com/591099 external/wpt/css/css-display-3/display-flow-root-001.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/Flexible-order.html [ Crash Failure Pass ] -crbug.com/591099 external/wpt/css/css-flexbox-1/auto-margins-001-ref.html [ Failure ] -crbug.com/591099 external/wpt/css/css-flexbox-1/auto-margins-001.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-row-reverse-wrap-reverse.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-row-reverse-wrap.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/css-flexbox-row-wrap-reverse.html [ Failure ] @@ -4577,10 +4575,6 @@ crbug.com/591099 external/wpt/css/css-flexbox-1/flexbox_wrap.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/order/order-with-row-reverse.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/percentage-heights-000.html [ Failure ] -crbug.com/591099 external/wpt/css/css-flexbox-1/percentage-widths-001.html [ Failure ] -crbug.com/591099 external/wpt/css/css-flexbox-1/position-absolute-002.html [ Failure ] -crbug.com/591099 external/wpt/css/css-flexbox-1/position-absolute-004.html [ Failure ] -crbug.com/591099 external/wpt/css/css-flexbox-1/position-absolute-005.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-align-content-center.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-align-content-end.html [ Failure ] crbug.com/591099 external/wpt/css/css-flexbox-1/ttwf-reftest-flex-align-content-space-around.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/NeverFixTests b/third_party/WebKit/LayoutTests/NeverFixTests index cf6fb0546..3bfeabd 100644 --- a/third_party/WebKit/LayoutTests/NeverFixTests +++ b/third_party/WebKit/LayoutTests/NeverFixTests
@@ -582,6 +582,20 @@ external/wpt/css/css-ui-3/resize-005.html [ WontFix ] external/wpt/css/css-ui-3/resize-006.html [ WontFix ] external/wpt/css/css-ui-3/resize-007.html [ WontFix ] +external/wpt/css/css-ui-3/resize-008.html [ WontFix ] +external/wpt/css/css-ui-3/resize-009.html [ WontFix ] +external/wpt/css/css-ui-3/resize-010.html [ WontFix ] +external/wpt/css/css-ui-3/resize-011.html [ WontFix ] +external/wpt/css/css-ui-3/resize-012.html [ WontFix ] +external/wpt/css/css-ui-3/resize-013.html [ WontFix ] +external/wpt/css/css-ui-3/resize-014.html [ WontFix ] +external/wpt/css/css-ui-3/resize-015.html [ WontFix ] +external/wpt/css/css-ui-3/resize-016.html [ WontFix ] +external/wpt/css/css-ui-3/resize-017.html [ WontFix ] +external/wpt/css/css-ui-3/resize-018.html [ WontFix ] +external/wpt/css/css-ui-3/resize-019.html [ WontFix ] +external/wpt/css/css-ui-3/resize-020.html [ WontFix ] +external/wpt/css/css-ui-3/resize-021.html [ WontFix ] external/wpt/css/css-ui-3/select-cursor-001-manual.html [ WontFix ] external/wpt/css/css-ui-3/text-overflow.html [ WontFix ] external/wpt/css/css-writing-modes-3/background-position-vlr-003.xht [ WontFix ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index b410d9a0..75de2e7 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1223,7 +1223,6 @@ crbug.com/377696 printing/setPrinting.html [ Skip ] crbug.com/377696 printing/width-overflow.html [ Skip ] -crbug.com/474987 [ Win Mac ] external/wpt/css/css-flexbox-1/auto-margins-001.html [ Failure ] crbug.com/658305 css3/filters/buffer-offset.html [ Failure Pass ] crbug.com/658305 css3/filters/effect-all-on-background-hw.html [ Failure Pass ] @@ -2023,6 +2022,7 @@ crbug.com/626703 virtual/threaded/transitions/transition-end-event-multiple-03.html [ Pass Failure ] # ====== New tests from wpt-importer added here ====== +crbug.com/626703 external/wpt/workers/name-property.html [ Timeout ] crbug.com/626703 external/wpt/pointerevents/pointerevent_disabled_form_control-manual.html [ Timeout Pass ] crbug.com/626703 external/wpt/css/CSS2/text/text-align-white-space-003.xht [ Failure ] crbug.com/626703 external/wpt/css/CSS2/text/text-align-white-space-007.xht [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json index 8180503..d16116c0 100644 --- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json +++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -2065,6 +2065,90 @@ {} ] ], + "css/css-ui-3/resize-008.html": [ + [ + "/css/css-ui-3/resize-008.html", + {} + ] + ], + "css/css-ui-3/resize-009.html": [ + [ + "/css/css-ui-3/resize-009.html", + {} + ] + ], + "css/css-ui-3/resize-010.html": [ + [ + "/css/css-ui-3/resize-010.html", + {} + ] + ], + "css/css-ui-3/resize-011.html": [ + [ + "/css/css-ui-3/resize-011.html", + {} + ] + ], + "css/css-ui-3/resize-012.html": [ + [ + "/css/css-ui-3/resize-012.html", + {} + ] + ], + "css/css-ui-3/resize-013.html": [ + [ + "/css/css-ui-3/resize-013.html", + {} + ] + ], + "css/css-ui-3/resize-014.html": [ + [ + "/css/css-ui-3/resize-014.html", + {} + ] + ], + "css/css-ui-3/resize-015.html": [ + [ + "/css/css-ui-3/resize-015.html", + {} + ] + ], + "css/css-ui-3/resize-016.html": [ + [ + "/css/css-ui-3/resize-016.html", + {} + ] + ], + "css/css-ui-3/resize-017.html": [ + [ + "/css/css-ui-3/resize-017.html", + {} + ] + ], + "css/css-ui-3/resize-018.html": [ + [ + "/css/css-ui-3/resize-018.html", + {} + ] + ], + "css/css-ui-3/resize-019.html": [ + [ + "/css/css-ui-3/resize-019.html", + {} + ] + ], + "css/css-ui-3/resize-020.html": [ + [ + "/css/css-ui-3/resize-020.html", + {} + ] + ], + "css/css-ui-3/resize-021.html": [ + [ + "/css/css-ui-3/resize-021.html", + {} + ] + ], "css/css-ui-3/select-cursor-001-manual.html": [ [ "/css/css-ui-3/select-cursor-001-manual.html", @@ -4032,6 +4116,12 @@ "/webstorage/storage_session-manual.html", {} ] + ], + "webusb/usb-manual.https.html": [ + [ + "/webusb/usb-manual.https.html", + {} + ] ] }, "reftest": { @@ -58635,6 +58725,18 @@ {} ] ], + "html/rendering/non-replaced-elements/tables/table-direction.html": [ + [ + "/html/rendering/non-replaced-elements/tables/table-direction.html", + [ + [ + "/html/rendering/non-replaced-elements/tables/table-direction-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/non-replaced-elements/tables/table-layout.html": [ [ "/html/rendering/non-replaced-elements/tables/table-layout.html", @@ -58647,6 +58749,30 @@ {} ] ], + "html/rendering/non-replaced-elements/tables/table-row-direction.html": [ + [ + "/html/rendering/non-replaced-elements/tables/table-row-direction.html", + [ + [ + "/html/rendering/non-replaced-elements/tables/table-row-direction-ref.html", + "==" + ] + ], + {} + ] + ], + "html/rendering/non-replaced-elements/tables/table-row-group-direction.html": [ + [ + "/html/rendering/non-replaced-elements/tables/table-row-group-direction.html", + [ + [ + "/html/rendering/non-replaced-elements/tables/table-row-group-direction-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/non-replaced-elements/tables/table-width-150percent.html": [ [ "/html/rendering/non-replaced-elements/tables/table-width-150percent.html", @@ -65176,6 +65302,21 @@ {} ] ], + "IndexedDB/idbcursor_continue_index3-expected.txt": [ + [ + {} + ] + ], + "IndexedDB/idbcursor_iterating_objectstore2-expected.txt": [ + [ + {} + ] + ], + "IndexedDB/idbindex_count4-expected.txt": [ + [ + {} + ] + ], "IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt": [ [ {} @@ -65196,6 +65337,21 @@ {} ] ], + "IndexedDB/key_valid-expected.txt": [ + [ + {} + ] + ], + "IndexedDB/nested-cloning-common.js": [ + [ + {} + ] + ], + "IndexedDB/request_bubble-and-capture-expected.txt": [ + [ + {} + ] + ], "IndexedDB/support-promises.js": [ [ {} @@ -65206,6 +65362,11 @@ {} ] ], + "IndexedDB/transaction-abort-multiple-metadata-revert-expected.txt": [ + [ + {} + ] + ], "WebCryptoAPI/README.md": [ [ {} @@ -73866,6 +74027,11 @@ {} ] ], + "css/css-grid-1/test-plan/index.html": [ + [ + {} + ] + ], "css/css-position-3/position-sticky-bottom-ref.html": [ [ {} @@ -74481,6 +74647,11 @@ {} ] ], + "css/css-shapes-1/test-plan/index.html": [ + [ + {} + ] + ], "css/css-text-3/i18n/css3-text-line-break-baspglwj-026-expected.txt": [ [ {} @@ -78381,6 +78552,16 @@ {} ] ], + "css/css-ui-3/support/orange.png": [ + [ + {} + ] + ], + "css/css-ui-3/support/orange.svg": [ + [ + {} + ] + ], "css/css-ui-3/support/r1-1.svg": [ [ {} @@ -78391,6 +78572,21 @@ {} ] ], + "css/css-ui-3/support/test.mp4": [ + [ + {} + ] + ], + "css/css-ui-3/support/test.ogv": [ + [ + {} + ] + ], + "css/css-ui-3/support/test.webm": [ + [ + {} + ] + ], "css/css-ui-3/support/w100.svg": [ [ {} @@ -80726,6 +80922,86 @@ {} ] ], + "css/css-writing-modes-3/test-plan/img/figure-over_and_under-fail.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/figure-over_and_under-pass.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/figure-rendering-tcu.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/figure-tcufont.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/heavy_h.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/heavy_h_rotated.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/over_and_under.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/pointing_right.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/pointing_up.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/square_black.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/square_blank.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/stripe_double.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/stripe_quad.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/img/stripe_triple.svg": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/index.html": [ + [ + {} + ] + ], + "css/css-writing-modes-3/test-plan/req-tcu-font.html": [ + [ + {} + ] + ], "css/css-writing-modes-3/text-align-vlr-009-ref.xht": [ [ {} @@ -82626,6 +82902,11 @@ {} ] ], + "cssom-view/cssom-getClientRects-002-expected.txt": [ + [ + {} + ] + ], "cssom-view/cssom-view/window-interface-expected.txt": [ [ {} @@ -83856,11 +84137,6 @@ {} ] ], - "domxpath/interfaces-expected.txt": [ - [ - {} - ] - ], "domxpath/xml_xpath_tests.xml": [ [ {} @@ -84641,6 +84917,11 @@ {} ] ], + "encoding/legacy-mb-tchinese/big5/big5-enc-ascii-expected.txt": [ + [ + {} + ] + ], "encoding/legacy-mb-tchinese/big5/big5-enc-ascii.html.headers": [ [ {} @@ -93786,6 +94067,11 @@ {} ] ], + "html/rendering/non-replaced-elements/tables/table-direction-ref.html": [ + [ + {} + ] + ], "html/rendering/non-replaced-elements/tables/table-layout-notref.html": [ [ {} @@ -93796,6 +94082,16 @@ {} ] ], + "html/rendering/non-replaced-elements/tables/table-row-direction-ref.html": [ + [ + {} + ] + ], + "html/rendering/non-replaced-elements/tables/table-row-group-direction-ref.html": [ + [ + {} + ] + ], "html/rendering/non-replaced-elements/tables/table-width-150percent-ref.html": [ [ {} @@ -95806,6 +96102,26 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/resources/import-non-utf8-with-charset-header.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/resources/import-non-utf8.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/resources/import-utf8-with-charset-header.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/resources/import-utf8.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/set-currentScript-on-window.js": [ [ {} @@ -95851,6 +96167,21 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/resources/bom-utf-16be.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/resources/bom-utf-16le.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/resources/bom-utf-8.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/resources/cocoa-module.js": [ [ {} @@ -97616,6 +97947,11 @@ {} ] ], + "interfaces/dedicated-workers.idl": [ + [ + {} + ] + ], "interfaces/dom.idl": [ [ {} @@ -97661,6 +97997,11 @@ {} ] ], + "interfaces/webusb.idl": [ + [ + {} + ] + ], "keyboard-lock/idlharness.https-expected.txt": [ [ {} @@ -98176,6 +98517,11 @@ {} ] ], + "mediacapture-streams/MediaDevices-IDL-all-expected.txt": [ + [ + {} + ] + ], "mediacapture-streams/MediaDevices-IDL-enumerateDevices-expected.txt": [ [ {} @@ -102836,11 +103182,6 @@ {} ] ], - "service-workers/service-worker/claim-fetch.https-expected.txt": [ - [ - {} - ] - ], "service-workers/service-worker/clients-get-client-types.https-expected.txt": [ [ {} @@ -103791,7 +104132,7 @@ {} ] ], - "service-workers/service-worker/resources/opaque-response-preloaded-iframe.html": [ + "service-workers/service-worker/resources/opaque-response-being-preloaded-xhr.html": [ [ {} ] @@ -103801,6 +104142,11 @@ {} ] ], + "service-workers/service-worker/resources/opaque-response-preloaded-xhr.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/other.html": [ [ {} @@ -105671,6 +106017,11 @@ {} ] ], + "webrtc/RTCPeerConnection-connectionState-expected.txt": [ + [ + {} + ] + ], "webrtc/RTCPeerConnection-constructor-expected.txt": [ [ {} @@ -105701,6 +106052,11 @@ {} ] ], + "webrtc/RTCPeerConnection-iceConnectionState-expected.txt": [ + [ + {} + ] + ], "webrtc/RTCPeerConnection-iceGatheringState-expected.txt": [ [ {} @@ -105711,6 +106067,11 @@ {} ] ], + "webrtc/RTCPeerConnection-removeTrack-expected.txt": [ + [ + {} + ] + ], "webrtc/RTCPeerConnection-setRemoteDescription-expected.txt": [ [ {} @@ -105721,6 +106082,11 @@ {} ] ], + "webrtc/RTCRtpSender-replaceTrack-expected.txt": [ + [ + {} + ] + ], "webrtc/RTCSctpTransport-constructor-expected.txt": [ [ {} @@ -106061,6 +106427,21 @@ {} ] ], + "webusb/resources/fake-devices.js": [ + [ + {} + ] + ], + "webusb/resources/open-in-iframe.html": [ + [ + {} + ] + ], + "webusb/resources/usb-helpers.js": [ + [ + {} + ] + ], "webusb/usb-allowed-by-feature-policy.https.sub.html.headers": [ [ {} @@ -108356,11 +108737,6 @@ {} ] ], - "workers/interfaces.idl": [ - [ - {} - ] - ], "workers/interfaces/DedicatedWorkerGlobalScope/postMessage/message-event.js": [ [ {} @@ -108626,6 +109002,11 @@ {} ] ], + "workers/support/name-as-accidental-global.js": [ + [ + {} + ] + ], "workers/support/name.js": [ [ {} @@ -115385,14 +115766,6 @@ } ] ], - "IndexedDB/large-nested-cloning.html": [ - [ - "/IndexedDB/large-nested-cloning.html", - { - "timeout": "long" - } - ] - ], "IndexedDB/large-requests-abort.html": [ [ "/IndexedDB/large-requests-abort.html", @@ -115413,6 +115786,30 @@ {} ] ], + "IndexedDB/nested-cloning-large-multiple.html": [ + [ + "/IndexedDB/nested-cloning-large-multiple.html", + { + "timeout": "long" + } + ] + ], + "IndexedDB/nested-cloning-large.html": [ + [ + "/IndexedDB/nested-cloning-large.html", + { + "timeout": "long" + } + ] + ], + "IndexedDB/nested-cloning-small.html": [ + [ + "/IndexedDB/nested-cloning-small.html", + { + "timeout": "long" + } + ] + ], "IndexedDB/objectstore_keyorder.htm": [ [ "/IndexedDB/objectstore_keyorder.htm", @@ -120547,6 +120944,12 @@ {} ] ], + "css/css-flexbox-1/percentage-heights-001.html": [ + [ + "/css/css-flexbox-1/percentage-heights-001.html", + {} + ] + ], "css/css-grid-1/alignment/grid-self-alignment-stretch-001.html": [ [ "/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html", @@ -120937,6 +121340,12 @@ {} ] ], + "css/css-position-3/position-sticky-offset-top-left.html": [ + [ + "/css/css-position-3/position-sticky-offset-top-left.html", + {} + ] + ], "css/css-position-3/position-sticky-parsing.html": [ [ "/css/css-position-3/position-sticky-parsing.html", @@ -134147,6 +134556,24 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/charset-01.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/charset-01.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/charset-02.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/charset-02.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/charset-03.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/charset-03.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/compilation-error-1.html": [ [ "/html/semantics/scripting-1/the-script-element/module/compilation-error-1.html", @@ -164327,6 +164754,60 @@ {} ] ], + "webusb/usbConnectionEvent.https.html": [ + [ + "/webusb/usbConnectionEvent.https.html", + {} + ] + ], + "webusb/usbDevice-iframe.https.html": [ + [ + "/webusb/usbDevice-iframe.https.html", + {} + ] + ], + "webusb/usbDevice.https.html": [ + [ + "/webusb/usbDevice.https.html", + {} + ] + ], + "webusb/usbInTransferResult.https.html": [ + [ + "/webusb/usbInTransferResult.https.html", + {} + ] + ], + "webusb/usbIsochronousInTransferPacket.https.html": [ + [ + "/webusb/usbIsochronousInTransferPacket.https.html", + {} + ] + ], + "webusb/usbIsochronousInTransferResult.https.html": [ + [ + "/webusb/usbIsochronousInTransferResult.https.html", + {} + ] + ], + "webusb/usbIsochronousOutTransferPacket.https.html": [ + [ + "/webusb/usbIsochronousOutTransferPacket.https.html", + {} + ] + ], + "webusb/usbIsochronousOutTransferResult.https.html": [ + [ + "/webusb/usbIsochronousOutTransferResult.https.html", + {} + ] + ], + "webusb/usbOutTransferResult.https.html": [ + [ + "/webusb/usbOutTransferResult.https.html", + {} + ] + ], "webvr/idlharness.html": [ [ "/webvr/idlharness.html", @@ -169859,7 +170340,7 @@ "support" ], "./.travis.yml": [ - "130d5c86ee06fc2bff6779ec8db90a86db7f0547", + "9f2adb9dff658274255e743a71372320968c2d00", "support" ], "./CONTRIBUTING.md": [ @@ -169899,7 +170380,7 @@ "support" ], "./lint.whitelist": [ - "59074d9f9b155631ac1bf03a9b4b40175ca8b538", + "fcf18952cf69e6aae904c8b208abaf33c928080e", "support" ], "./update-built-tests.sh": [ @@ -174814,6 +175295,10 @@ "cbec9b06016acc1af49b3e0a673b2905773114f6", "testharness" ], + "IndexedDB/idbcursor_continue_index3-expected.txt": [ + "1d69a1cffcd64c05bab8aa0ab0efa56b59568a79", + "support" + ], "IndexedDB/idbcursor_continue_index3.htm": [ "6d37c3e1996d0f54d87a29b2a65d3bb76736cba2", "testharness" @@ -174922,6 +175407,10 @@ "728242c9f1b72b7348c68c2723b25765bab64332", "testharness" ], + "IndexedDB/idbcursor_iterating_objectstore2-expected.txt": [ + "3ef1f02a86fe71c5096111ac2df33c734205da6d", + "support" + ], "IndexedDB/idbcursor_iterating_objectstore2.htm": [ "811427a853df6d79e671569b87a95e51b3e06070", "testharness" @@ -175254,6 +175743,10 @@ "e60732dbfc5de408f3ea32007ae22ee34b337ed8", "testharness" ], + "IndexedDB/idbindex_count4-expected.txt": [ + "9f7bdd476be5f8ae6c9b7692e338894d1b43eaa4", + "support" + ], "IndexedDB/idbindex_count4.htm": [ "9deabbce03168c216316a8eb8d317089fb26cd02", "testharness" @@ -175810,6 +176303,10 @@ "8c0257c4231c413dde10c6f541f17f57634bff1c", "testharness" ], + "IndexedDB/key_valid-expected.txt": [ + "f3b51f5baf287c6b05304501ab1f85042703d66b", + "support" + ], "IndexedDB/key_valid.html": [ "85d0f455f5116e0754bf29fe6ba5052e7a7563a7", "testharness" @@ -175858,10 +176355,6 @@ "ef0680b2623521388e23654b5428cbfb553b4ee8", "testharness" ], - "IndexedDB/large-nested-cloning.html": [ - "831510a9d36a19081cf037940b19092e37303e19", - "testharness" - ], "IndexedDB/large-requests-abort.html": [ "7b8b1ccb8b7f9d737b648ceade5192a57c4ad690", "testharness" @@ -175874,6 +176367,22 @@ "d08882dc03b23cedaf1369c76937c95fec69df1e", "testharness" ], + "IndexedDB/nested-cloning-common.js": [ + "6e96fe11781f75b6beca649e9264c5e990ea7ffc", + "support" + ], + "IndexedDB/nested-cloning-large-multiple.html": [ + "6e16a5af0faab1406b6a2ae18397178b24440796", + "testharness" + ], + "IndexedDB/nested-cloning-large.html": [ + "5981f9fd67f8487e27494aea57cf3dae9eacb3e6", + "testharness" + ], + "IndexedDB/nested-cloning-small.html": [ + "9b9c7e27e3b80fc49c06406e05c251d2c66dacb0", + "testharness" + ], "IndexedDB/objectstore_keyorder.htm": [ "dda6c0ad4832b2a48980efdcb0efdae995c43fdd", "testharness" @@ -175894,6 +176403,10 @@ "44e8124ba121e64d82e47a99735e1a1df4f8ed44", "testharness" ], + "IndexedDB/request_bubble-and-capture-expected.txt": [ + "f14dd2c3e50689b38e5d2bb64153d6bd8ad077bc", + "support" + ], "IndexedDB/request_bubble-and-capture.htm": [ "9c486babd57c2d14bb251d5bba202b3dbd6c802d", "testharness" @@ -175918,6 +176431,10 @@ "07a6e888f303a42e66f2afaa98c9941e08ce2aa2", "testharness" ], + "IndexedDB/transaction-abort-multiple-metadata-revert-expected.txt": [ + "80751b784577c0ccc82e1e74b6bb51eeb821c972", + "support" + ], "IndexedDB/transaction-abort-multiple-metadata-revert.html": [ "204ed174a936fe4a91c36e00559845287ae31748", "testharness" @@ -180611,7 +181128,7 @@ "testharness" ], "content-security-policy/securitypolicyviolation/idl-expected.txt": [ - "3606099a0a700e33b39271142d5bb92a66bb0c64", + "8a26544297000dbcd2ad096b596bfb2b53e28807", "support" ], "content-security-policy/securitypolicyviolation/idl.html": [ @@ -180639,11 +181156,11 @@ "testharness" ], "content-security-policy/securitypolicyviolation/script-sample-no-opt-in.html": [ - "44cad18dc963c49062c0f3b7ea7a8951157cbcb7", + "f36718ff0a9040db0b9257f772f5bcae98ae2305", "testharness" ], "content-security-policy/securitypolicyviolation/script-sample.html": [ - "27315dd1baa98901e99a0cae82efc449924e496b", + "9e2ad606d8c3d17f6417134f84aef32305c92c49", "testharness" ], "content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html": [ @@ -197250,6 +197767,10 @@ "fbb795af85abb6bb28a2c3ac94012aad7e99b45b", "testharness" ], + "css/css-flexbox-1/percentage-heights-001.html": [ + "5c3c576ee34a20e61e33a9851d332c743a9f078a", + "testharness" + ], "css/css-flexbox-1/reference/Flexible-order-ref.html": [ "a6a2ef286c9c2abd0456056ad17cbb0ece7dc2d4", "support" @@ -198902,6 +199423,10 @@ "a9d8444db24ab38518f07a965a8a537cc6add437", "support" ], + "css/css-grid-1/test-plan/index.html": [ + "e633dc7584fbc7bfe99177aa5dd9fbd107a2d3f5", + "support" + ], "css/css-position-3/position-sticky-bottom-ref.html": [ "726d6e927d84669e9355701ccd948349d377e6fd", "support" @@ -198911,7 +199436,7 @@ "reftest" ], "css/css-position-3/position-sticky-get-bounding-client-rect.html": [ - "77da4ac9e0eea6433c4fa890cd4a2151f46c35a3", + "5b9a1a29084f46228749c1b2b1a664be3ce02c43", "testharness" ], "css/css-position-3/position-sticky-left-ref.html": [ @@ -198922,6 +199447,10 @@ "5151bca08dff652ea728cb8bccbb6b7c6d364dd8", "reftest" ], + "css/css-position-3/position-sticky-offset-top-left.html": [ + "a25b64d016644c272ea92b6129a59eefb21d2fa0", + "testharness" + ], "css/css-position-3/position-sticky-parsing.html": [ "224bc984bc6eb4a55931461cf7e51f7b04d219f4", "testharness" @@ -200290,6 +200819,10 @@ "078e1dd6dd61d36cec239ed75d02051f61fe60a5", "support" ], + "css/css-shapes-1/test-plan/index.html": [ + "5bb192165bcb7d9a619d86dbff61831fc8de71cb", + "support" + ], "css/css-text-3/i18n/css3-text-line-break-baspglwj-001.html": [ "b08dfce276ccafb057c793d69c25cf0caff332cc", "testharness" @@ -206502,6 +207035,62 @@ "ec49229d583a225738a3f514ae280d1ddfafd199", "manual" ], + "css/css-ui-3/resize-008.html": [ + "8ab240226c30f6c13c368ea2d9d36812624cee21", + "manual" + ], + "css/css-ui-3/resize-009.html": [ + "3a0c023506f975edb6b33d8f33a45911b767476a", + "manual" + ], + "css/css-ui-3/resize-010.html": [ + "25eb9b36b22d59fca313dd2bc5bd01482b1e97ab", + "manual" + ], + "css/css-ui-3/resize-011.html": [ + "e748077bb1f53f0298ff0a90122243e088c74512", + "manual" + ], + "css/css-ui-3/resize-012.html": [ + "b46a69991f46cd17379c560bca5775ee9b615e51", + "manual" + ], + "css/css-ui-3/resize-013.html": [ + "26714a476eb6e6b34e006bd004907ac51f61a062", + "manual" + ], + "css/css-ui-3/resize-014.html": [ + "e31a1fba24516a5b64d5934f1d0f89337d52226c", + "manual" + ], + "css/css-ui-3/resize-015.html": [ + "c994a65d309d23f2cedb38645b521f36325d9224", + "manual" + ], + "css/css-ui-3/resize-016.html": [ + "3c08942b3f27ab8b90fcbad01fbc96c778a5bcaa", + "manual" + ], + "css/css-ui-3/resize-017.html": [ + "b333ab876e53b194a5f292152fa3277d643ff50d", + "manual" + ], + "css/css-ui-3/resize-018.html": [ + "38c5691917b0a1fdfffb5347beadd824e6e7ceda", + "manual" + ], + "css/css-ui-3/resize-019.html": [ + "aabb0e62b8fa9b51d663c7759442ff4d7fbfe3b7", + "manual" + ], + "css/css-ui-3/resize-020.html": [ + "dae674378da42d37720c2e892525da3c6df564e4", + "manual" + ], + "css/css-ui-3/resize-021.html": [ + "cb95c6ff5f784bcd91a044a5ed3fcc2ae311f388", + "manual" + ], "css/css-ui-3/select-cursor-001-manual.html": [ "192de157a390bef30b481257c3979c117c08e6fa", "manual" @@ -207394,6 +207983,14 @@ "aba357c58d6c4ce9975e2dd5dd9ef704895b4afb", "support" ], + "css/css-ui-3/support/orange.png": [ + "df451ef5ab05264d56616c24d94fde0e0882fff7", + "support" + ], + "css/css-ui-3/support/orange.svg": [ + "2d1dffcb42c54326795ed90700d23b7347a1644b", + "support" + ], "css/css-ui-3/support/r1-1.svg": [ "e2eb4fc2608d74be2156eccb5ea5a22866e6eb66", "support" @@ -207402,6 +207999,18 @@ "559cf518d41b151bac2638045093ca0a0d9317e8", "support" ], + "css/css-ui-3/support/test.mp4": [ + "2750d8491565f07a5f09eadfe1a1f0336a3ca26a", + "support" + ], + "css/css-ui-3/support/test.ogv": [ + "25cc63ff816d5bfb039da788131050dba9d7dc6c", + "support" + ], + "css/css-ui-3/support/test.webm": [ + "a06d964d2c7a770ddfc375532d06b94bf1a83c3c", + "support" + ], "css/css-ui-3/support/w100.svg": [ "a82922abdcaba31b934a27cbc43bca3bd46de54b", "support" @@ -209435,11 +210044,11 @@ "reftest" ], "css/css-writing-modes-3/contiguous-floated-table-vlr-007.xht": [ - "cdefb61a7766ee846c81553a6797fcb263a8dc35", + "b03e26b2eb2ae9eddd76cd4b96c004f10cfb15f1", "reftest" ], "css/css-writing-modes-3/contiguous-floated-table-vlr-009.xht": [ - "b892a1a4c51ebfe2b8446c9787d001af64283a3d", + "e4969ad20f4892e539f4b6af959f544d0a1c02e6", "reftest" ], "css/css-writing-modes-3/contiguous-floated-table-vrl-002.xht": [ @@ -209451,11 +210060,11 @@ "reftest" ], "css/css-writing-modes-3/contiguous-floated-table-vrl-006.xht": [ - "43da7e1c56b3f983b4eac3c153ff0e29c24b119d", + "64687447330f8bcf2cb03538058e329ac3eb48be", "reftest" ], "css/css-writing-modes-3/contiguous-floated-table-vrl-008.xht": [ - "4baa13869a2747e865a988e8a0fb63bf4989a0e7", + "50908668186f32ed39a7e64ad630bd9a71c85d2b", "reftest" ], "css/css-writing-modes-3/different-block-flow-dir-001.xht": [ @@ -210007,11 +210616,11 @@ "support" ], "css/css-writing-modes-3/line-box-height-vlr-003.xht": [ - "03b71cb044e731fcb8b58041f1f642f839061dfd", + "9d355624e6e9e2b868b9890aaffed418dedd81c1", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-005.xht": [ - "983c1a4f31c170fea66c38d2a626c105a7071dfe", + "6ff3ba2274767fd6b710970cad62dcd00a122a3c", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-007-ref.xht": [ @@ -210019,11 +210628,11 @@ "support" ], "css/css-writing-modes-3/line-box-height-vlr-007.xht": [ - "aec7be36f364fa6f90a8371a489b4b3a3cf9cf82", + "4ba8dc40e9c0743b6055adb173311fb2e356cce6", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-009.xht": [ - "4f4e72f788c804eec614238c4bc21c5328f2d472", + "439fe965f6ea34d25e4cc9710893a0f538eef24e", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-011-ref.xht": [ @@ -210031,11 +210640,11 @@ "support" ], "css/css-writing-modes-3/line-box-height-vlr-011.xht": [ - "3f63e7d48990c2a136fb932c5db1688eb9f35762", + "ab420fd12b1a9df50bb16434985f24edc8dcdd7a", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-013.xht": [ - "88386222e5ff936aa5d52bcc5a1bb9424f29d6d5", + "15b6d066907ab67224536a045d3d12bbfc265af2", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-021-ref.xht": [ @@ -210043,7 +210652,7 @@ "support" ], "css/css-writing-modes-3/line-box-height-vlr-021.xht": [ - "636042d0e21518748f09ef7df43d809f46c9872c", + "97661051cf530fc7810203e7068072a42570d4e8", "reftest" ], "css/css-writing-modes-3/line-box-height-vlr-023-ref.xht": [ @@ -210051,7 +210660,7 @@ "support" ], "css/css-writing-modes-3/line-box-height-vlr-023.xht": [ - "bc545a63f82b19898cb6e5a056eeda98a6e73110", + "4c6eb6c5a4e271c50f1c8e8f9b4760b6be04264a", "reftest" ], "css/css-writing-modes-3/line-box-height-vrl-002-ref.xht": [ @@ -210059,11 +210668,11 @@ "support" ], "css/css-writing-modes-3/line-box-height-vrl-002.xht": [ - "88a19212954a57a8731e0c879bfcb1ebe439eed4", + "35cbc9b97dba18aae3f1fe78b5d30112f08c0505", "reftest" ], "css/css-writing-modes-3/line-box-height-vrl-004.xht": [ - "4b28eee29924e4eebe196350c9e013b6c109ad5e", + "3fd6410b4ead23b5b122d27a6fb8bc7ba84ae65d", "reftest" ], "css/css-writing-modes-3/line-box-height-vrl-006-ref.xht": [ @@ -210071,11 +210680,11 @@ "support" ], "css/css-writing-modes-3/line-box-height-vrl-006.xht": [ - "80b3a935fd622bbf4928561d92315259a7af6eb5", + "8c4aee9b0dd61c8f2b29c8d1cad9f6b8d21d09fb", "reftest" ], "css/css-writing-modes-3/line-box-height-vrl-008.xht": [ - "ee5be203f79c6afcf49647cb20932440a2f78116", + "6a5d20d37ad23987efeae1f6e4ee17ae77ca2a6b", "reftest" ], "css/css-writing-modes-3/line-box-height-vrl-010-ref.xht": [ @@ -210083,11 +210692,11 @@ "support" ], "css/css-writing-modes-3/line-box-height-vrl-010.xht": [ - "9fa7b8b6f04afcd6f506e3d55245b36091d67116", + "4f4038c84de1d5c7fe044e0334b8f64493e21609", "reftest" ], "css/css-writing-modes-3/line-box-height-vrl-012.xht": [ - "c73fe1815124b5c6c50196d6032d9e3fa77f06f4", + "af9a1409c41728f261794835cdedbfa2078aa141", "reftest" ], "css/css-writing-modes-3/margin-collapse-vlr-003.xht": [ @@ -212518,6 +213127,70 @@ "06da3d0196df6aae3ad342ec81cacd967423326d", "reftest" ], + "css/css-writing-modes-3/test-plan/img/figure-over_and_under-fail.svg": [ + "e51cf0c5422eeeccb490e60dc4f30d675d2f28f4", + "support" + ], + "css/css-writing-modes-3/test-plan/img/figure-over_and_under-pass.svg": [ + "e4418b57eec378a81852c602d694b3871caef4c3", + "support" + ], + "css/css-writing-modes-3/test-plan/img/figure-rendering-tcu.svg": [ + "b0968f032fe8c38e6ffb1f5ad54a0792f54300a4", + "support" + ], + "css/css-writing-modes-3/test-plan/img/figure-tcufont.svg": [ + "552887f4b1fa587defd94b8e9ae3395447ad9c36", + "support" + ], + "css/css-writing-modes-3/test-plan/img/heavy_h.svg": [ + "ba3770d94514d90f7874f6465ccd1e9fa7cfe016", + "support" + ], + "css/css-writing-modes-3/test-plan/img/heavy_h_rotated.svg": [ + "d03200f84acbfbb6a93cd6849990205524b4c0ab", + "support" + ], + "css/css-writing-modes-3/test-plan/img/over_and_under.svg": [ + "1a6ffb20be70fb01ef009ce57536c8a11b81ba88", + "support" + ], + "css/css-writing-modes-3/test-plan/img/pointing_right.svg": [ + "678ebbaca599033d6e18befedeed4c07ac2cfb17", + "support" + ], + "css/css-writing-modes-3/test-plan/img/pointing_up.svg": [ + "f1b76347d00b3c5190b27b3b624b8f248066ba99", + "support" + ], + "css/css-writing-modes-3/test-plan/img/square_black.svg": [ + "b7c46e7ea9bdfb729d3b8f4b371a0311de6aae3a", + "support" + ], + "css/css-writing-modes-3/test-plan/img/square_blank.svg": [ + "32e9c8382c28e724dd155c10d6cf6a901bad32d7", + "support" + ], + "css/css-writing-modes-3/test-plan/img/stripe_double.svg": [ + "09e4bb3f1501a46de95f85eeb2178c7012ecb51a", + "support" + ], + "css/css-writing-modes-3/test-plan/img/stripe_quad.svg": [ + "aa52e04f368e535ca6bbd9931f8c5ad148241ed4", + "support" + ], + "css/css-writing-modes-3/test-plan/img/stripe_triple.svg": [ + "3588204fc3899909510a54008833825084e574db", + "support" + ], + "css/css-writing-modes-3/test-plan/index.html": [ + "d8052e30e0242c0a1cec6fdf72dc4cdf68ebd930", + "support" + ], + "css/css-writing-modes-3/test-plan/req-tcu-font.html": [ + "94244d93ce6d7c99d2315b657585ba56b419d596", + "support" + ], "css/css-writing-modes-3/text-align-vlr-003.xht": [ "ff41d51a74d280e2f9a7010ccdd908c569e7877e", "reftest" @@ -213707,7 +214380,7 @@ "testharness" ], "css/geometry-1/interfaces-expected.txt": [ - "c3e2e95577a843b349f9a8a26db0b5c176fa0546", + "bb047258daf8e4026ae2a94dbd1ab92a8b86a3c3", "support" ], "css/geometry-1/interfaces.html": [ @@ -216398,6 +217071,10 @@ "8dfaa313b4abad30281d07ce22ac06a61754cc06", "testharness" ], + "cssom-view/cssom-getClientRects-002-expected.txt": [ + "9a34de1b85869d6354083854633b2b2c800dd784", + "support" + ], "cssom-view/cssom-getClientRects-002.html": [ "da348da01e09474f652ff1dfb6869665740668d5", "testharness" @@ -216875,7 +217552,7 @@ "testharness" ], "cssom/interfaces-expected.txt": [ - "e51a6bd20556ebe7ae6afdf64bff8081c9e36fa8", + "5dc9fe830179160590e75ddf075deadc074f0c63", "support" ], "cssom/interfaces.html": [ @@ -219146,10 +219823,6 @@ "4842d40e22e25ee72536946d785a3cd03bc6a11d", "testharness" ], - "domxpath/interfaces-expected.txt": [ - "13c20828b49356218276f9edae673736a60de9d1", - "support" - ], "domxpath/interfaces.html": [ "6848bd27f62d93fa527684c5625a42f4dc6470c2", "testharness" @@ -220206,6 +220879,10 @@ "895fb1caf07ea90bea9d34db70b0974f11d6c149", "support" ], + "encoding/legacy-mb-tchinese/big5/big5-enc-ascii-expected.txt": [ + "4de10207efe04b64e15201709872e3fffa45f259", + "support" + ], "encoding/legacy-mb-tchinese/big5/big5-enc-ascii.html": [ "8bede0c09c65f957d4c6545025038bef3e01e418", "testharness" @@ -222087,7 +222764,7 @@ "testharness" ], "fetch/api/request/request-idl-expected.txt": [ - "f63c66ed3ed9b2c166952fe8b4e718a6c2b1bd58", + "8ca22265e999443344290f4cdfa2dfb9bc88e7a0", "support" ], "fetch/api/request/request-idl.html": [ @@ -222243,7 +222920,7 @@ "testharness" ], "fetch/api/response/response-idl-expected.txt": [ - "595dc3432b2f6053860dfe33b28b99f7fa3151e3", + "aedba6ed576b1adae6fba4311c276e8ef45c09aa", "support" ], "fetch/api/response/response-idl.html": [ @@ -222423,7 +223100,7 @@ "testharness" ], "fetch/nosniff/stylesheet-expected.txt": [ - "b2646db0d28b41c428e0d143092479b9d60781e1", + "7f17b136a42732cd9f69e46e5af04caf4541a32f", "support" ], "fetch/nosniff/stylesheet.html": [ @@ -222619,7 +223296,7 @@ "testharness" ], "fullscreen/interfaces-expected.txt": [ - "bea9670b84dfc2282da00a60ad29bf2835700e34", + "b9a34fdf818c6c0fcf06b2a91357fa1963b70066", "support" ], "fullscreen/interfaces.html": [ @@ -222915,7 +223592,7 @@ "manual" ], "html-media-capture/idlharness-expected.txt": [ - "03ed7481bfae8eec07f40a6a76a48e0f5f1e13f1", + "a1fd1490201959a01f00647584a0dd47465d68f7", "support" ], "html-media-capture/idlharness.html": [ @@ -232066,6 +232743,14 @@ "699050ab3bcc8fc11d51c2ae4b9b10aee46876a5", "reftest" ], + "html/rendering/non-replaced-elements/tables/table-direction-ref.html": [ + "97b303c46c7afcc29e0c56856028409c34682baa", + "support" + ], + "html/rendering/non-replaced-elements/tables/table-direction.html": [ + "4c890c9b43bfec7a82a6abeee94d558db2b8f83e", + "reftest" + ], "html/rendering/non-replaced-elements/tables/table-layout-notref.html": [ "a05fad3c06f94c3a617f2efdc589bbb3f5525983", "support" @@ -232078,6 +232763,22 @@ "ec05c435cfd09291184360db7e8b0c5af9c7ba31", "reftest" ], + "html/rendering/non-replaced-elements/tables/table-row-direction-ref.html": [ + "5cf01204381d870738a7454080ea40904b2d0f0c", + "support" + ], + "html/rendering/non-replaced-elements/tables/table-row-direction.html": [ + "433565959474b716d385c2d98d0976ae2121d6d5", + "reftest" + ], + "html/rendering/non-replaced-elements/tables/table-row-group-direction-ref.html": [ + "23616d2840feaafbc6d06b1a1db18dd75d221a23", + "support" + ], + "html/rendering/non-replaced-elements/tables/table-row-group-direction.html": [ + "d4b5cf18545eb48780d9a9a9bfa62ded7dc076bc", + "reftest" + ], "html/rendering/non-replaced-elements/tables/table-vspace-hspace-s.html": [ "a93cbe26a0c5b9a7aeda1faf9db618f79aae8715", "testharness" @@ -233643,7 +234344,7 @@ "support" ], "html/semantics/embedded-content/the-img-element/img.complete-expected.txt": [ - "79ae0928208c2aa00afe5480d349847ca132446e", + "738a438e68e442de5acc3e8e9dc03464b47152ef", "support" ], "html/semantics/embedded-content/the-img-element/img.complete.html": [ @@ -235274,6 +235975,18 @@ "4014bf8d2c024f3c9bc8d90595fa9af7786fed3e", "support" ], + "html/semantics/scripting-1/the-script-element/module/charset-01.html": [ + "212b17deecd882699ef7f26ffa397f4cd2a705c4", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/charset-02.html": [ + "84794e90fb4dbd4e11fbee3e4b390b8b3f01d54e", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/charset-03.html": [ + "364c6d3b48ef8143d62d6f6bb02aa5554b0bd367", + "testharness" + ], "html/semantics/scripting-1/the-script-element/module/compilation-error-1.html": [ "e36eda2e9941e0cfefbfd867d36da6de4dfe7b2e", "testharness" @@ -235570,6 +236283,22 @@ "f09db3d2acdf3aba3fc8c67b2f089a0ba506c799", "support" ], + "html/semantics/scripting-1/the-script-element/module/resources/import-non-utf8-with-charset-header.js": [ + "5ff227dc83335d8a3e8da0161993c1de239ee7f8", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/resources/import-non-utf8.js": [ + "263589f24f862c862ac8f47ba2de71b77bd9e5bd", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/resources/import-utf8-with-charset-header.js": [ + "23ca0a693a1d6ee4eca34bf27c55764e769437c6", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/resources/import-utf8.js": [ + "c88ce333101627fd7674c1b4ede04fd1d0cf5bae", + "support" + ], "html/semantics/scripting-1/the-script-element/module/script-for-event.html": [ "c225684e0c7d09f9628aab589c8673b140994243", "testharness" @@ -235650,6 +236379,18 @@ "4ce8a4cf095d43c542aa8cbcdfd57c5cf381a97b", "testharness" ], + "html/semantics/scripting-1/the-script-element/resources/bom-utf-16be.js": [ + "c5524f60baeb48504b1a62e12611c34fcb60370f", + "support" + ], + "html/semantics/scripting-1/the-script-element/resources/bom-utf-16le.js": [ + "fe79fc884260e9be74c098719136f0eb1f2dac8a", + "support" + ], + "html/semantics/scripting-1/the-script-element/resources/bom-utf-8.js": [ + "5ebf2ec79435c375eeca84b12167801f0b6c576a", + "support" + ], "html/semantics/scripting-1/the-script-element/resources/cocoa-module.js": [ "43291b3e6eff8267c88100990aae5d4b2a09f3bd", "support" @@ -238542,6 +239283,10 @@ "bb17bbe93776dbeb33f061a7a90889e922e3138e", "support" ], + "interfaces/dedicated-workers.idl": [ + "16b2bc5c05aab5838458dfee6203b83d36b13dfd", + "support" + ], "interfaces/dom.idl": [ "86f2e15d4b32af7b5127283eb3cfab5a78b46c0a", "support" @@ -238578,8 +239323,12 @@ "2e9e783362e8ea80cbad3c9c688d63b9c8256163", "support" ], + "interfaces/webusb.idl": [ + "7b5749e1fece69552e0a8bfac7af401fac15394d", + "support" + ], "keyboard-lock/idlharness.https-expected.txt": [ - "0c68884ea12132394c772cf6f47836fd6b17e2f1", + "c78b5d669f56d9f602ca93c9e7492a7fee9839b1", "support" ], "keyboard-lock/idlharness.https.html": [ @@ -238687,7 +239436,7 @@ "testharness" ], "media-capabilities/idlharness-expected.txt": [ - "af14f23f4acbb383cded87cd505c385c6e2b7567", + "63d4a0979b459e2d469d38042908a553016f446d", "support" ], "media-capabilities/idlharness.html": [ @@ -238747,7 +239496,7 @@ "support" ], "media-source/interfaces-expected.txt": [ - "ac79301cacf8b85a6aef29794f72b591fe42d8dd", + "41a616b5f8c34187c445a473990bfadaecbda8e0", "support" ], "media-source/interfaces.html": [ @@ -239275,7 +240024,7 @@ "support" ], "mediacapture-fromelement/idlharness-expected.txt": [ - "83a8c21a64c39f0f711431d1ca0374b2c647d678", + "8a4cd1bf27e02170c3dace68de4bd1723a2f25fa", "support" ], "mediacapture-fromelement/idlharness.html": [ @@ -239295,7 +240044,7 @@ "testharness" ], "mediacapture-record/idlharness-expected.txt": [ - "3be36abad0f463a1d7ec5d0cc7ae3c055d8326af", + "15c47d282eedba507c099d404e44848b4e4b6e74", "support" ], "mediacapture-record/idlharness.html": [ @@ -239346,12 +240095,16 @@ "bfd825c8fb46797d043d57d70689a766fa557bd3", "testharness" ], + "mediacapture-streams/MediaDevices-IDL-all-expected.txt": [ + "26a244770dd0578e9f9b8f0194e1c6837d926ad8", + "support" + ], "mediacapture-streams/MediaDevices-IDL-all.html": [ - "f1927866a05c7700dc2218e3a45eae1532a4171c", + "2d9b604f3039fd5bebbe0491f0bb31d5b0b47722", "testharness" ], "mediacapture-streams/MediaDevices-IDL-enumerateDevices-expected.txt": [ - "4fcd65f6b323caa19064d921f352d56fddf30cf3", + "0f2cdc842faac1e6425df74e8029cdea893e15c1", "support" ], "mediacapture-streams/MediaDevices-IDL-enumerateDevices.html": [ @@ -239439,7 +240192,7 @@ "testharness" ], "mediacapture-streams/MediaStreamTrack-init.https-expected.txt": [ - "cc9a4ecff855ec2cffcd830bd3418b32d07004c8", + "36aea560450ddb3cbeea30e6b8d3d34a55081699", "support" ], "mediacapture-streams/MediaStreamTrack-init.https.html": [ @@ -239459,7 +240212,7 @@ "support" ], "mediasession/idlharness-expected.txt": [ - "510ce0bc3214192130ef4d8f0cc05906af283482", + "5b32854f7c36eb7dcd421de90382bd664c6ac666", "support" ], "mediasession/idlharness.html": [ @@ -247587,7 +248340,7 @@ "manual" ], "orientation-event/idlharness-expected.txt": [ - "5f7d397f4e607383dc21f67dfe7dda3f36d41e44", + "0ed66e5c56365883369a9dd2f6f9f318d04e511c", "support" ], "orientation-event/idlharness.html": [ @@ -247659,7 +248412,7 @@ "testharness" ], "page-visibility/idlharness-expected.txt": [ - "557dcfc267cb643467559c40acf8614b04c79a89", + "b029990e4d570e3b511c3837007dae7797cc484e", "support" ], "page-visibility/idlharness.html": [ @@ -248247,7 +249000,7 @@ "testharness" ], "pointerlock/idlharness-expected.txt": [ - "985868c8e54bf365dbca5e810714ab30e2779d07", + "2ab8d7035e48deac2307e4fd3ea8846ef4837d8d", "support" ], "pointerlock/idlharness.html": [ @@ -257098,10 +257851,6 @@ "96ffb6f3376a5fa73abd405e123d019d8cac694d", "testharness" ], - "service-workers/service-worker/claim-fetch.https-expected.txt": [ - "3e8688f2e8a82a93770a06f99fcece6d09e4e118", - "support" - ], "service-workers/service-worker/claim-fetch.https.html": [ "adec77bbeec2ec9ea7da3aba94375bc92e1b4f6f", "testharness" @@ -257595,7 +258344,7 @@ "testharness" ], "service-workers/service-worker/opaque-response-preloaded.https.html": [ - "4441c255d614ef6d898873f81aa9e5090fbf2875", + "9b82b28618ed405aa5dddd35341a076aceea91d6", "testharness" ], "service-workers/service-worker/performance-timeline.https-expected.txt": [ @@ -258314,12 +259063,16 @@ "d81c494e7c0aedc7921c6d5a8c7a17b9b1f5a8aa", "support" ], - "service-workers/service-worker/resources/opaque-response-preloaded-iframe.html": [ - "df5f1602891ffd5344dfcdf8d2e406f27b3f54e8", + "service-workers/service-worker/resources/opaque-response-being-preloaded-xhr.html": [ + "d42457f8fdee9f0608f3cccc37872cbed3fe4eb9", "support" ], "service-workers/service-worker/resources/opaque-response-preloaded-worker.js": [ - "84b0397640b74bc2cd5d8cd4fb90eb29dd5e032b", + "132a7dee868b03130d40611eb6b3420dbba35552", + "support" + ], + "service-workers/service-worker/resources/opaque-response-preloaded-xhr.html": [ + "c53a1ee705cbe97b7843705b0834eafc8a890056", "support" ], "service-workers/service-worker/resources/other.html": [ @@ -260323,7 +261076,7 @@ "testharness" ], "svg/interfaces-expected.txt": [ - "6ddeeb371a8c6425aa3a2f1c6ed93f8c202c01fa", + "b7a7340cd44da47b750faf350a0cd7e5c1b99c70", "support" ], "svg/interfaces.html": [ @@ -261387,7 +262140,7 @@ "testharness" ], "web-animations/interfaces/Animation/idlharness-expected.txt": [ - "294230de230b84b8a637039748b726860c0f9700", + "98bfa3e93e802537514d3791809cfec523149b73", "support" ], "web-animations/interfaces/Animation/idlharness.html": [ @@ -261479,7 +262232,7 @@ "testharness" ], "web-animations/interfaces/AnimationTimeline/idlharness.html": [ - "d8c0e90499563d96ac9802632840f5333f61c8ac", + "80984bce09d54d4c57c4cea3a218b01467e43f9c", "testharness" ], "web-animations/interfaces/Document/getAnimations-expected.txt": [ @@ -262442,6 +263195,10 @@ "0f585a89bd8f25aa8f83b6ec39b704cbb8e970b2", "testharness" ], + "webrtc/RTCPeerConnection-connectionState-expected.txt": [ + "6935d8e8c76b13f9953f95873ca127336ce694c0", + "support" + ], "webrtc/RTCPeerConnection-connectionState.html": [ "a733cd1ae59aace10832a7b5f98913967afb87f1", "testharness" @@ -262494,12 +263251,16 @@ "fbfee08e2b8c5f031780b5efd1139cfe310c89fb", "support" ], + "webrtc/RTCPeerConnection-iceConnectionState-expected.txt": [ + "b424c205b6e99dae17e37ea44a1d3b9b9e30e389", + "support" + ], "webrtc/RTCPeerConnection-iceConnectionState.html": [ "dad0787100a817c05dd871bf892a94464916a74a", "testharness" ], "webrtc/RTCPeerConnection-iceGatheringState-expected.txt": [ - "6be33b9fb07075dfc81993ff1753e48a86f295b4", + "2cb68e387063cba06af0326f1e4e591152915c53", "support" ], "webrtc/RTCPeerConnection-iceGatheringState.html": [ @@ -262507,7 +263268,7 @@ "testharness" ], "webrtc/RTCPeerConnection-idl-expected.txt": [ - "8fb7cb01f8e165995be9789dbaed524303adfeee", + "a8578ee98585cababd679ff4569850e81bf439ee", "support" ], "webrtc/RTCPeerConnection-idl.html": [ @@ -262522,6 +263283,10 @@ "e74e16479aca577be6673056eef0fd0212ec7151", "testharness" ], + "webrtc/RTCPeerConnection-removeTrack-expected.txt": [ + "45905a435315ea26c885f4b01e6a3cd3be3b2582", + "support" + ], "webrtc/RTCPeerConnection-removeTrack.html": [ "6e0b10df88f69f33ff9aac63975cfea2561f28a0", "testharness" @@ -262546,6 +263311,10 @@ "f273bd7fdfc883a15e8fb16fef5309061254c6cc", "testharness" ], + "webrtc/RTCRtpSender-replaceTrack-expected.txt": [ + "224592841280eba0b4607273dd5bbf2c9d25f76f", + "support" + ], "webrtc/RTCRtpSender-replaceTrack.html": [ "9e8eca4fa11cc72471bc48d98bec8e5936111334", "testharness" @@ -262567,7 +263336,7 @@ "testharness" ], "webrtc/datachannel-idlharness-expected.txt": [ - "118978e3c74634bd77baed7cfd083cd65bb7aa42", + "de46e2abe3f943b563dad21be3840eff49284d39", "support" ], "webrtc/datachannel-idlharness.html": [ @@ -262583,7 +263352,7 @@ "testharness" ], "webrtc/interfaces-expected.txt": [ - "eb2eeadc0cc455ff97d7950e2179c1b92361ea33", + "9fb4c9aa96921b2099227fe2294c0c7799bb1ebb", "support" ], "webrtc/interfaces.html": [ @@ -263675,7 +264444,7 @@ "support" ], "webstorage/idlharness-expected.txt": [ - "a8bb9fff3f1cc88dba14f43f4f6cd1ae826ee3a5", + "72df62ee24b21ba10b13e605a4374af3c554c59c", "support" ], "webstorage/idlharness.html": [ @@ -263827,13 +264596,25 @@ "testharness" ], "webusb/OWNERS": [ - "8ea92f4cb8f9ba417745337ecb38e4a8615f50d5", + "c32effeee53d5a083e7853711be5b1881e6f9a83", "support" ], "webusb/idlharness.https.html": [ - "e402105766a837cd26f6d020663ec4b50b757f86", + "0da5e66dd0b0e82d25082733465c22c54a96d1de", "testharness" ], + "webusb/resources/fake-devices.js": [ + "2cfce7b35b9441529946c4bcea9427e261808c36", + "support" + ], + "webusb/resources/open-in-iframe.html": [ + "6e6050f742e0da58fc94a5c0a0aa75f16dfcede9", + "support" + ], + "webusb/resources/usb-helpers.js": [ + "41af64a414c353777e67eb9b57d08fd96a6fa88c", + "support" + ], "webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ "fda5a143afa30b86a318b3ab74baed513a5275bb", "testharness" @@ -263862,6 +264643,46 @@ "c8b3c972c90674c75d652a31a8d0b28eec8ca6e7", "support" ], + "webusb/usb-manual.https.html": [ + "2d46e9436d420de71cbd62200a40dd3aaa3a5301", + "manual" + ], + "webusb/usbConnectionEvent.https.html": [ + "b350ec95c8dfc96783b80d4914b932eeecbe00a1", + "testharness" + ], + "webusb/usbDevice-iframe.https.html": [ + "d2c3f13551a4d3b58e155aec01fb19f6fade5073", + "testharness" + ], + "webusb/usbDevice.https.html": [ + "db4de6d427f744294fc24f8a11c0971c2df207b1", + "testharness" + ], + "webusb/usbInTransferResult.https.html": [ + "abfce8f939654027c4f9ef275878016dca126bb6", + "testharness" + ], + "webusb/usbIsochronousInTransferPacket.https.html": [ + "0c13763ed243ed0981f00658d50eace2e49e654b", + "testharness" + ], + "webusb/usbIsochronousInTransferResult.https.html": [ + "bf85d36769b9f52c0d8f69027875199669eb64e0", + "testharness" + ], + "webusb/usbIsochronousOutTransferPacket.https.html": [ + "c8cd321d866b6ff693fe15b02d8808d092929ce1", + "testharness" + ], + "webusb/usbIsochronousOutTransferResult.https.html": [ + "ec9dfc49ebcb419d777c16995940d91678a26954", + "testharness" + ], + "webusb/usbOutTransferResult.https.html": [ + "f08a98a927d57cda8b780a8304a0fa6cf727cc81", + "testharness" + ], "webvr/idlharness-expected.txt": [ "57556d1b78db42d2bfd8582376d4c200b1c9ebe4", "support" @@ -264003,7 +264824,7 @@ "support" ], "webvtt/api/interfaces-expected.txt": [ - "c0816c76cc0834abb4fa9022d9a43324a35ba7df", + "ddc368a5243a892afd8d14fc2cdb2c7f8a7db3c6", "support" ], "webvtt/api/interfaces.html": [ @@ -267158,12 +267979,8 @@ "50abaf936cfb58ba14e6870c9b7f239f5d54f59c", "testharness" ], - "workers/interfaces.idl": [ - "d8961ea6af91a92a064bcf0e0da5b56781f6bc6b", - "support" - ], "workers/interfaces.worker.js": [ - "e35e0f6de69052f24340bd887da469b85833953b", + "bab03d904dde60b7456d3cd60284c1ecc84a7649", "testharness" ], "workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.js": [ @@ -267403,7 +268220,7 @@ "support" ], "workers/name-property.html": [ - "762b7b4b65503e599560829675a1df07a61dd566", + "1c53fc1fdc2d6c8ed5592d832a18bdbd3bca541b", "testharness" ], "workers/nested_worker.worker.js": [ @@ -267762,8 +268579,12 @@ "b0e679dd7720701364abeaca6870d94db5d7ee74", "support" ], + "workers/support/name-as-accidental-global.js": [ + "530670268fae610b60066773ee475743b8498b53", + "support" + ], "workers/support/name.js": [ - "af3a704319d8ee15cf7df2638e4c2c5e59af2403", + "27fa41f445888125f84dab8a57ca62b41c09e506", "support" ], "workers/support/nosiniff-error-worker.py": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/.travis.yml b/third_party/WebKit/LayoutTests/external/wpt/.travis.yml index 05c97d9..f7985af 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/.travis.yml +++ b/third_party/WebKit/LayoutTests/external/wpt/.travis.yml
@@ -72,7 +72,7 @@ env: TOXENV=py35 HYPOTHESIS_PROFILE=ci SCRIPT=ci_unittest.sh - python: 3.6 env: TOXENV=py36 HYPOTHESIS_PROFILE=ci SCRIPT=ci_unittest.sh - - python: pypy + - python: pypy-5.4 env: TOXENV=pypy HYPOTHESIS_PROFILE=ci SCRIPT=ci_unittest.sh exclude: - env: # exclude empty env from the top-level above
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/auto-margins-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/auto-margins-001-ref.html deleted file mode 100644 index 04f32f5d..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/auto-margins-001-ref.html +++ /dev/null
@@ -1,38 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<style> - -#circles, #circles div { - border: 1em solid blue; - border-radius:50%; - margin: auto; -} - -#circles { width:9em; height:9em; } - -</style> -</head> -<body> -<p>These tests are from the spec: <a href="http://dev.w3.org/csswg/css3-flexbox/#auto-margins">http://dev.w3.org/csswg/css3-flexbox/#auto-margins</a>.</p> - -<p>The word OK should be centered vertically and horizontally.</p> -<div style="width: 4em; height: 4em; background: silver"> - <table style="width: 100%; height: 100%;"><tr><td style="text-align: center">OK</td></tr></table> -</div> - -<div style="width: 4em; height: 4em; margin-top: 10px; background: silver; writing-mode: vertical-rl"> - <table style="width: 100%; height: 100%;"><tr><td style="text-align: center">OK</td></tr></table> -</div> - -<p>You should see 3 blue concentric circles.</p> -<div id="circles"> - <div style="width: 5em; height: 5em; margin-top: 1em;"> - <div style="width: 1em; height: 1em; margin-top: 1em;"></div> - </div> -</div> - -<p>The computed style of each margin should not be 0.<br>OK: PASS<br>Vertical OK: PASS</p> -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/auto-margins-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/auto-margins-001.html deleted file mode 100644 index 3a90ef2..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/auto-margins-001.html +++ /dev/null
@@ -1,53 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<title>CSS Test: Aligning with auto margins</title> -<link href="support/flexbox.css" rel="stylesheet"> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#auto-margins"> -<link rel="match" href="auto-margins-001-ref.html"> -<meta name="flags" content=""> -<style> - -#circles, #circles div { - display: flex; - width: -webkit-calc(100% - 4em); - width: calc(100% - 4em); - height: -webkit-calc(100% - 4em); - height: calc(100% - 4em); - border: 1em solid blue; - border-radius:50%; - margin: auto; -} - -#circles { width:9em; height:9em; } - -</style> -</head> -<body> -<p>These tests are from the spec: <a href="http://dev.w3.org/csswg/css3-flexbox/#auto-margins">http://dev.w3.org/csswg/css3-flexbox/#auto-margins</a>.</p> - -<p>The word OK should be centered vertically and horizontally.</p> -<div class="flexbox" style="width: 4em; height: 4em; background: silver"> - <p id="ok" style="margin: auto;">OK</p> -</div> - -<div class="flexbox" style="width: 4em; height: 4em; margin-top: 10px; background: silver; writing-mode: vertical-rl"> - <p id="okVertical" style="margin: auto;">OK</p> -</div> - -<p>You should see 3 blue concentric circles.</p> -<div id="circles"><div><div></div></div></div> - -<p id="log">The computed style of each margin should not be 0.</p> -<script> -var okStyle = getComputedStyle(document.getElementById('ok')); -document.getElementById("log").innerHTML += "<br>OK: " + - ((parseInt(okStyle.marginTop) && parseInt(okStyle.marginRight) && parseInt(okStyle.marginBottom) && parseInt(okStyle.marginLeft)) ? "PASS" : "FAIL"); - -var okVerticalStyle = getComputedStyle(document.getElementById('okVertical')); -document.getElementById("log").innerHTML += "<br>Vertical OK: " + - ((parseInt(okVerticalStyle.marginTop) && parseInt(okVerticalStyle.marginRight) && parseInt(okVerticalStyle.marginBottom) && parseInt(okVerticalStyle.marginLeft)) ? "PASS" : "FAIL"); -</script> -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001-ref.html deleted file mode 100644 index 55ec381d2..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!DOCTYPE html> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<style> -body { - position: relative; - width: 800px; - height: 600px; -} - -#container { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -#top-bar { - background-color: green; - height: 100px; -} - -#content { - background-color: blue; - height: 500px; -} -</style> - - -<div id="container"> - <div id="top-bar"> - Tests that percentage heights get resolved correctly when the flexbox is - </div> - <div id="content"> - absolutely positioned without an explicit height. You should see no red. - </div> -</div> - -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001.html index 043171d..f24eee9 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001.html +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-heights-001.html
@@ -1,47 +1,151 @@ <!DOCTYPE html> -<title>CSS Test: Percentage sizing in flexboxes</title> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes"> -<link rel="match" href="percentage-heights-001-ref.html"> -<meta name="assert" content="Checks that we correctly size percentage-sized -children of absolute-positioned flex boxes"> + +<title>CSS Flexbox: Definite cross sizes</title> + +<link rel="stylesheet" href="support/flexbox.css"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#definite-sizes"> +<link rel="author" title="Google Inc." href="https://www.google.com/"> +<meta name="flags" content="dom" /> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/check-layout-th.js"></script> + <style> -body { - position: relative; - width: 800px; - height: 600px; -} - -#container { - background-color: red; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - display: flex; - flex-direction: column; -} - -#top-bar { - background-color: green; - height: 20%; -} - -#content { +.rect { + width: 50px; + height: 50px; background-color: blue; - flex-basis: 100%; +} + +.flexbox { + width: 50px; + outline: 3px solid black; +} + + +.flexbox > * { + min-height: 0; + min-width: 0; +} + +.flexbox > div > div { + overflow: hidden; } </style> +<body onload="checkLayout('.flexbox')" style="height: 800px;"> +<div id=log></div> -<div id="container"> - <div id="top-bar"> - Tests that percentage heights get resolved correctly when the flexbox is - </div> - <div id="content"> - absolutely positioned without an explicit height. You should see no red. + +<p>This test verifies that we consider flex items' cross sizes to be definite +if the align value is stretch (the default)</p> + +<p>Tests that we get a definite size in the simple case:</p> +<div class="flexbox" data-expected-height="50"> + <div data-expected-height="50"> + <div style="height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> </div> </div> +<p>Tests that we get a definite size in a wrapping flexbox:</p> +<div class="flexbox wrap" data-expected-height="50"> + <div data-expected-height="50"> + <div style="height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> +</div> +<p>Tests that we get an indefinite size when not stretch-aligning, despite +definite size on container:</p> +<div class="flexbox wrap" style="height: 50px;" data-expected-height="50"> + <div class="align-self-flex-start" data-expected-height="50"> + <div style="height: 50%" data-expected-height="50"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> +</div> + +<p>Tests that we get a definite size in a definite-height flexbox:</p> +<div class="flexbox" style="height: 50px;" data-expected-height="50"> + <div data-expected-height="50"> + <div style="height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> +</div> + +<p>Tests that we get a definite size in a nested flexbox where only the outer +one has an explicit height:</p> +<div class="flexbox" style="height: 50px;" data-expected-height="50"> + <div class="flexbox" data-expected-height="50"> + <div data-expected-height="50"> + <div style="height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> + </div> +</div> + +<p>Tests that we get a definite size in a nested flexbox where only the outer +one has an explicit height and has an opposite direction:</p> +<div class="flexbox" style="height: 50px;" data-expected-height="50"> + <div class="flexbox column" data-expected-height="50"> + <div class="flex-one" data-expected-height="50"> + <div style="height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> + </div> +</div> + +<p>Tests that we respect min-height, on child of a flex item with percent +height that's treated as definite:</p> +<div class="flexbox" style="height: 50px;" data-expected-height="50"> + <div data-expected-height="50"> + <div style="height: 50%; min-height: 30px;" data-expected-height="30"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> +</div> + +<p>Tests that max-height also supports percentages:</p> +<div class="flexbox" data-expected-height="50"> + <div data-expected-height="50"> + <div style="max-height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> +</div> + +<p>Tests that percentage sizes can also be definite:</p> +<div class="flexbox" style="height: 10%;" data-expected-height="80"> + <div data-expected-height="80"> + <div style="height: 50%" data-expected-height="40"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> +</div> + +<p>Tests that we use a definite size even when a percentage size is not definite</p> +<div> + <div class="flexbox" style="height: 10%;" data-expected-height="50"> + <div data-expected-height="50"> + <div style="height: 50%" data-expected-height="25"> + <div class="rect" data-expected-height="50"></div> + </div> + </div> + </div> +</div> + +<p>Tests that we don't mix up widths and heights</p> +<div class="flexbox" style="height: 50px; width: 100px;" data-expected-height="50"> + <div style="width: 100px;" data-expected-height="50" data-expected-width="100"> + <div style="width: 50%" data-expected-width="50"> + <div class="rect" data-expected-height="50" data-expected-width="50"></div> + </div> + </div> +</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-widths-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-widths-001-ref.html deleted file mode 100644 index ca0c4d9..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-widths-001-ref.html +++ /dev/null
@@ -1,40 +0,0 @@ -<!DOCTYPE html> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<style> -body { - position: relative; - width: 600px; - height: 800px; -} - -#container { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - display: flex; -} - -#top-bar { - background-color: green; - width: 100px; -} - -#content { - background-color: blue; - width: 500px; -} -</style> - - -<div id="container"> - <div id="top-bar"> - Tests that percentage widths get resolved correctly when the flexbox is - </div> - <div id="content"> - absolutely positioned without an explicit width. You should see no red. - </div> -</div> - -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-widths-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-widths-001.html deleted file mode 100644 index b1b5acff..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/percentage-widths-001.html +++ /dev/null
@@ -1,47 +0,0 @@ -<!DOCTYPE html> -<title>CSS Test: Absolutely positioned children of flexboxes</title> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes"> -<link rel="match" href="percentage-widths-001-ref.html"> -<meta name="assert" content="Checks that we correctly size percentage-sized -children of absolute-positioned flex boxes"> -<style> -body { - position: relative; - width: 600px; - height: 800px; -} - -#container { - background-color: red; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - display: flex; - flex-direction: row; -} - -#top-bar { - background-color: green; - width: 20%; -} - -#content { - background-color: blue; - flex-basis: 100%; -} -</style> - - -<div id="container"> - <div id="top-bar"> - Tests that percentage widths get resolved correctly when the flexbox is - </div> - <div id="content"> - absolutely positioned without an explicit width. You should see no red. - </div> -</div> - -
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-001.html deleted file mode 100644 index d3d8089..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-001.html +++ /dev/null
@@ -1,709 +0,0 @@ -<!DOCTYPE html> -<html> -<title>CSS Test: Absolutely positioned children of flexboxes</title> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> -<meta name="flags" content="dom"> -<meta name="assert" content="Checks that we correctly position abspos children -in a number of writing modes and alignments"> -<style> -body { - margin: 0; -} - -.title { - margin-top: 1em; -} - -.flexbox { - display: flex; - background-color: #aaa; - position: relative; -} -.flexbox div { - border: 0; - flex: none; -} - -.horizontal-tb { - writing-mode: horizontal-tb; -} -.vertical-rl { - writing-mode: vertical-rl; -} -.vertical-lr { - writing-mode: vertical-lr; -} - -.row { - flex-flow: row; -} -.row-reverse { - flex-flow: row-reverse; -} -.column { - flex-flow: column; -} -.column-reverse { - flex-flow: column-reverse; -} - -.flexbox :nth-child(1) { - background-color: blue; -} -.flexbox :nth-child(2) { - background-color: green; -} - -.rtl { - direction: rtl; -} -.ltr { - direction: ltr; -} - -.justify-content-flex-start { - justify-content: flex-start; -} -.justify-content-flex-end { - justify-content: flex-end; -} -.justify-content-center { - justify-content: center; -} -.justify-content-space-between { - justify-content: space-between; -} -.justify-content-space-around { - justify-content: space-around; -} -</style> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> -<body onload="checkLayout('.flexbox')"> -<div id=log></div> -<script> -// Each flexbox has two abspos children - one is 40x10, the other 10x20. -// The flexbox itself is 80x20. -// All that is flipped for vertical flows. -var expectations = { - 'horizontal-tb': { - 'row': { - 'ltr': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - }, - 'column': { - 'ltr': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'center': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'center': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - }, - }, - 'row-reverse': { - 'ltr': { - 'flex-start': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - }, - 'column-reverse': { - 'ltr': { - 'flex-start': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'space-around': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'flex-end': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'space-around': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - }, - }, - }, - 'vertical-rl': { - 'row': { - 'ltr': { - 'flex-start': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'center': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'flex-end': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'space-around': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - }, - }, - 'column': { - 'ltr': { - 'flex-start': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [40, 10], - 'child2': [70, 0], - }, - 'flex-end': { - 'child1': [0, 10], - 'child2': [0, 0], - }, - 'center': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [40, 10], - 'child2': [70, 0], - }, - 'space-around': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - }, - }, - 'row-reverse': { - 'ltr': { - 'flex-start': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'flex-end': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'space-around': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [10, 40], - 'child2': [0, 70], - }, - 'center': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [10, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [10, 20], - 'child2': [0, 35], - }, - }, - }, - 'column-reverse': { - 'ltr': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [0, 10], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [40, 10], - 'child2': [70, 0], - }, - 'center': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [0, 10], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - }, - }, - }, - 'vertical-lr': { - 'row': { - 'ltr': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'center': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'space-around': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - }, - }, - 'column': { - 'ltr': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [0, 10], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [40, 10], - 'child2': [70, 0], - }, - 'center': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [0, 10], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - }, - }, - 'row-reverse': { - 'ltr': { - 'flex-start': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'space-around': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'flex-end': { - 'child1': [0, 40], - 'child2': [0, 70], - }, - 'center': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - 'space-between': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'space-around': { - 'child1': [0, 20], - 'child2': [0, 35], - }, - }, - }, - 'column-reverse': { - 'ltr': { - 'flex-start': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'flex-end': { - 'child1': [0, 0], - 'child2': [0, 0], - }, - 'center': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [40, 0], - 'child2': [70, 0], - }, - 'space-around': { - 'child1': [20, 0], - 'child2': [35, 0], - }, - }, - 'rtl': { - 'flex-start': { - 'child1': [40, 10], - 'child2': [70, 0], - }, - 'flex-end': { - 'child1': [0, 10], - 'child2': [0, 0], - }, - 'center': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - 'space-between': { - 'child1': [40, 10], - 'child2': [70, 0], - }, - 'space-around': { - 'child1': [20, 10], - 'child2': [35, 0], - }, - }, - }, - }, -}; - -var writingModes = ['horizontal-tb', 'vertical-rl', 'vertical-lr']; -var flexDirections = ['row', 'column', 'row-reverse', 'column-reverse']; -var directions = ['ltr', 'rtl']; -var justifyContents = ['flex-start', 'flex-end', 'center', 'space-between', 'space-around']; - -function mainAxisDirection(writingMode, flexDirection) -{ - if ((writingMode.indexOf('horizontal') != -1 && flexDirection.indexOf('row') != -1) - || (writingMode.indexOf('vertical') != -1 && flexDirection.indexOf('column') != -1)) - return 'width'; - return 'height'; -} - -function addChild(flexbox, mainAxis, crossAxis, mainAxisLength, crossAxisLength, expectations) -{ - var child = document.createElement('div'); - child.setAttribute('style', mainAxis + ': ' + mainAxisLength + 'px;' - + crossAxis + ': ' + crossAxisLength + 'px; position: absolute;'); - - child.setAttribute("data-expected-" + mainAxis, mainAxisLength); - child.setAttribute("data-expected-" + crossAxis, crossAxisLength); - child.setAttribute("data-offset-x", expectations[0]); - child.setAttribute("data-offset-y", expectations[1]); - - flexbox.appendChild(child); -} - -writingModes.forEach(function(writingMode) { - flexDirections.forEach(function(flexDirection) { - directions.forEach(function(direction) { - justifyContents.forEach(function(justifyContent) { - var flexboxClassName = writingMode + ' ' + direction + ' ' + flexDirection + ' justify-content-' + justifyContent; - var title = document.createElement('div'); - title.className = 'title'; - title.innerHTML = flexboxClassName; - document.body.appendChild(title); - - var mainAxis = mainAxisDirection(writingMode, flexDirection); - var crossAxis = (mainAxis == 'width') ? 'height' : 'width'; - - var flexbox = document.createElement('div'); - flexbox.className = 'flexbox ' + flexboxClassName; - flexbox.setAttribute('style', mainAxis + ': 80px;' + crossAxis + ': 20px'); - - var baselineMargin = (flexDirection.indexOf('row') != -1) ? '-webkit-margin-before: 5px' : '-webkit-margin-start: 5px'; - - var testExpectations = expectations[writingMode][flexDirection][direction][justifyContent]; - addChild(flexbox, mainAxis, crossAxis, 40, 10, testExpectations['child1']); - addChild(flexbox, mainAxis, crossAxis, 10, 20, testExpectations['child2']); - - document.body.appendChild(flexbox); - }) - }) - }) -}) - -</script> - -</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-002.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-002.html deleted file mode 100644 index bf69765..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-002.html +++ /dev/null
@@ -1,160 +0,0 @@ -<!DOCTYPE html> -<html> -<title>CSS Test: Absolutely positioned children of flexboxes</title> -<link href="support/flexbox.css" rel="stylesheet"> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> -<meta name="flags" content="dom"> -<meta name="assert" content="Checks that we correctly position abspos children -with different alignments and dynamic changes"> -<style> -body { - margin: 0; -} -.flexbox { - background-color: green; - height: 100px; - width: 100px; - margin: 10px; -} -.flexbox > * { - flex: none; -} -.relative { - position: relative; -} -.flexbox > div { - width: 20px; - height: 20px; -} -.absolute { - position: absolute; -} -#placed-absolute { - top: 20px; - left: 20px; -} - -.rtl { - direction: rtl; -} -.ltr { - direction: ltr; -} - -.flexbox :nth-child(1) { - background-color: blue; -} -.flexbox :nth-child(2) { - background-color: yellow; -} -.flexbox :nth-child(3) { - background-color: salmon; -} -.flexbox :nth-child(4) { - background-color: grey; -} -.flexbox :nth-child(5) { - background-color: red; -} -.flexbox :nth-child(6) { - background-color: orange; -} -.flexbox :nth-child(7) { - background-color: purple; -} -</style> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> - -<body onload="checkLayout('.flexbox')"> -<div id=log></div> - -<div class='flexbox relative align-items-center'> - <div id='placed-absolute' class='absolute' data-offset-x=20 data-offset-y=20></div> -</div> - -<div class='flexbox relative align-items-center'> - <div data-offset-x=0 data-offset-y=40></div> - <div class='absolute' data-offset-x=0 data-offset-y=40></div> - <div data-offset-x=20 data-offset-y=40></div> - <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> -</div> - -<div class="relative"> -<div class='flexbox align-items-center'> - <div data-offset-x=10 data-offset-y=40></div> - <div class='absolute' data-offset-x=10 data-offset-y=40></div> - <div data-offset-x=30 data-offset-y=40></div> - <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> -</div> -</div> - -<div class='flexbox relative column rtl'> - <div data-offset-x=80 data-offset-y=0></div> - <div class='absolute' data-offset-x=80 data-offset-y=0></div> - <div data-offset-x=80 data-offset-y=20></div> - <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> -</div> - -<div class="relative"> -<div class='flexbox wrap-reverse'> - <div style="width:90px" data-offset-x=10 data-offset-y=80></div> - <div class="absolute" data-offset-x=10 data-offset-y=80></div> - <div data-offset-x=10 data-offset-y=30></div> - <div class="absolute" data-offset-x=10 data-offset-y=80></div> - <div data-offset-x=30 data-offset-y=30></div> - <div class="absolute" data-offset-x=10 data-offset-y=80></div> - <div class="absolute" style="top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> -</div> -</div> - -<div class='flexbox relative'> - <div style="margin: auto;" data-offset-x=40 data-offset-y=40></div> - <div class="absolute" style="margin: auto;" data-offset-x=0 data-offset-y=0></div> - <div class="absolute" style="margin: auto;" data-offset-x=0 data-offset-y=0></div> - <div class="absolute" style="margin: auto; top: 5px; left: 5px" data-offset-x=5 data-offset-y=5></div> -</div> - -<div class='flexbox align-items-stretch relative'> - <div style="height: auto" data-offset-x=0 data-offset-y=0 data-expected-height=100></div> - <div class="absolute" style="height: auto" data-offset-x=0 data-offset-y=0 data-expected-height=0></div> - <div class="absolute" style="height: auto; top: 5px; left: 5px" data-offset-x=5 data-offset-y=5 data-expected-height=0></div> -</div> - -<div class="flexbox wrap relative"> - <div style="width: 100px;" data-offset-x=0 data-offset-y=0></div> - <div class="absolute" data-offset-x=0 data-offset-y=0></div> - <div style="width: 50px;" data-offset-x=0 data-offset-y=50></div> - <div class="absolute" data-offset-x=0 data-offset-y=0></div> - <div style="width: 50px;" data-offset-x=50 data-offset-y=50></div> - <div class="absolute" data-offset-x=0 data-offset-y=0></div> -</div> - -<div class="flexbox wrap relative align-items-flex-end"> - <div style="width: 100px;" data-offset-x=0 data-offset-y=30></div> - <div class="absolute" data-offset-x=0 data-offset-y=80></div> - <div style="width: 50px;" data-offset-x=0 data-offset-y=80></div> - <div class="absolute" data-offset-x=0 data-offset-y=80></div> - <div style="width: 50px;" data-offset-x=50 data-offset-y=80></div> - <div class="absolute" data-offset-x=0 data-offset-y=80></div> -</div> - - -<script> -var absolute = document.getElementById('placed-absolute'); -var beforePosition = absolute.getBoundingClientRect(); -document.querySelector('.flexbox').style.height = '101px'; -var afterPosition = absolute.getBoundingClientRect(); - -// Positioned element should not change position when the height of it's parent flexbox is changed. -for (key in beforePosition) { - test(function() { - assert_equals(beforePosition[key], afterPosition[key]); - }, 'position of ' + key); -} -</script> -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-003.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-003.html deleted file mode 100644 index 025aef6f..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-003.html +++ /dev/null
@@ -1,96 +0,0 @@ -<!DOCTYPE html> -<title>CSS Test: Absolutely positioned children of flexboxes</title> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> -<meta name="flags" content="dom"> -<meta name="assert" content="Checks that we correctly handle border and -padding in combination with abspos items"> -<style> -.rect { - position: absolute; - width: 50px; - height: 50px; - background-color: green; -} - -.flexbox { - position: relative; - width: 100px; - height: 100px; - outline: 3px solid black; -} -</style> - -<link rel="stylesheet" href="support/flexbox.css"> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> - -<body onload="checkLayout('.rect')"> -<div id=log></div> - -<div class="flexbox" style="padding-top: 10px; padding-left: 20px;"> - <div class="rect" data-offset-x="20" data-offset-y="10"></div> -</div> - -<div class="flexbox column" style="padding-top: 10px; padding-left: 20px;"> - <div class="rect" data-offset-x="20" data-offset-y="10"></div> -</div> - -<div class="flexbox" style="writing-mode: vertical-lr; padding-top: 10px; padding-left: 20px;"> - <div class="rect" data-offset-x="20" data-offset-y="10"></div> -</div> - -<div class="flexbox column" style="writing-mode: vertical-lr; padding-top: 10px; padding-left: 20px;"> - <div class="rect" data-offset-x="20" data-offset-y="10"></div> -</div> - -<div class="flexbox" style="direction: rtl; padding-top: 10px; padding-right: 20px;"> - <div class="rect" data-offset-x="50" data-offset-y="10"></div> -</div> - -<div class="flexbox column" style="direction: rtl; padding-top: 10px; padding-right: 20px;"> - <div class="rect" data-offset-x="50" data-offset-y="10"></div> -</div> - -<div class="flexbox" style="direction: rtl; writing-mode: vertical-lr; padding-bottom: 10px; padding-left: 20px;"> - <div class="rect" data-offset-x="20" data-offset-y="50"></div> -</div> - -<div class="flexbox column" style="direction: rtl; writing-mode: vertical-lr; padding-bottom: 10px; padding-left: 20px;"> - <div class="rect" data-offset-x="20" data-offset-y="50"></div> -</div> - -<hr> -<div class="flexbox" style="border-top: 10px solid; border-left: 20px solid;"> - <div class="rect" data-offset-x="0" data-offset-y="0"></div> -</div> - -<div class="flexbox column" style="border-top: 10px solid; border-left: 20px solid;"> - <div class="rect" data-offset-x="0" data-offset-y="0"></div> -</div> - -<div class="flexbox" style="writing-mode: vertical-lr; border-top: 10px solid; border-left: 20px solid;"> - <div class="rect" data-offset-x="0" data-offset-y="0"></div> -</div> - -<div class="flexbox column" style="writing-mode: vertical-lr; border-top: 10px solid; border-left: 20px solid;"> - <div class="rect" data-offset-x="0" data-offset-y="0"></div> -</div> - -<div class="flexbox" style="direction: rtl; border-top: 10px solid; border-right: 20px solid;"> - <div class="rect" data-offset-x="50" data-offset-y="0"></div> -</div> - -<div class="flexbox column" style="direction: rtl; border-top: 10px solid; border-right: 20px solid;"> - <div class="rect" data-offset-x="50" data-offset-y="0"></div> -</div> - -<div class="flexbox" style="direction: rtl; writing-mode: vertical-lr; border-bottom: 10px solid; border-left: 20px solid;"> - <div class="rect" data-offset-x="0" data-offset-y="50"></div> -</div> - -<div class="flexbox column" style="direction: rtl; writing-mode: vertical-lr; border-bottom: 10px solid; border-left: 20px solid;"> - <div class="rect" data-offset-x="0" data-offset-y="50"></div> -</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-004.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-004.html deleted file mode 100644 index ff14f35b..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-004.html +++ /dev/null
@@ -1,44 +0,0 @@ -<!DOCTYPE html> -<title>CSS Test: Absolutely positioned children of flexboxes</title> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> -<meta name="flags" content="dom"> -<meta name="assert" content="Checks that we correctly handle when a flex item -becomes absolutely positioned"> -<style> -#flex { - display: flex; - position: relative; - background: red; - width: 500px; - height: 200px; -} - -#item { - background: green; - left: 0; - right: 0; - top: 0; - bottom: 0; -} -</style> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> - -<script> -function update() { - var item = document.getElementById("item"); - item.offsetHeight; - item.style.position = "absolute"; - item.offsetHeight; - checkLayout("#flex"); -} -</script> - -<body onload="update();"> - -<div id="flex"> - <div id="item" data-expected-width="500"></div> -</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-005-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-005-ref.html deleted file mode 100644 index 2f7e669..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-005-ref.html +++ /dev/null
@@ -1,14 +0,0 @@ -<!DOCTYPE html> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<p>This test should not have a horizontal scrollbar</p> - -<div style="width: 400px; height: 100px; overflow-x: hidden; overflow-y: scroll;"> -<br> -<br> -<br> -<br> -<br> -<br> -<br> -<br> -</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-005.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-005.html deleted file mode 100644 index 3199dfb..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/position-absolute-005.html +++ /dev/null
@@ -1,66 +0,0 @@ -<!DOCTYPE html> -<title>CSS Test: Absolutely positioned children of flexboxes</title> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> -<link rel="match" href="position-absolute-005-ref.html"> -<meta name="assert" content="Checks that we correctly handle overflow: auto in -abspos nodes in flexbox"> - -<style> - body { - width: 400px; - height: 300px; - } - - .flexbox { - display: flex; - } - - .column { - flex-direction: column; - } - - .flex11a { - flex: 1 1 auto; - } - - .root { - height: 100px; - overflow-y: auto; - position: relative; - } - - #abspos { - position: absolute; - left: 0; - right: 0; - top: 0; - height: 10px; - } -</style> - - -<p>This test should not have a horizontal scrollbar</p> - -<div class="flexbox column"> - <div class="flexbox"> - <div class="flex11a"> - <div class="root"> - <div> - <div> - <div id="history"></div> - <div id="abspos"></div> - </div> - </div> - </div> - </div> - </div> -</div> - -<script> -onload = function() { - var historyEl = document.getElementById('history'); - historyEl.offsetWidth; - historyEl.innerText = '\n\n\n\n\n\n\n\n'; -}; -</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/whitespace-in-flexitem-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/whitespace-in-flexitem-001-ref.html deleted file mode 100644 index f7ab7ba..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/whitespace-in-flexitem-001-ref.html +++ /dev/null
@@ -1,19 +0,0 @@ -<!DOCTYPE html> -<html> -<link href="support/flexbox.css" rel="stylesheet"> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<style> - .a { - flex: none; - width: 30px; - background: salmon; - } -</style> -<body> - <div class="flexbox justify-content-space-around"> - <div class="a"></div> - </div> - - <div class="flexbox"> - <b>foo</b><b>bar</b> - </div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/whitespace-in-flexitem-001.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/whitespace-in-flexitem-001.html deleted file mode 100644 index bec931a4..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/css/css-flexbox-1/whitespace-in-flexitem-001.html +++ /dev/null
@@ -1,27 +0,0 @@ -<!DOCTYPE html> -<html> -<title>CSS Test: Whitespace-only nodes in Flexboxes</title> -<link href="support/flexbox.css" rel="stylesheet"> -<link rel="author" title="Google Inc." href="http://www.google.com/"> -<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-items"> -<link rel="match" href="whitespace-in-flexitem-001-ref.html"> -<meta name="flags" content=""> -<meta name="assert" content="Whitespace-only nodes in a flexbox should not -be rendered and not influence justify-content, even in the presence of -white-space: pre"> -<style> - .flexbox { white-space: pre; } - .a { - flex: none; - width: 30px; - background: salmon; - } -</style> -<body> - <div class="flexbox justify-content-space-around"> - <div class="a"></div> 	 - </div> - - <div class="flexbox"> - <b>foo</b> <b>bar</b> - </div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-008.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-008.html new file mode 100644 index 0000000..0b10155a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-008.html
@@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing images</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <img> regardless of the value of the overflow property."> +<style> +img { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the orange box below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<img src="support/orange.png" alt="">
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-009.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-009.html new file mode 100644 index 0000000..8662b1a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-009.html
@@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing sgv</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <svg> regardless of the value of the overflow property."> +<style> +svg { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the orange box below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<svg width="100" height="100" viewBox="0 0 100 100" + xmlns="http://www.w3.org/2000/svg"> +<rect x="0" y="0" width="100" height="100" fill="orange"/> +</svg>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-010.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-010.html new file mode 100644 index 0000000..b7cf2712 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-010.html
@@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing pictures</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <picture> regardless of the value of the overflow property."> +<style> +picture { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the orange box below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<picture> + <source srcset="support/orange.svg" type="image/svg+xml"> + <img src="support/orange.png" alt=""> +</picture>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-011.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-011.html new file mode 100644 index 0000000..71a8604 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-011.html
@@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing objects</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <object> regardless of the value of the overflow property."> +<style> +object { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the orange box below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<object data="support/orange.svg" type="image/svg+xml"> + <object> is not supported. This test is non conclusive. +</object>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-012.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-012.html new file mode 100644 index 0000000..717cb5a --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-012.html
@@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing iframes</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <iframes> regardless of the value of the overflow property."> +<style> +iframe { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the box surrounding the orange box below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<iframe src="support/orange.svg"></iframe>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-013.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-013.html new file mode 100644 index 0000000..d8cea0e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-013.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing canvas</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <canvas> regardless of the value of the overflow property."> +<style> +canvas { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the orange box below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<canvas id="test" width="100" height="100"> + <canvas> is not supported. This test is non conclusive. +</canvas> +<script> +var canvas = document.getElementById('test'); +if (canvas.getContext) { + var ctx = canvas.getContext('2d'); + ctx.fillStyle = '#FFA500'; + ctx.fillRect (0, 0, 100, 100); +} +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-014.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-014.html new file mode 100644 index 0000000..fdbd77e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-014.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing videos</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact may"> +<meta name="assert" content="UAs may apply the resize property to <video> regardless of the value of the overflow property."> +<style> +video { resize: both; } +</style> + +<p>Test passes if both <strong>width</strong> and <strong>height</strong> of the video below can be adjusted (for instance by dragging the bottom-right corner).</p> + +<video width="100" autoplay loop> + <source + src="support/test.webm" + type="video/webm"> + <source + src="support/test.mp4" + type="video/mp4"> + <source + src="support/test.ogv" + type="video/ogg"> + <video> is not supported. This test is non conclusive. +</video>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-015.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-015.html new file mode 100644 index 0000000..b613da2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-015.html
@@ -0,0 +1,54 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing uses the style attribute</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +#test { + position: absolute; + width: 100px; + height: 100px; + background: orange; + overflow: hidden; + resize: both; +} +#target { + position: absolute; + width: 150px; + height: 150px; + background: blue; +} +#log { margin-top: 200px; } +</style> + +<p>Enlarge the orange box so that it at least covers the blue box entirely, then press the “done” button.</p> +<!-- There's no actual need to cover the whole box, + but doing so makes sure that the user has resized in both dimensions --> + +<button onclick="verify()">done</button> + +<div id="target"></div> +<div id="test"></div> +<div id=log></div> +<script> +setup({ explicit_done: true }); +function verify() { + test( + function(){ + var test = document.getElementById("test"); + assert_regexp_match(test.style.width, /px$/, "The width property of the style attribute should be set in pixels"); + assert_not_equals(test.style.width, "100px", "The width should be different from the initial one"); + assert_regexp_match(test.style.height, /px$/, "The height property of the style attribute should be set in pixels"); + assert_not_equals(test.style.height, "100px", "The height should be different from the initial one"); + }, "resize works by setting the width and height properties on the style attrbute in pixels"); + test( + function(){ + var test = document.getElementById("test"); + assert_false(test.getAttribute("style").includes("important")); + }, "resize does not set !important"); + done(); +} +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-016.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-016.html new file mode 100644 index 0000000..4bc0028 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-016.html
@@ -0,0 +1,38 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing horizontally uses the style attribute</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +#test { + width: 100px; + height: 100px; + background: orange; + overflow: hidden; + resize: horizontal; +} +</style> + +<p>Attempt to resize the orange box both horizontally and vertically, then press the “done” button +(Resizing vertically is not expected to be possible but should still be attempted).</p> + +<button onclick="verify()">done</button> + +<div id="test"></div> +<div id=log></div> +<script> +setup({ explicit_done: true }); +function verify() { + test( + function(){ + var test = document.getElementById("test"); + assert_regexp_match(test.style.width, /px$/, "The width property of the style attribute should be set in pixels"); + assert_not_equals(test.style.width, "100px", "The width should be different from the initial one"); + assert_equals(test.style.height, "", "The height property of the style attribute should not be set"); + }, "horizontal resizing only affects the width properties on the style attrbute."); + done(); +} +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-017.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-017.html new file mode 100644 index 0000000..98a7d31 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-017.html
@@ -0,0 +1,38 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing vertically uses the style attribute</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +#test { + width: 100px; + height: 100px; + background: orange; + overflow: hidden; + resize: vertical; +} +</style> + +<p>Attempt to resize the orange box both horizontally and vertically, then press the “done” button +(Resizing horizontally is not expected to be possible but should still be attempted).</p> + +<button onclick="verify()">done</button> + +<div id="test"></div> +<div id=log></div> +<script> +setup({ explicit_done: true }); +function verify() { + test( + function(){ + var test = document.getElementById("test"); + assert_equals(test.style.width, "", "The width property of the style attribute should not be set"); + assert_regexp_match(test.style.height, /px$/, "The height property of the style attribute should be set in pixels"); + assert_not_equals(test.style.height, "100px", "The height should be different from the initial one"); + }, "horizontal resizing only affects the width properties on the style attrbute."); + done(); +} +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-018.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-018.html new file mode 100644 index 0000000..6e40d58 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-018.html
@@ -0,0 +1,52 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: removing the ability to resize keeps the resized dimentions</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +#test { + position: absolute; + width: 100px; + height: 100px; + background: orange; + overflow: hidden; + resize: both; +} +#target { + position: absolute; + width: 150px; + height: 150px; + background: blue; +} +#log { margin-top: 200px; } +</style> + +<p>Enlarge the orange box so that it at least covers the blue box entirely, then press the “done” button.</p> +<!-- There's no actual need to cover the whole box, + but doing so makes sure that the user has resized in both dimensions --> + +<button onclick="verify()">done</button> + +<div id="target"></div> +<div id="test"></div> +<div id=log></div> +<script> +setup({ explicit_done: true }); +function verify() { + test( + function(){ + var test = document.getElementById("test"); + var w = test.style.width; + var h = test.style.height; + assert_regexp_match(w, /px$/, "The width property of the style attribute should be set"); + assert_regexp_match(h, /px$/, "The height property of the style attribute should be set"); + document.styleSheets[0].cssRules[0].style.resize= "none"; + assert_equals(test.style.width, w, "The width property of the style attribute should still be set after removing ability to resize"); + assert_equals(test.style.height, h, "The height property of the style attribute should still be set after removing ability to resize"); + }, "Removing the ability to resize an element does not reset its size"); + done(); +} +</script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-019.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-019.html new file mode 100644 index 0000000..4a6ff7d --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-019.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing constraints</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<meta name="assert" content="UAs must not place constrains on resizing that would prevent an element from becoming smaller than its original size."> +<style> +#test { + position: absolute; + background: orange; + height: 100px; + width: 100px; + overflow: auto; + resize: both; +} +#ref { + position: absolute; + background: green; + height: 100px; + width: 100px; +} +</style> + +<p>The test passes is you can resize the orange box to be smaller than its initial size. +For reference there is an unresizable green box beneath it. +If you can uncover it, the test passes.</p> + +<div id=ref></div> +<div id=test></div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-020.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-020.html new file mode 100644 index 0000000..807f788b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-020.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing min-height/width constraints</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<meta name="assert" content="min-width and min-height constraints are honored."> +<style> +#test { + position: absolute; + background: orange; + min-height: 50px; + min-width: 50px; + height: 100px; + width: 100px; + overflow: auto; + resize: both; +} +#ref { + position: absolute; + background: red; + height: 50px; + width: 50px; +} +</style> + +<p>Resize the orange box below to the smallest size possible. +There is a smaller unresizable red box beneath it.</p> +<p>If you can uncover any amount of red, the test fails. +If you cannot resize the orange box, the test also fails. +Otherwise, the test passes.</p> + +<div id=ref></div> +<div id=test></div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-021.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-021.html new file mode 100644 index 0000000..709551f1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/resize-021.html
@@ -0,0 +1,36 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Basic User Interface Test: resizing min-height/width constraints</title> +<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#resize"> +<meta name="flags" content="interact"> +<meta name="assert" content="max-width and max-height constraints are honored."> +<style> +#test { + position: absolute; + background: linear-gradient(to right, transparent 200px, red 200px) no-repeat, + linear-gradient(to bottom, transparent 200px, red 200px) no-repeat, + orange; + max-height: 200px; + max-width: 200px; + height: 100px; + width: 100px; + overflow: auto; + resize: both; +} +#ref { + position: absolute; + background: blue; + height: 300px; + width: 300px; +} +</style> + +<p>Attempt to resize the orange box below so that it is large enough to fully cover the blue one.</p> +<p>If you cannot enlarge the orange box, the test fails.<br> +If you can fully cover the blue box, the test fails.<br> +Even if the blue box is not fully covered, if you see any red, the test fails.<br> +Otherwise, the test passes.</p> + +<div id=ref></div> +<div id=test></div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/orange.png b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/orange.png new file mode 100644 index 0000000..0a08d3ae --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/orange.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/orange.svg b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/orange.svg new file mode 100644 index 0000000..56346a8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/orange.svg
@@ -0,0 +1,4 @@ +<svg width="100" height="100" viewBox="0 0 100 100" + xmlns="http://www.w3.org/2000/svg"> +<rect x="0" y="0" width="100" height="100" fill="orange"/> +</svg>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.mp4 b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.mp4 new file mode 100644 index 0000000..1b0e7b5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.mp4 Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.ogv b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.ogv new file mode 100644 index 0000000..50d59df --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.ogv Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.webm b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.webm new file mode 100644 index 0000000..3a601805 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-ui-3/support/test.webm Binary files differ
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-001-ref.html b/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-001-ref.html deleted file mode 100644 index 683198a..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-001-ref.html +++ /dev/null
@@ -1,3 +0,0 @@ -<!-- quirks mode --> -<html style="overflow:scroll"> -<body style="overflow:scroll">The body box should have scrollbars.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-001.html b/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-001.html deleted file mode 100644 index 344e299..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-001.html +++ /dev/null
@@ -1,17 +0,0 @@ -<!-- quirks mode --> -<html> - <head> - <meta charset="utf-8"> - <title>CSSOM View Test: Dynamically changing scrollingElement to html in quirks mode</title> - <link rel="author" title="Rune Lillesveen" href="mailto:rune@opera.com"> - <link rel="help" href="https://www.w3.org/TR/cssom-view-1/#dom-document-scrollingelement"> - <link rel="match" href="scrollingElement-quirks-dynamic-001-ref.html"> - <meta name="assert" content="Checks that setting the overflow on html to scroll will stop propagating body scrollbars to viewport."> - </head> - <body style="overflow:scroll">The body box should have scrollbars. - <script> - document.body.offsetTop; // force layout - document.documentElement.style.overflow = "scroll"; - </script> - </body> -</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-002-ref.html b/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-002-ref.html deleted file mode 100644 index c8a78398..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-002-ref.html +++ /dev/null
@@ -1,2 +0,0 @@ -<!-- quirks mode --> -<body style="overflow:scroll">The body box should not have scrollbars.
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-002.html b/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-002.html deleted file mode 100644 index 8495be2..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/cssom-view/scrollingElement-quirks-dynamic-002.html +++ /dev/null
@@ -1,17 +0,0 @@ -<!-- quirks mode --> -<html style="overflow:scroll"> - <head> - <meta charset="utf-8"> - <title>CSSOM View Test: Dynamically changing scrollingElement to body in quirks mode</title> - <link rel="author" title="Rune Lillesveen" href="mailto:rune@opera.com"> - <link rel="help" href="https://www.w3.org/TR/cssom-view-1/#dom-document-scrollingelement"> - <link rel="match" href="scrollingElement-quirks-dynamic-002-ref.html"> - <meta name="assert" content="Checks that setting the overflow on html to visible will propagate body scrollbars to viewport."> - </head> - <body style="overflow:scroll">The body box should not have scrollbars. - <script> - document.body.offsetTop; // force layout - document.documentElement.style.overflow = "visible"; - </script> - </body> -</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/dedicated-workers.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/dedicated-workers.idl new file mode 100644 index 0000000..14259dc --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/interfaces/dedicated-workers.idl
@@ -0,0 +1,133 @@ +// ----------------------------------------------------------------------------- +// DOM +// ----------------------------------------------------------------------------- +[Exposed=(Window,Worker)] +interface EventTarget { + void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options); + void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options); + boolean dispatchEvent(Event event); +}; + +callback interface EventListener { + void handleEvent(Event event); +}; + +dictionary EventListenerOptions { + boolean capture = false; +}; + +dictionary AddEventListenerOptions : EventListenerOptions { + boolean passive = false; + boolean once = false; +}; + +// ----------------------------------------------------------------------------- +// HTML +// ----------------------------------------------------------------------------- +[TreatNonCallableAsNull] +callback EventHandlerNonNull = any (Event event); +typedef EventHandlerNonNull? EventHandler; + +[TreatNonCallableAsNull] +callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); +typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; + +[Exposed=Worker] +interface WorkerGlobalScope : EventTarget { + readonly attribute WorkerGlobalScope self; + readonly attribute WorkerLocation location; + readonly attribute WorkerNavigator navigator; + void importScripts(USVString... urls); + + attribute OnErrorEventHandler onerror; + attribute EventHandler onlanguagechange; + attribute EventHandler onoffline; + attribute EventHandler ononline; + attribute EventHandler onrejectionhandled; + attribute EventHandler onunhandledrejection; +}; + +[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker] +interface DedicatedWorkerGlobalScope : WorkerGlobalScope { + [Replaceable] readonly attribute DOMString name; + + void postMessage(any message, optional sequence<object> transfer = []); + + void close(); + + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +typedef (DOMString or Function) TimerHandler; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface WindowOrWorkerGlobalScope { + [Replaceable] readonly attribute USVString origin; + + // base64 utility methods + DOMString btoa(DOMString data); + DOMString atob(DOMString data); + + // timers + long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments); + void clearTimeout(optional long handle = 0); + long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments); + void clearInterval(optional long handle = 0); + + // ImageBitmap + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options); + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options); +}; +WorkerGlobalScope implements WindowOrWorkerGlobalScope; + +[Exposed=Worker] +interface WorkerNavigator {}; +WorkerNavigator implements NavigatorID; +WorkerNavigator implements NavigatorLanguage; +WorkerNavigator implements NavigatorOnLine; +WorkerNavigator implements NavigatorConcurrentHardware; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorID { + readonly attribute DOMString appCodeName; // constant "Mozilla" + readonly attribute DOMString appName; // constant "Netscape" + readonly attribute DOMString appVersion; + readonly attribute DOMString platform; + readonly attribute DOMString product; // constant "Gecko" + [Exposed=Window] readonly attribute DOMString productSub; + readonly attribute DOMString userAgent; + [Exposed=Window] readonly attribute DOMString vendor; + [Exposed=Window] readonly attribute DOMString vendorSub; // constant "" + + // also has additional members in a partial interface +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorLanguage { + readonly attribute DOMString language; + readonly attribute FrozenArray<DOMString> languages; +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorOnLine { + readonly attribute boolean onLine; +}; + +[NoInterfaceObject, Exposed=(Window,Worker)] +interface NavigatorConcurrentHardware { + readonly attribute unsigned long long hardwareConcurrency; +}; + +[Exposed=Worker] +interface WorkerLocation { + stringifier readonly attribute USVString href; + readonly attribute USVString origin; + readonly attribute USVString protocol; + readonly attribute USVString host; + readonly attribute USVString hostname; + readonly attribute USVString port; + readonly attribute USVString pathname; + readonly attribute USVString search; + readonly attribute USVString hash; +};
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js b/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js index e83b2152..6dd1db3d 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/idlharness.js
@@ -322,6 +322,121 @@ return ret; }; +//@} +IdlArray.prototype.is_json_type = function(type) +//@{ +{ + /** + * Checks whether type is a JSON type as per + * https://heycam.github.io/webidl/#dfn-json-types + */ + + var idlType = type.idlType; + + if (type.generic == "Promise") { return false; } + + // nullable and annotated types don't need to be handled separately, + // as webidl2 doesn't represent them wrapped-up (as they're described + // in WebIDL). + + // union and record types + if (type.union || type.generic == "record") { + return idlType.every(this.is_json_type, this); + } + + // sequence types + if (type.generic == "sequence" || type.generic == "FrozenArray") { + return this.is_json_type(idlType); + } + + if (typeof idlType != "string") { throw new Error("Unexpected type " + JSON.stringify(idlType)); } + + switch (idlType) + { + // Numeric types + case "byte": + case "octet": + case "short": + case "unsigned short": + case "long": + case "unsigned long": + case "long long": + case "unsigned long long": + case "float": + case "double": + case "unrestricted float": + case "unrestricted double": + // boolean + case "boolean": + // string types + case "DOMString": + case "ByteString": + case "USVString": + // object type + case "object": + return true; + case "Error": + case "DOMException": + case "Int8Array": + case "Int16Array": + case "Int32Array": + case "Uint8Array": + case "Uint16Array": + case "Uint32Array": + case "Uint8ClampedArray": + case "Float32Array": + case "ArrayBuffer": + case "DataView": + case "any": + return false; + default: + var thing = this.members[idlType]; + if (!thing) { throw new Error("Type " + idlType + " not found"); } + + if (thing instanceof IdlEnum) { return true; } + + // dictionaries where all of their members are JSON types + if (thing instanceof IdlDictionary) { + var stack = thing.get_inheritance_stack(); + var map = new Map(); + while (stack.length) + { + stack.pop().members.forEach(m => map.set(m.name, m.idlType)); + } + return [...map.values()].every(this.is_json_type, this); + } + + // interface types that have a toJSON operation declared on themselves or + // one of their inherited or consequential interfaces. + if (thing instanceof IdlInterface) { + var base; + while (thing) + { + if (thing.has_to_json_regular_operation()) { return true; } + var mixins = this.implements[thing.name]; + if (mixins) { + mixins = mixins.map(id => { + var mixin = this.members[id]; + if (!mixin) { + throw new Error("Interface " + id + " not found (implemented by " + thing.name + ")"); + } + return mixin; + }); + if (mixins.some(m => m.has_to_json_regular_operation())) { return true; } + } + if (!thing.base) { return false; } + base = this.members[thing.base]; + if (!base) { + throw new Error("Interface " + thing.base + " not found (inherited by " + thing.name + ")"); + } + thing = base; + } + return false; + } + return false; + } +}; + function exposure_set(object, default_set) { var exposed = object.extAttrs.filter(function(a) { return a.name == "Exposed" }); if (exposed.length > 1 || exposed.length < 0) { @@ -696,6 +811,9 @@ /** Self-explanatory. */ this.name = obj.name; + /** A back-reference to our IdlArray. */ + this.array = obj.array; + /** An array of objects produced by the "dictionaryMember" production. */ this.members = obj.members; @@ -709,6 +827,10 @@ //@} IdlDictionary.prototype = Object.create(IdlObject.prototype); +IdlDictionary.prototype.get_inheritance_stack = function() { + return IdlInterface.prototype.get_inheritance_stack.call(this); +}; + /// IdlInterface /// function IdlInterface(obj, is_callback) //@{ @@ -777,6 +899,127 @@ }; //@} +IdlInterface.prototype.has_to_json_regular_operation = function() { + return this.members.some(function(m) { + return m.is_to_json_regular_operation(); + }); +}; + +IdlInterface.prototype.has_default_to_json_regular_operation = function() { + return this.members.some(function(m) { + return m.is_to_json_regular_operation() && m.has_extended_attribute("Default"); + }); +}; + +IdlInterface.prototype.get_inheritance_stack = function() { + /** + * See https://heycam.github.io/webidl/#create-an-inheritance-stack + * + * Returns an array of IdlInterface objects which contains itself + * and all of its inherited interfaces. + * + * So given: + * + * A : B {}; + * B : C {}; + * C {}; + * + * then A.get_inheritance_stack() should return [A, B, C], + * and B.get_inheritance_stack() should return [B, C]. + * + * Note: as dictionary inheritance is expressed identically by the AST, + * this works just as well for getting a stack of inherited dictionaries. + */ + + var stack = [this]; + var idl_interface = this; + while (idl_interface.base) { + var base = this.array.members[idl_interface.base]; + if (!base) { + throw new Error(idl_interface.type + " " + idl_interface.base + " not found (inherited by " + idl_interface.name + ")"); + } + idl_interface = base; + stack.push(idl_interface); + } + return stack; +}; + +/** + * Implementation of + * https://heycam.github.io/webidl/#default-tojson-operation + * for testing purposes. + * + * Collects the IDL types of the attributes that meet the criteria + * for inclusion in the default toJSON operation for easy + * comparison with actual value + */ +IdlInterface.prototype.default_to_json_operation = function(callback) { + var map = new Map(), isDefault = false; + this.traverse_inherited_and_consequential_interfaces(function(I) { + if (I.has_default_to_json_regular_operation()) { + isDefault = true; + I.members.forEach(function(m) { + if (!m.static && m.type == "attribute" && I.array.is_json_type(m.idlType)) { + map.set(m.name, m.idlType); + } + }); + } else if (I.has_to_json_regular_operation()) { + isDefault = false; + } + }); + return isDefault ? map : null; +}; + +/** + * Traverses inherited interfaces from the top down + * and imeplemented interfaces inside out. + * Invokes |callback| on each interface. + * + * This is an abstract implementation of the traversal + * algorithm specified in: + * https://heycam.github.io/webidl/#collect-attribute-values + * Given the following inheritance tree: + * + * F + * | + * C E - I + * | | + * B - D + * | + * G - A - H - J + * + * Invoking traverse_inherited_and_consequential_interfaces() on A + * would traverse the tree in the following order: + * C -> B -> F -> E -> I -> D -> A -> G -> H -> J + */ + +IdlInterface.prototype.traverse_inherited_and_consequential_interfaces = function(callback) { + if (typeof callback != "function") { + throw new TypeError(); + } + var stack = this.get_inheritance_stack(); + _traverse_inherited_and_consequential_interfaces(stack, callback); +}; + +function _traverse_inherited_and_consequential_interfaces(stack, callback) { + var I = stack.pop(); + callback(I); + var mixins = I.array["implements"][I.name]; + if (mixins) { + mixins.forEach(id => { + var mixin = I.array.members[id]; + if (!mixin) { + throw new Error("Interface " + id + " not found (implemented by " + I.name + ")"); + } + var interfaces = mixin.get_inheritance_stack(); + _traverse_inherited_and_consequential_interfaces(interfaces, callback); + }); + } + if (stack.length > 0) { + _traverse_inherited_and_consequential_interfaces(stack, callback); + } +} + IdlInterface.prototype.test = function() //@{ { @@ -1495,6 +1738,10 @@ })), "property has wrong .length"); + if (member.is_to_json_regular_operation()) { + this.test_to_json_operation(memberHolderObject, member); + } + // Make some suitable arguments var args = member.arguments.map(function(arg) { return create_suitable_object(arg.idlType); @@ -1551,6 +1798,32 @@ { name: "thisValue", idlType: {idlType: "any"}, optional: true}]})); }; +IdlInterface.prototype.test_to_json_operation = function(memberHolderObject, member) { + if (member.has_extended_attribute("Default")) { + var map = this.default_to_json_operation(); + test(function() { + var json = memberHolderObject.toJSON(); + map.forEach(function(type, k) { + assert_true(k in json, "property " + k + " should be present in the output of " + this.name + ".prototype.toJSON()"); + var descriptor = Object.getOwnPropertyDescriptor(json, k); + assert_true(descriptor.writable, "property " + k + " should be writable"); + assert_true(descriptor.configurable, "property " + k + " should be configurable"); + assert_true(descriptor.enumerable, "property " + k + " should be enumerable"); + this.array.assert_type_is(json[k], type); + delete json[k]; + }, this); + for (var k in json) { + assert_unreached("property " + k + " should not be present in the output of " + this.name + ".prototype.toJSON()"); + } + }.bind(this), "Test default toJSON operation of " + this.name); + } else { + test(function() { + assert_true(this.array.is_json_type(member.idlType), JSON.stringify(member.idlType) + " is not an appropriate return value for the toJSON operation of " + this.name); + this.array.assert_type_is(memberHolderObject.toJSON(), member.idlType); + }.bind(this), "Test toJSON operation of " + this.name); + } +}; + //@} IdlInterface.prototype.test_member_iterable = function(member) //@{ @@ -2096,6 +2369,10 @@ //@} IdlInterfaceMember.prototype = Object.create(IdlObject.prototype); +IdlInterfaceMember.prototype.is_to_json_regular_operation = function() { + return this.type == "operation" && !this.static && this.name == "toJSON"; +}; + /// Internal helper functions /// function create_suitable_object(type) //@{
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlArray/is_json_type.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlArray/is_json_type.html new file mode 100644 index 0000000..57f714b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlArray/is_json_type.html
@@ -0,0 +1,185 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlArray.prototype.is_json_type()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<script> + "use strict"; + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("DOMString"))); + assert_true(idl.is_json_type(typeFrom("ByteString"))); + assert_true(idl.is_json_type(typeFrom("USVString"))); + idl.add_untested_idls('enum BarEnum { "a", "b", "c" };'); + assert_true(idl.is_json_type(typeFrom("BarEnum"))); + }, 'should return true for all string types'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("Error"))); + assert_false(idl.is_json_type(typeFrom("DOMException"))); + }, 'should return false for all exception types'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("Int8Array"))); + assert_false(idl.is_json_type(typeFrom("Int16Array"))); + assert_false(idl.is_json_type(typeFrom("Int32Array"))); + assert_false(idl.is_json_type(typeFrom("Uint8Array"))); + assert_false(idl.is_json_type(typeFrom("Uint16Array"))); + assert_false(idl.is_json_type(typeFrom("Uint32Array"))); + assert_false(idl.is_json_type(typeFrom("Uint8ClampedArray"))); + assert_false(idl.is_json_type(typeFrom("Float32Array"))); + assert_false(idl.is_json_type(typeFrom("ArrayBuffer"))); + assert_false(idl.is_json_type(typeFrom("DataView"))); + }, 'should return false for all buffer source types'); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("boolean"))); + }, 'should return true for boolean'); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("byte"))); + assert_true(idl.is_json_type(typeFrom("octet"))); + assert_true(idl.is_json_type(typeFrom("short"))); + assert_true(idl.is_json_type(typeFrom("unsigned short"))); + assert_true(idl.is_json_type(typeFrom("long"))); + assert_true(idl.is_json_type(typeFrom("unsigned long"))); + assert_true(idl.is_json_type(typeFrom("long long"))); + assert_true(idl.is_json_type(typeFrom("unsigned long long"))); + assert_true(idl.is_json_type(typeFrom("float"))); + assert_true(idl.is_json_type(typeFrom("unrestricted float"))); + assert_true(idl.is_json_type(typeFrom("double"))); + assert_true(idl.is_json_type(typeFrom("unrestricted double"))); + }, 'should return true for all numeric types'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("Promise<DOMString>"))); + }, 'should return false for promises'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("sequence<DOMException>"))); + assert_true(idl.is_json_type(typeFrom("sequence<DOMString>"))); + }, 'should handle sequences according to their inner types'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("FrozenArray<DOMException>"))); + assert_true(idl.is_json_type(typeFrom("FrozenArray<DOMString>"))); + }, 'should handle frozen arrays according to their inner types'); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("record<DOMString, DOMString>"))); + assert_false(idl.is_json_type(typeFrom("record<DOMString, Error>"))); + }, 'should handle records according to their inner types'); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("object"))); + }, 'should return true for object type'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("any"))); + }, 'should return false for any type'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('dictionary Foo { DOMString foo; }; dictionary Bar : Foo { DOMString bar; };'); + assert_true(idl.is_json_type(typeFrom("Foo"))); + assert_true(idl.is_json_type(typeFrom("Bar"))); + }, 'should return true for dictionaries whose members are all JSON types'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('dictionary Foo { };'); + assert_true(idl.is_json_type(typeFrom("Foo"))); + }, 'should return true for dictionaries which have no members'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('dictionary FooBar { DOMString a; Error b; }; dictionary Baz : FooBar {};'); + assert_false(idl.is_json_type(typeFrom("FooBar"))); + assert_false(idl.is_json_type(typeFrom("Baz"))); + }, 'should return false for dictionaries whose members are not all JSON types'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('interface Foo { DOMString toJSON(); };'); + assert_true(idl.is_json_type(typeFrom("Foo"))); + }, 'should return true for interfaces which declare a toJSON operation'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('interface Foo { DOMString toJSON(); }; interface Bar : Foo { };'); + assert_true(idl.is_json_type(typeFrom("Bar"))); + }, 'should return true for interfaces which inherit from an interface which declares a toJSON operation'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('interface Foo { }; interface Bar { DOMString toJSON(); }; Foo implements Bar;'); + assert_true(idl.is_json_type(typeFrom("Foo"))); + }, 'should return true for interfaces which mixin an interface which declare a toJSON operation'); + +// test(function() { +// var idl = new IdlArray(); +// idl.add_untested_idls('interface Foo { }; interface Bar { }; interface Baz { DOMString toJSON(); }; Foo implements Bar; Bar implements Baz;'); +// assert_true(idl.is_json_type(typeFrom("Foo"))); +// }, 'should return true for interfaces which mixin an interface which itself mixes in an interface which declares a toJSON operation'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('interface Foo { };'); + assert_false(idl.is_json_type(typeFrom("Foo"))); + }, 'should return false for interfaces which do not declare a toJSON operation'); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('interface Foo { object toJSON(); };'); + assert_true(idl.is_json_type(typeFrom("(Foo or DOMString)"))); + }, 'should return true for union types whose member types are JSON types'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typeFrom("(DataView or DOMString)"))); + }, 'should return false for union types whose member types are not all JSON types'); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("DOMString?"))); + assert_false(idl.is_json_type(typeFrom("DataView?"))); + }, 'should consider the inner types of nullable types'); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typeFrom("[XAttr] long"))); + assert_false(idl.is_json_type(typeFrom("[XAttr] DataView"))); + }, 'should consider the inner types of annotated types.'); + + test(function() { + var idl = new IdlArray(); + assert_throws(new Error(), _ => idl.is_json_type(typeFrom("Foo"))); + }, "should throw if it references a dictionary, enum or interface which wasn't added to the IdlArray"); + + test(function() { + var idl = new IdlArray(); + idl.add_untested_idls('interface Foo : Bar { };'); + assert_throws(new Error(), _ => idl.is_json_type(typeFrom("Foo"))); + }, "should throw for interfaces which inherit from another interface which wasn't added to the IdlArray"); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html new file mode 100644 index 0000000..83863fb8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html
@@ -0,0 +1,35 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlDictionary.prototype.get_inheritance_stack()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<script> + "use strict"; + test(function() { + var stack = dictionaryFrom('dictionary A { };').get_inheritance_stack(); + assert_array_equals(stack.map(d => d.name), ["A"]); + }, 'should return an array that includes itself.'); + + test(function() { + var d = dictionaryFrom('dictionary A : B { };'); + assert_throws(new Error(), _ => d.get_inheritance_stack()); + }, "should throw for dictionaries which inherit from another dictionary which wasn't added to the IdlArray"); + + test(function() { + var idl = new IdlArray(); + idl.add_idls('dictionary A : B { };'); + idl.add_untested_idls('dictionary B : C { }; dictionary C { };'); + var A = idl.members["A"]; + assert_array_equals(A.get_inheritance_stack().map(d => d.name), ["A", "B", "C"]); + }, 'should return an array of inherited dictionaries in order of inheritance, starting with itself.'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/default_to_json_operation.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/default_to_json_operation.html new file mode 100644 index 0000000..a77ee3e --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/default_to_json_operation.html
@@ -0,0 +1,189 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlDictionary.prototype.default_to_json_operation()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<pre id=fragments> + interface A : B { + attribute DOMString a; + }; + + interface B : C { + [Default] object toJSON(); + attribute long b; + }; + + interface C { + attribute DOMString c; + }; + + interface D : E { + [Default] object toJSON(); + attribute float d; + }; + + interface E : F { + attribute DOMString e; + }; + + interface F { + [Default] object toJSON(); + attribute unrestricted double f; + }; + + interface G { + [Default] object toJSON(); + attribute octet g; + }; + + interface H { + [Default] object toJSON(); + attribute DOMString h; + }; + + interface I { + [Default] object toJSON(); + attribute boolean i; + }; + + interface J { + [Default] object toJSON(); + attribute D j; + }; + + A implements G; + A implements H; + B implements D; + E implements I; + H implements J; +</pre> +<script> + "use strict"; + test(function() { + var map = interfaceFrom('interface A { [Default] object toJSON(); };').default_to_json_operation(); + assert_equals(map.size, 0); + }, 'should return an empty map when there are no attributes'); + + test(function() { + var r = interfaceFrom('interface A { };').default_to_json_operation(); + assert_equals(r, null); + }, 'should return null when there is no toJSON method'); + + test(function() { + var r = interfaceFrom('interface A { DOMString toJSON(); };').default_to_json_operation(); + assert_equals(r, null); + }, 'should return null when there is a toJSON method but it does not have the [Default] extended attribute'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A : B { DOMString toJSON(); };"); + context.add_idls("interface B { [Default] object toJSON(); };"); + var r = context.members.A.default_to_json_operation(); + assert_equals(r, null); + }, 'should return null when there is a toJSON method but it does not have the [Default] extended attribute even if this extended attribute exists on inherited interfaces'); + + test(function() { + var map = interfaceFrom('interface A { [Default] object toJSON(); static attribute DOMString foo; };').default_to_json_operation(); + assert_equals(map.size, 0); + }, 'should not include static attributes'); + + test(function() { + var map = interfaceFrom('interface A { [Default] object toJSON(); attribute Promise<DOMString> bar; };').default_to_json_operation(); + assert_equals(map.size, 0); + }, 'should not include attributes which are not JSON types'); + + test(function() { + var map = interfaceFrom('interface A { [Default] object toJSON(); DOMString bar(); };').default_to_json_operation(); + assert_equals(map.size, 0); + }, 'should not include operations'); + + test(function() { + var map = interfaceFrom('interface A { [Default] object toJSON(); attribute DOMString bar; };').default_to_json_operation(); + assert_equals(map.size, 1); + assert_true(map.has("bar")); + assert_equals(map.get("bar").idlType, "DOMString"); + }, 'should return a map whose key/value pair represent the identifier and IDL type of valid attributes'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A : B { [Default] object toJSON(); attribute DOMString a; };"); + context.add_idls("interface B { [Default] object toJSON(); attribute long b; };"); + var map = context.members.A.default_to_json_operation(); + assert_array_equals([...map.keys()], ["b", "a"]); + assert_array_equals([...map.values()].map(v => v.idlType), ["long", "DOMString"]); + }, 'should return a properly ordered map that contains IDL types of valid attributes for inherited interfaces'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A : B { attribute DOMString a; };"); + context.add_idls("interface B { [Default] object toJSON(); attribute long b; };"); + var map = context.members.A.default_to_json_operation(); + assert_equals(map.size, 1); + assert_true(map.has("b")); + assert_equals(map.get("b").idlType, "long"); + assert_array_equals([...map.keys()], ["b"]); + }, 'should not include attributes of the current interface when the [Default] toJSON method in inherited'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A : B { [Default] object toJSON(); };"); + context.add_idls("interface B : C { [Default] object toJSON(); attribute DOMString foo; };"); + context.add_idls("interface C { [Default] object toJSON(); attribute long foo; };"); + var map = context.members.A.default_to_json_operation(); + assert_equals(map.size, 1); + assert_true(map.has("foo")); + assert_equals(map.get("foo").idlType, "DOMString"); + }, 'attributes declared further away in the inheritance hierarchy should be masked by attributes declared closer'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A : B { [Default] object toJSON(); attribute DOMString a; };"); + context.add_idls("interface B { object toJSON(); attribute long b; };"); + var map = context.members.A.default_to_json_operation(); + assert_equals(map.size, 1); + assert_true(map.has("a")); + assert_false(map.has("b")); + assert_equals(map.get("a").idlType, "DOMString"); + }, 'should return an ordered map that ignores attributes of inherited interfaces which do not declare a [Default] toJSON operation.'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A { [Default] object toJSON(); attribute DOMString a; };"); + context.add_idls("interface N { [Default] object toJSON(); attribute long n; };"); + context.add_idls("A implements N;"); + var map = context.members.A.default_to_json_operation(); + assert_array_equals([...map.keys()], ["a", "n"]); + assert_array_equals([...map.values()].map(v => v.idlType), ["DOMString", "long"]); + }, 'should return a properly ordered map that accounts for mixed-in interfaces which declare a [Default] toJSON operation.'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A { [Default] object toJSON(); attribute DOMString a; };"); + context.add_idls("interface N { attribute long n; };"); + context.add_idls("A implements N;"); + var map = context.members.A.default_to_json_operation(); + assert_equals(map.size, 1); + assert_true(map.has("a")); + assert_false(map.has("n")); + assert_equals(map.get("a").idlType, "DOMString"); + }, 'should return a properly ordered map that ignores mixed-in interfaces which do not declare a [Default] toJSON operation.'); + + + test(function() { + var context = new IdlArray(); + context.add_idls(document.getElementById('fragments').textContent); + var map = context.members.A.default_to_json_operation(); + assert_array_equals([...map.keys()], ["b", "f", "i", "d", "g", "h", "j"]); + assert_array_equals([...map.values()].map(v => v.idlType), ["long", "unrestricted double", "boolean", "float", "octet", "DOMString", "D"]); + }, 'should return a properly ordered map of name/type pairs handling inherited and consequential interfaces as specified.'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html new file mode 100644 index 0000000..c1d61415 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html
@@ -0,0 +1,35 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlInterface.prototype.get_inheritance_stack()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<script> + "use strict"; + test(function() { + var stack = interfaceFrom('interface A { };').get_inheritance_stack(); + assert_array_equals(stack.map(i => i.name), ["A"]); + }, 'should return an array that includes itself.'); + + test(function() { + var i = interfaceFrom('interface A : B { };'); + assert_throws(new Error(), _ => i.get_inheritance_stack()); + }, "should throw for interfaces which inherit from another interface which wasn't added to the IdlArray"); + + test(function() { + var idl = new IdlArray(); + idl.add_idls('interface A : B { };'); + idl.add_untested_idls('interface B : C { }; interface C { };'); + var A = idl.members["A"]; + assert_array_equals(A.get_inheritance_stack().map(i => i.name), ["A", "B", "C"]); + }, 'should return an array of inherited interfaces in order of inheritance, starting with itself.'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/has_default_to_json_regular_operation.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/has_default_to_json_regular_operation.html new file mode 100644 index 0000000..9498a3a7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/has_default_to_json_regular_operation.html
@@ -0,0 +1,47 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlInterface.prototype.has_default_to_json_regular_operation()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<script> + "use strict"; + test(function() { + var i = interfaceFrom('interface A { };'); + assert_false(i.has_default_to_json_regular_operation()); + }, 'should return false when the interface declares no toJSON operation.'); + + test(function() { + var i = interfaceFrom('interface A { static object toJSON(); };'); + assert_false(i.has_default_to_json_regular_operation()); + }, 'should return false when the interface declares a static toJSON operation.'); + + test(function() { + var i = interfaceFrom('interface A { object toJSON(); };'); + assert_false(i.has_default_to_json_regular_operation()); + }, 'should return false when the interface declares a regular toJSON operation with no extended attribute.'); + + test(function() { + var i = interfaceFrom('interface A { [x] object toJSON(); };'); + assert_false(i.has_default_to_json_regular_operation()); + }, 'should return false when the interface declares a regular toJSON operation with another extented attribute.'); + + test(function() { + var i = interfaceFrom('interface A { [Default] object toJSON(); };'); + assert_true(i.has_default_to_json_regular_operation()); + }, 'should return true when the interface declares a regular toJSON operation with the [Default] extented attribute.'); + + test(function() { + var i = interfaceFrom('interface A { [Attr, AnotherAttr, Default] object toJSON(); };'); + assert_true(i.has_default_to_json_regular_operation()); + }, 'should return true when the interface declares a regular toJSON operation with multiple extended attributes, including [Default].'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/has_to_json_regular_operation.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/has_to_json_regular_operation.html new file mode 100644 index 0000000..a4b4e91b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/has_to_json_regular_operation.html
@@ -0,0 +1,32 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlInterface.prototype.has_to_json_regular_operation()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<script> + "use strict"; + test(function() { + var i = interfaceFrom('interface A { };'); + assert_false(i.has_to_json_regular_operation()); + }, 'should return false when the interface declares no toJSON operation.'); + + test(function() { + var i = interfaceFrom('interface A { static object toJSON(); };'); + assert_false(i.has_to_json_regular_operation()); + }, 'should return false when the interface declares a static toJSON operation.'); + + test(function() { + var i = interfaceFrom('interface A { object toJSON(); };'); + assert_true(i.has_to_json_regular_operation()); + }, 'should return true when the interface declares a regular toJSON operation.'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html new file mode 100644 index 0000000..b91f3ee --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html
@@ -0,0 +1,197 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="utf-8"> + <title>IdlInterface.prototype.test_to_json_operation()</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/WebIDLParser.js"></script> + <script src="/resources/idlharness.js"></script> + <script src="../helper.js"></script> +</head> +<body> +<script> + "use strict"; + function wrap(obj) { + return { + toJSON: function() { + return obj; + } + } + } + + var i, obj; + i = interfaceFrom("interface A { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap({ foo: 123 }), i.members[0]); + + // should fail (wrong type) + i = interfaceFrom("interface B { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap({ foo: "a value" }), i.members[0]); + + // should fail (extra property) + i = interfaceFrom("interface C { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap({ foo: 123, bar: null }), i.members[0]); + + // should fail (missing property) + i = interfaceFrom("interface D { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap({ }), i.members[0]); + + // should fail (extra property) + i = interfaceFrom("interface E { [Default] object toJSON(); attribute long foo; attribute Promise<long> baz; };"); + i.test_to_json_operation(wrap({ foo: 123, baz: 123 }), i.members[0]); + + // should fail (should be writable) + obj = Object.defineProperties({}, { foo: { + writable: false, + enumerable: true, + configurable: true, + value: 123 + }}); + i = interfaceFrom("interface F { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap(obj), i.members[0]); + + // should fail (should be enumerable) + obj = Object.defineProperties({}, { foo: { + writable: true, + enumerable: false, + configurable: true, + value: 123 + }}); + i = interfaceFrom("interface G { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap(obj), i.members[0]); + + // should fail (should be configurable) + obj = Object.defineProperties({}, { foo: { + writable: true, + enumerable: true, + configurable: false, + value: 123 + }}); + i = interfaceFrom("interface H { [Default] object toJSON(); attribute long foo; };"); + i.test_to_json_operation(wrap(obj), i.members[0]); + + var idl = new IdlArray(); + idl.add_idls("interface I : J { [Default] object toJSON(); attribute long foo; };"); + idl.add_idls("interface J { [Default] object toJSON(); attribute DOMString foo;};"); + var i = idl.members.I; + i.test_to_json_operation(wrap({ foo: 123 }), i.members[0]); + + i = interfaceFrom("interface K { [Default] object toJSON(); };"); + i.test_to_json_operation(wrap({}), i.members[0]); + + i = interfaceFrom("interface L { DOMString toJSON(); };"); + i.test_to_json_operation(wrap("a string"), i.members[0]); + + // should fail (wrong output type) + i = interfaceFrom("interface M { DOMString toJSON(); };"); + i.test_to_json_operation(wrap({}), i.members[0]); + + // should fail (not an IDL type) + i = interfaceFrom("interface N { DOMException toJSON(); };"); + i.test_to_json_operation(wrap({}), i.members[0]); +</script> +<script type="text/json" id="expected"> + { + "summarized_status": { + "message": null, + "stack": null, + "status_string": "OK" + }, + "summarized_tests": [ + { + "message": null, + "name": "Test default toJSON operation of A", + "properties": {}, + "stack": null, + "status_string": "PASS" + }, + { + "message": "assert_equals: expected \"number\" but got \"string\"", + "name": "Test default toJSON operation of B", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_unreached: property bar should not be present in the output of C.prototype.toJSON() Reached unreachable code", + "name": "Test default toJSON operation of C", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_true: property foo should be present in the output of D.prototype.toJSON() expected true got false", + "name": "Test default toJSON operation of D", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_unreached: property baz should not be present in the output of E.prototype.toJSON() Reached unreachable code", + "name": "Test default toJSON operation of E", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_true: property foo should be writable expected true got false", + "name": "Test default toJSON operation of F", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_true: property foo should be enumerable expected true got false", + "name": "Test default toJSON operation of G", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_true: property foo should be configurable expected true got false", + "name": "Test default toJSON operation of H", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": null, + "name": "Test default toJSON operation of I", + "properties": {}, + "stack": null, + "status_string": "PASS" + }, + { + "message": null, + "name": "Test default toJSON operation of K", + "properties": {}, + "stack": null, + "status_string": "PASS" + }, + { + "message": null, + "name": "Test toJSON operation of L", + "properties": {}, + "stack": null, + "status_string": "PASS" + }, + { + "message": "assert_equals: expected \"string\" but got \"object\"", + "name": "Test toJSON operation of M", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + }, + { + "message": "assert_true: {\"sequence\":false,\"generic\":null,\"nullable\":false,\"array\":false,\"union\":false,\"idlType\":\"DOMException\"} is not an appropriate return value for the toJSON operation of N expected true got false", + "name": "Test toJSON operation of N", + "properties": {}, + "stack": "(implementation-defined)", + "status_string": "FAIL" + } + ], + "type": "complete" + } +</script> +</body> +</html> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/traverse_inherited_and_consequential_interfaces.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/traverse_inherited_and_consequential_interfaces.html new file mode 100644 index 0000000..1a192919 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterface/traverse_inherited_and_consequential_interfaces.html
@@ -0,0 +1,65 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlDictionary.prototype.traverse_inherited_and_consequential_interfaces()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<pre id=fragments> + interface A : B { }; + interface B : C { }; + interface C { }; + interface D : E { }; + interface E : F { }; + interface F { }; + interface G { }; + interface H { }; + interface I { }; + interface J { }; + + A implements G; + A implements H; + B implements D; + E implements I; + H implements J; +</pre> +<script> + "use strict"; + test(function() { + var interfaces = []; + interfaceFrom('interface A { };').traverse_inherited_and_consequential_interfaces(function(i) { + interfaces.push(i.name); + }); + assert_array_equals(interfaces, ["A"]); + }, 'should return an array that includes itself.'); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A { }; A implements B;"); + assert_throws(new Error(), _ => context.members["A"].traverse_inherited_and_consequential_interfaces(function() {})); + }, "should throw for interfaces which are extended by another interface which wasn't added to the IdlArray."); + + test(function() { + var context = new IdlArray(); + context.add_idls("interface A { };"); + assert_throws(new TypeError(), _ => context.members["A"].traverse_inherited_and_consequential_interfaces()); + }, "should throw if not passed a callback"); + + test(function() { + var context = new IdlArray(); + context.add_idls(document.getElementById('fragments').textContent); + var interfaces = []; + context.members["A"].traverse_inherited_and_consequential_interfaces(function(i) { + interfaces.push(i.name); + }); + assert_array_equals(interfaces, ["C", "B", "F", "E", "I", "D", "A", "G", "H", "J"]); + }, 'should return an array that includes the identifier of the interfaces in the correct order.'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterfaceMember/is_to_json_regular_operation.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterfaceMember/is_to_json_regular_operation.html new file mode 100644 index 0000000..ac923dd5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/IdlInterfaceMember/is_to_json_regular_operation.html
@@ -0,0 +1,42 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>IdlInterfaceMember.prototype.is_to_json_regular_operation()</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script src="../helper.js"></script> +<script> + "use strict"; + test(function() { + var m = memberFrom("readonly attribute DOMString foo"); + assert_false(m.is_to_json_regular_operation()); + }, 'should return false when member is an attribute.'); + + test(function() { + var m = memberFrom("static void foo()"); + assert_false(m.is_to_json_regular_operation()); + }, 'should return false when member is a static operation.'); + + test(function() { + var m = memberFrom("static object toJSON()"); + assert_false(m.is_to_json_regular_operation()); + }, 'should return false when member is a static toJSON operation.'); + + test(function() { + var m = memberFrom("object toJSON()"); + assert_true(m.is_to_json_regular_operation()); + }, 'should return true when member is a regular toJSON operation.'); + + test(function() { + var m = memberFrom("[Foo] object toJSON()"); + assert_true(m.is_to_json_regular_operation()); + }, 'should return true when member is a regular toJSON operation with extensible attributes.'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/basic.html b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/basic.html new file mode 100644 index 0000000..da3c3fa --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/basic.html
@@ -0,0 +1,35 @@ +<!DOCTYPE HTML> +<html> +<head> +<title>idlharness basic</title> +</head> +<body> +<div id="log"></div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script> + "use strict"; + test(function() { + assert_true("IdlArray" in window); + }, 'IdlArray constructor should be a global object'); + test(function() { + assert_true(new IdlArray() instanceof IdlArray); + }, 'IdlArray constructor should be constructible'); + test(function() { + assert_true("WebIDL2" in window); + }, 'WebIDL2 namespace should be a global object'); + test(function() { + assert_equals(typeof WebIDL2.parse, "function"); + }, 'WebIDL2 namespace should have a parse method'); + test(function() { + assert_throws(new TypeError(), function() { WebIDL2.parse("I'm a syntax error"); }); + }, 'WebIDL2 parse method should bail on incorrect WebIDL'); + test(function() { + assert_equals(typeof WebIDL2.parse("interface Foo {};"), "object"); + }, 'WebIDL2 parse method should produce an AST for correct WebIDL'); +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/helper.js b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/helper.js new file mode 100644 index 0000000..a8484af --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/resources/test/tests/idlharness/helper.js
@@ -0,0 +1,23 @@ +"use strict"; + +var dictionaryFrom = interfaceFrom; +function interfaceFrom(i) { + var idl = new IdlArray(); + idl.add_idls(i); + for (var prop in idl.members) { + return idl.members[prop]; + } +} + +function memberFrom(m) { + var idl = new IdlArray(); + idl.add_idls('interface A { ' + m + '; };'); + return idl.members["A"].members[0]; +} + +function typeFrom(type) { + var ast = WebIDL2.parse('interface Foo { ' + type + ' a(); };'); + ast = ast[0]; // get the first fragment + ast = ast.members[0]; // get the first member + return ast.idlType; // get the type of the first field +}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https-expected.txt new file mode 100644 index 0000000..f6a2141 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL fetch() should be intercepted after the client is claimed. promise_test: Unhandled rejection with value: object "TypeError: Cannot read property 'appendChild' of null" +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https.html index 050c1ea..ddb7428 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https.html +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/claim-fetch.https.html
@@ -4,12 +4,11 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/test-helpers.sub.js"></script> -<body> <script> promise_test(function(t) { var frame; - var resource = 'simple.txt'; + var resource = 'resources/simple.txt'; var worker; var scope = 'resources/'; @@ -66,4 +65,3 @@ }, 'fetch() should be intercepted after the client is claimed.') </script> -</body>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.idl b/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.idl deleted file mode 100644 index 531a59cf..0000000 --- a/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.idl +++ /dev/null
@@ -1,104 +0,0 @@ -// ----------------------------------------------------------------------------- -// DOM -// ----------------------------------------------------------------------------- -[Exposed=(Window,Worker)] -interface EventTarget { - void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false); - void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false); - boolean dispatchEvent(Event event); -}; - -callback interface EventListener { - void handleEvent(Event event); -}; - -// ----------------------------------------------------------------------------- -// HTML -// ----------------------------------------------------------------------------- -[TreatNonCallableAsNull] -callback EventHandlerNonNull = any (Event event); -typedef EventHandlerNonNull? EventHandler; - -[TreatNonCallableAsNull] -callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error); -typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; - -[Exposed=Worker] -interface WorkerGlobalScope : EventTarget { - readonly attribute WorkerGlobalScope self; - readonly attribute WorkerLocation location; - readonly attribute WorkerNavigator navigator; - - void importScripts(DOMString... urls); - - attribute OnErrorEventHandler onerror; - - attribute EventHandler onoffline; - attribute EventHandler ononline; -}; - -[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker] -/*sealed*/ interface DedicatedWorkerGlobalScope : WorkerGlobalScope { - void postMessage(any message, optional sequence<Transferable> transfer); - void close(); - attribute EventHandler onmessage; -}; - -WorkerGlobalScope implements WindowTimers; -WorkerGlobalScope implements WindowBase64; - -[NoInterfaceObject, Exposed=(Window,Worker)] -interface WindowTimers { - long setTimeout(Function handler, optional long timeout = 0, any... arguments); - long setTimeout(DOMString handler, optional long timeout = 0, any... arguments); - void clearTimeout(optional long handle = 0); - long setInterval(Function handler, optional long timeout = 0, any... arguments); - long setInterval(DOMString handler, optional long timeout = 0, any... arguments); - void clearInterval(optional long handle = 0); -}; - -[NoInterfaceObject, Exposed=(Window,Worker)] -interface WindowBase64 { - DOMString btoa(DOMString btoa); - DOMString atob(DOMString atob); -}; - -[Exposed=Worker] -interface WorkerNavigator {}; -WorkerNavigator implements NavigatorID; -WorkerNavigator implements NavigatorLanguage; -WorkerNavigator implements NavigatorOnLine; - -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorID { - readonly attribute DOMString appCodeName; // constant "Mozilla" - readonly attribute DOMString appName; - readonly attribute DOMString appVersion; - readonly attribute DOMString platform; - readonly attribute DOMString product; // constant "Gecko" - readonly attribute DOMString userAgent; -}; - -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorLanguage { - readonly attribute DOMString? language; - readonly attribute DOMString[] languages; -}; - -[NoInterfaceObject, Exposed=(Window,Worker)] -interface NavigatorOnLine { - readonly attribute boolean onLine; -}; - -[Exposed=Worker] -interface WorkerLocation { - stringifier readonly attribute USVString href; - readonly attribute USVString origin; - readonly attribute USVString protocol; - readonly attribute USVString host; - readonly attribute USVString hostname; - readonly attribute USVString port; - readonly attribute USVString pathname; - readonly attribute USVString search; - readonly attribute USVString hash; -};
diff --git a/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.worker.js b/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.worker.js index f07669b..fc9f360 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.worker.js +++ b/third_party/WebKit/LayoutTests/external/wpt/workers/interfaces.worker.js
@@ -16,5 +16,5 @@ idlArray.test(); done(); }; -request.open("GET", "interfaces.idl"); +request.open("GET", "/interfaces/dedicated-workers.idl"); request.send();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/workers/name-property.html b/third_party/WebKit/LayoutTests/external/wpt/workers/name-property.html index b16be68..939601e5 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/workers/name-property.html +++ b/third_party/WebKit/LayoutTests/external/wpt/workers/name-property.html
@@ -14,6 +14,12 @@ const worker = new Worker("support/name.js", { name: "my name" }); fetch_tests_from_worker(worker); +const worker2 = new Worker("support/name-as-accidental-global.js"); +fetch_tests_from_worker(worker2); + const sharedWorker = new SharedWorker("support/name.js", { name: "my name" }); fetch_tests_from_worker(sharedWorker); + +const sharedWorker2 = new SharedWorker("support/name-as-accidental-global.js"); +fetch_tests_from_worker(sharedWorker2); </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/workers/support/name-as-accidental-global.js b/third_party/WebKit/LayoutTests/external/wpt/workers/support/name-as-accidental-global.js new file mode 100644 index 0000000..8783a38 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/workers/support/name-as-accidental-global.js
@@ -0,0 +1,8 @@ +"use strict"; + +var name = "something else"; + +// This just makes the test name not "Untitled" +test(() => { }, "Declaring name as an accidental global must not cause a harness error"); + +done();
diff --git a/third_party/WebKit/LayoutTests/external/wpt/workers/support/name.js b/third_party/WebKit/LayoutTests/external/wpt/workers/support/name.js index 0f3537c..7c42c78 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/workers/support/name.js +++ b/third_party/WebKit/LayoutTests/external/wpt/workers/support/name.js
@@ -6,4 +6,13 @@ assert_equals(self.name, "my name") }, `name property value for ${self.constructor.name}`); +test(() => { + self.name = "something new"; + const propDesc = Object.getOwnPropertyDescriptor(self, "name"); + assert_equals(propDesc.value, "something new", "value"); + assert_true(propDesc.configurable, "configurable"); + assert_true(propDesc.writable, "writable"); + assert_true(propDesc.enumerable, "enumerable"); +}, `name property is replaceable for ${self.constructor.name}`); + done();