Commit e60ff72c authored by Chromium WPT Sync's avatar Chromium WPT Sync Committed by Commit Bot

Import wpt@beca8464a59440d44a41edbba1989e8d6dc2a38e

Using wpt-import in Chromium 61886adc.
With Chromium commits locally applied on WPT:
03ccd4e9 "html: Move autofocus tests to html/interaction/focus/the-autofocus-attribute/"
c19433ef "Reland "[ChromeDriver] Stop using --ignore-certificate-errors""
afc509ca "[WPT/common/security-features] Fix typo"
df884b61 "[WPT/referrer-policy] Add worker subresource tests"


Note to sheriffs: This CL imports external tests and adds
expectations for those tests; if this CL is large and causes
a few new failures, please fix the failures by adding new
lines to TestExpectations rather than reverting. See:
https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md

Directory owners for changes in this CL:
cbiesinger@chromium.org:
  external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox
foolip@chromium.org, lpz@chromium.org, robertma@chromium.org:
  external/wpt/tools
jsbell@chromium.org:
  external/wpt/encoding

NOAUTOREVERT=true
TBR=foolip

No-Export: true
Change-Id: I82487518a93b5804cdfbc23a1f61ba3e1d0a8b02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1836773Reviewed-by: default avatarWPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#702355}
parent 0b26f34d
...@@ -3189,6 +3189,9 @@ crbug.com/1002514 external/wpt/web-share/share-sharePromise-internal-slot.https. ...@@ -3189,6 +3189,9 @@ crbug.com/1002514 external/wpt/web-share/share-sharePromise-internal-slot.https.
crbug.com/618969 external/wpt/css/css-grid/subgrid/ [ Skip ] crbug.com/618969 external/wpt/css/css-grid/subgrid/ [ Skip ]
# ====== New tests from wpt-importer added here ====== # ====== New tests from wpt-importer added here ======
crbug.com/626703 [ Linux ] external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml [ Failure ]
crbug.com/626703 [ Mac ] external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml [ Failure ]
crbug.com/626703 [ Win ] external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-baseline-horiz-008.xhtml [ Failure ]
crbug.com/626703 [ Win10 ] external/wpt/css/css-text/line-breaking/line-breaking-021.html [ Failure ] crbug.com/626703 [ Win10 ] external/wpt/css/css-text/line-breaking/line-breaking-021.html [ Failure ]
crbug.com/626703 [ Win7 ] external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html [ Timeout ] crbug.com/626703 [ Win7 ] external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html [ Timeout ]
crbug.com/626703 [ Win7 ] external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html [ Timeout ] crbug.com/626703 [ Win7 ] external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html [ Timeout ]
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/"> <link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#hyphens-property"> <link rel="help" href="https://drafts.csswg.org/css-text-3/#hyphens-property">
<meta name="flags" content=""> <meta name="flags" content="">
<link rel="match" href="reference/hyphens-span-001-ref.html"> <link rel="match" href="reference/hyphens-out-of-flow-001-ref.html">
<meta name="assert" content="the presence of an out of flow element has no effect on manual hyhenation"> <meta name="assert" content="the presence of an out of flow element has no effect on manual hyhenation">
<style> <style>
span { span {
......
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Text Test reference</title>
<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
<style>
div {
border: solid orange;
margin: 5px;
width: 6ch;
hyphens: manual;
}
</style>
<p>Test passes if the text in all orange boxes below is identical (including the presence and position of a hyphen).
<div>high&shy;way</div>
<div>high&shy;way</div>
<div>high&shy;way</div>
<div>high&shy;way</div>
<div>high&shy;way</div>
<div>high&shy;way</div>
<div>high&shy;way</div>
...@@ -20,3 +20,5 @@ div { ...@@ -20,3 +20,5 @@ div {
<div>high&shy;way</div> <div>high&shy;way</div>
<div>high&shy;way</div> <div>high&shy;way</div>
<div>high&shy;way</div> <div>high&shy;way</div>
<div>high&shy;way</div>
<div>high&shy;way</div>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!-- Reference case for behavior of 'baseline' and 'last baseline' values
for align-items and align-self for sideways writing modes.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Reftest Reference</title>
<link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com"/>
<style>
.container {
float: left;
display: flex;
writing-mode: sideways-rl;
border: 1px dashed blue;
font: 14px sans-serif;
width: 80px;
}
.reverse { flex-flow: row wrap-reverse; }
.start { align-self: start; }
.end { align-self: end; }
.offset { margin-right: 10px;
margin-left: 3px; }
.lime { background: lime; }
.yellow { background: yellow; }
.orange { background: orange; }
.pink { background: pink; }
.ib { display: inline-block; }
</style>
</head>
<body>
<div class="container">
<div class="lime offset start">one line (first)</div
><div class="yellow offset end">one line (last)</div
><div class="orange offset end">two<br/>lines and offset (last)</div
><div class="pink offset start">offset (first)</div>
</div>
<div class="container reverse">
<div class="lime offset end">one line (first)</div
><div class="offset start"><div class="yellow ib">one line (last)</div
><div class="orange ib">two<br/>lines and offset (last)</div></div
><div class="pink offset end">offset (first)</div>
</div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!-- Testcase for behavior of 'baseline' and 'last baseline' values
for align-items (and align-self, implicitly) for sideways
writing modes. This test confirms non-interference between the
'baseline' and 'last baseline' items.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Test: Baseline alignment of block flex items with 'baseline' and 'last-baseline' values for 'align-self' against each other.</title>
<link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com"/>
<link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#baseline-participation"/>
<link rel="match" href="flexbox-align-self-baseline-horiz-008-ref.xhtml"/>
<style>
.container {
float: left;
display: flex;
writing-mode: sideways-rl;
border: 1px dashed blue;
font: 14px sans-serif;
width: 80px;
}
.reverse { flex-flow: row wrap-reverse; }
.base { align-self: baseline; }
.lastbase { align-self: last baseline; }
.offset { margin-right: 10px;
margin-left: 3px; }
.lime { background: lime; }
.yellow { background: yellow; }
.orange { background: orange; }
.pink { background: pink; }
</style>
</head>
<body>
<div class="container">
<div class="lime base">one line (first)</div>
<div class="yellow lastbase">one line (last)</div>
<div class="orange offset lastbase">two<br/>lines and offset (last)</div>
<div class="pink offset base">offset (first)</div>
</div>
<div class="container reverse">
<div class="lime base">one line (first)</div>
<div class="yellow lastbase">one line (last)</div>
<div class="orange offset lastbase">two<br/>lines and offset (last)</div>
<div class="pink offset base">offset (first)</div>
</div>
</body>
</html>
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
const classes = [ const classes = [
{ {
constructor: TextDecoderStream, name: 'TextDecoderStream',
input: new Uint8Array([65]) input: new Uint8Array([65])
}, },
{ {
constructor: TextEncoderStream, name: 'TextEncoderStream',
input: 'A' input: 'A'
} }
]; ];
...@@ -17,7 +17,7 @@ const microtasksRun = () => new Promise(resolve => step_timeout(resolve, 0)); ...@@ -17,7 +17,7 @@ const microtasksRun = () => new Promise(resolve => step_timeout(resolve, 0));
for (const streamClass of classes) { for (const streamClass of classes) {
promise_test(async () => { promise_test(async () => {
const stream = new streamClass.constructor(); const stream = new self[streamClass.name]();
const writer = stream.writable.getWriter(); const writer = stream.writable.getWriter();
const reader = stream.readable.getReader(); const reader = stream.readable.getReader();
const events = []; const events = [];
...@@ -32,10 +32,10 @@ for (const streamClass of classes) { ...@@ -32,10 +32,10 @@ for (const streamClass of classes) {
assert_array_equals(events, ['paused', 'read', 'write'], assert_array_equals(events, ['paused', 'read', 'write'],
'write should happen after read'); 'write should happen after read');
}, 'write() should not complete until read relieves backpressure for ' + }, 'write() should not complete until read relieves backpressure for ' +
`${streamClass.constructor.name}`); `${streamClass.name}`);
promise_test(async () => { promise_test(async () => {
const stream = new streamClass.constructor(); const stream = new self[streamClass.name]();
const writer = stream.writable.getWriter(); const writer = stream.writable.getWriter();
const reader = stream.readable.getReader(); const reader = stream.readable.getReader();
const events = []; const events = [];
...@@ -56,5 +56,5 @@ for (const streamClass of classes) { ...@@ -56,5 +56,5 @@ for (const streamClass of classes) {
'write2'], 'write2'],
'writes should not happen before read2'); 'writes should not happen before read2');
}, 'additional writes should wait for backpressure to be relieved for ' + }, 'additional writes should wait for backpressure to be relieved for ' +
`class ${streamClass.constructor.name}`); `class ${streamClass.name}`);
} }
...@@ -65,6 +65,8 @@ interface CSSKeywordValue : CSSStyleValue { ...@@ -65,6 +65,8 @@ interface CSSKeywordValue : CSSStyleValue {
attribute USVString value; attribute USVString value;
}; };
typedef (DOMString or CSSKeywordValue) CSSKeywordish;
typedef (double or CSSNumericValue) CSSNumberish; typedef (double or CSSNumericValue) CSSNumberish;
enum CSSNumericBaseType { enum CSSNumericBaseType {
......
...@@ -48,13 +48,13 @@ enum RTCCodecType { ...@@ -48,13 +48,13 @@ enum RTCCodecType {
}; };
dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats { dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats {
unsigned long packetsReceived; unsigned long long packetsReceived;
long packetsLost; long long packetsLost;
double jitter; double jitter;
unsigned long packetsDiscarded; unsigned long long packetsDiscarded;
unsigned long packetsRepaired; unsigned long long packetsRepaired;
unsigned long burstPacketsLost; unsigned long long burstPacketsLost;
unsigned long burstPacketsDiscarded; unsigned long long burstPacketsDiscarded;
unsigned long burstLossCount; unsigned long burstLossCount;
unsigned long burstDiscardCount; unsigned long burstDiscardCount;
double burstLossRate; double burstLossRate;
...@@ -64,6 +64,7 @@ dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats { ...@@ -64,6 +64,7 @@ dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats {
unsigned long framesDropped; unsigned long framesDropped;
unsigned long partialFramesLost; unsigned long partialFramesLost;
unsigned long fullFramesLost; unsigned long fullFramesLost;
}; };
dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {
...@@ -80,12 +81,12 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { ...@@ -80,12 +81,12 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {
boolean voiceActivityFlag; boolean voiceActivityFlag;
DOMHighResTimeStamp lastPacketReceivedTimestamp; DOMHighResTimeStamp lastPacketReceivedTimestamp;
double averageRtcpInterval; double averageRtcpInterval;
unsigned long fecPacketsReceived; unsigned long long fecPacketsReceived;
unsigned long fecPacketsDiscarded; unsigned long long fecPacketsDiscarded;
unsigned long long bytesReceived; unsigned long long bytesReceived;
unsigned long packetsFailedDecryption; unsigned long long packetsFailedDecryption;
unsigned long packetsDuplicated; unsigned long long packetsDuplicated;
record<USVString, unsigned long> perDscpPacketsReceived; record<USVString, unsigned long long> perDscpPacketsReceived;
unsigned long nackCount; unsigned long nackCount;
unsigned long firCount; unsigned long firCount;
unsigned long pliCount; unsigned long pliCount;
...@@ -94,6 +95,8 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { ...@@ -94,6 +95,8 @@ dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {
double jitterBufferDelay; double jitterBufferDelay;
unsigned long long jitterBufferEmittedCount; unsigned long long jitterBufferEmittedCount;
unsigned long long totalSamplesReceived; unsigned long long totalSamplesReceived;
unsigned long long samplesDecodedWithSilk;
unsigned long long samplesDecodedWithCelt;
unsigned long long concealedSamples; unsigned long long concealedSamples;
unsigned long long silentConcealedSamples; unsigned long long silentConcealedSamples;
unsigned long long concealmentEvents; unsigned long long concealmentEvents;
...@@ -125,6 +128,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { ...@@ -125,6 +128,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
DOMString mediaSourceId; DOMString mediaSourceId;
DOMString senderId; DOMString senderId;
DOMString remoteId; DOMString remoteId;
DOMString rid;
DOMHighResTimeStamp lastPacketSentTimestamp; DOMHighResTimeStamp lastPacketSentTimestamp;
unsigned long packetsDiscardedOnSend; unsigned long packetsDiscardedOnSend;
unsigned long long bytesDiscardedOnSend; unsigned long long bytesDiscardedOnSend;
...@@ -143,6 +147,8 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { ...@@ -143,6 +147,8 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
unsigned long framesDiscardedOnSend; unsigned long framesDiscardedOnSend;
unsigned long long qpSum; unsigned long long qpSum;
unsigned long long totalSamplesSent; unsigned long long totalSamplesSent;
unsigned long long samplesEncodedWithSilk;
unsigned long long samplesEncodedWithCelt;
boolean voiceActivityFlag; boolean voiceActivityFlag;
double totalEncodeTime; double totalEncodeTime;
double totalPacketSendDelay; double totalPacketSendDelay;
...@@ -150,7 +156,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { ...@@ -150,7 +156,7 @@ dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
RTCQualityLimitationReason qualityLimitationReason; RTCQualityLimitationReason qualityLimitationReason;
record<DOMString, double> qualityLimitationDurations; record<DOMString, double> qualityLimitationDurations;
unsigned long qualityLimitationResolutionChanges; unsigned long qualityLimitationResolutionChanges;
record<USVString, unsigned long> perDscpPacketsSent; record<USVString, unsigned long long> perDscpPacketsSent;
unsigned long nackCount; unsigned long nackCount;
unsigned long firCount; unsigned long firCount;
unsigned long pliCount; unsigned long pliCount;
...@@ -257,8 +263,8 @@ dictionary RTCDataChannelStats : RTCStats { ...@@ -257,8 +263,8 @@ dictionary RTCDataChannelStats : RTCStats {
}; };
dictionary RTCTransportStats : RTCStats { dictionary RTCTransportStats : RTCStats {
unsigned long packetsSent; unsigned long long packetsSent;
unsigned long packetsReceived; unsigned long long packetsReceived;
unsigned long long bytesSent; unsigned long long bytesSent;
unsigned long long bytesReceived; unsigned long long bytesReceived;
DOMString rtcpTransportStatsId; DOMString rtcpTransportStatsId;
...@@ -302,8 +308,8 @@ dictionary RTCIceCandidatePairStats : RTCStats { ...@@ -302,8 +308,8 @@ dictionary RTCIceCandidatePairStats : RTCStats {
DOMString remoteCandidateId; DOMString remoteCandidateId;
RTCStatsIceCandidatePairState state; RTCStatsIceCandidatePairState state;
boolean nominated; boolean nominated;
unsigned long packetsSent; unsigned long long packetsSent;
unsigned long packetsReceived; unsigned long long packetsReceived;
unsigned long long bytesSent; unsigned long long bytesSent;
unsigned long long bytesReceived; unsigned long long bytesReceived;
DOMHighResTimeStamp lastPacketSentTimestamp; DOMHighResTimeStamp lastPacketSentTimestamp;
...@@ -353,6 +359,12 @@ dictionary RTCIceServerStats : RTCStats { ...@@ -353,6 +359,12 @@ dictionary RTCIceServerStats : RTCStats {
double totalRoundTripTime; double totalRoundTripTime;
}; };
dictionary RTCReceiverVideoTrackAttachmentStats : RTCVideoReceiverStats {
};
dictionary RTCReceiverAudioTrackAttachmentStats : RTCAudioReceiverStats {
};
partial dictionary RTCCodecStats { partial dictionary RTCCodecStats {
DOMString implementation; DOMString implementation;
}; };
......
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions bevelled (reference)</title>
</head>
<body>
<p>Test passes is you see a blue rectangle <em>above</em> a green rectangle, separated by a horizontal bar.</p>
<p>
<math>
<mfrac>
<mspace width="100px" height="30px" style="background: lightblue"></mspace>
<mspace width="100px" height="30px" style="background: lightgreen"></mspace>
</mfrac>
</math>
</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fractions bevelled</title>
<link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.mfrac">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
<link rel="help" href="https://github.com/mathml-refresh/mathml/issues/29">
<meta name="assert" content="Verify that the MathML3 bevelled attribute is ignored.">
<link rel="match" href="frac-legacy-bevelled-attribute.tentative-ref.html">
</head>
<body>
<p>Test passes is you see a blue rectangle <em>above</em> a green rectangle, separated by a horizontal bar.</p>
<p>
<math>
<mfrac bevelled="true">
<mspace width="100px" height="30px" style="background: lightblue"></mspace>
<mspace width="100px" height="30px" style="background: lightgreen"></mspace>
</mfrac>
</math>
</p>
<script src="/mathml/support/feature-detection.js"></script>
<script>
MathMLFeatureDetection.ensure_for_match_reftest("has_mspace");
MathMLFeatureDetection.ensure_for_match_reftest("has_mfrac");
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>mfenced element</title>
</head>
<body>
<p>Test passes if you see 6 green squares and no red.</p>
<p>
<math>
<mrow>
<mspace width="30px" height="30px" style="background: green"></mspace>
<mspace width="30px" height="30px" style="background: lightgreen"></mspace>
<mspace width="30px" height="30px" style="background: green"></mspace>
</mrow>
<mrow>
<mspace width="30px" height="30px" style="background: lightgreen"></mspace>
<mspace width="30px" height="30px" style="background: green"></mspace>
<mspace width="30px" height="30px" style="background: lightgreen"></mspace>
</mrow>
</math>
</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>mfenced element</title>
<link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.mfenced">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#new-display-math-value">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#mathml-elements">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#horizontally-group-sub-expressions-mrow">
<meta name="assert" content="Verify that the mfenced element is not supported.">
<link rel="match" href="legacy-mfenced-element-001-ref.html">
</head>
<body>
<p>Test passes if you see 6 green squares and no red.</p>
<p>
<math style="color: red">
<mfenced>
<mspace width="30px" height="30px" style="background: green"></mspace>
<mspace width="30px" height="30px" style="background: lightgreen"></mspace>
<mspace width="30px" height="30px" style="background: green"></mspace>
</mfenced>
<mfenced open="{" close="]" separators="?!">
<mspace width="30px" height="30px" style="background: lightgreen"></mspace>
<mspace width="30px" height="30px" style="background: green"></mspace>
<mspace width="30px" height="30px" style="background: lightgreen"></mspace>
</mfenced>
</math>
</p>
<script src="/mathml/support/feature-detection.js"></script>
<script>
MathMLFeatureDetection.ensure_for_match_reftest("has_mspace");
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>msub/msup/msubsup/mmultiscripts subscriptshift and superscriptshift attributes (reference)</title>
</head>
<body>
<p>Test passes if the green squares are not about 300px away from the blue squares.</p>
<p>
<math>
<mmultiscripts>
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mprescripts/>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</mmultiscripts>
<msub>
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</msub>
<msup>
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</msup>
<msubsup>
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</msubsup>
</math>
</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>msub/msup/msubsup/mmultiscripts subscriptshift and superscriptshift attributes</title>
<link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.msub">
<link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.msup">
<link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.msunsup">
<link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.mmultiscripts">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#subscripts-and-superscripts-msub-msup-msubsup">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#prescripts-and-tensor-indices-mmultiscripts">
<link rel="match" href="subsup-legacy-scriptshift-attributes-001.tentative-ref.html">
</head>
<body>
<p>Test passes if the green squares are not about 300px away from the blue squares.</p>
<p>
<math>
<mmultiscripts subscriptshift="300px" superscriptshift="300px">
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mprescripts/>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</mmultiscripts>
<msub subscriptshift="300px">
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</msub>
<msup superscriptshift="300px">
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</msup>
<msubsup subscriptshift="300px" superscriptshift="300px">
<mspace width="30px" height="30px" style="background: blue;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
<mspace width="10px" height="10px" style="background: lightgreen;"></mspace>
</msubsup>
</math>
</p>
<script src="/mathml/support/feature-detection.js"></script>
<script>
MathMLFeatureDetection.ensure_for_match_reftest("has_mspace");
MathMLFeatureDetection.ensure_for_match_reftest("has_msubsup");
MathMLFeatureDetection.ensure_for_match_reftest("has_mmultiscripts");
</script>
</body>
</html>
This is a testharness.js-based test.
PASS Element.attachShadow must create an instance of ShadowRoot for autonomous custom elements
PASS Element.attachShadow must create an instance of ShadowRoot for undefined autonomous custom elements
PASS Element.attachShadow for an autonomous custom element with disabledFeatures=["shadow"] should throw a NotSupportedError
PASS Element.attachShadow for a customized built-in element with disabledFeatures=["shadow"] should throw a NotSupportedError
FAIL Element.attachShadow for a custom element with disabledFeatures=["SHADOW"] should not throw a NotSupportedError Failed to execute 'attachShadow' on 'Element': attachShadow() is disabled by disabledFeatures static field.
PASS Element.attachShadow must throw a NotSupportedError for customized built-in elements
Harness: the test ran to completion.
...@@ -20,7 +20,7 @@ test(() => { ...@@ -20,7 +20,7 @@ test(() => {
test(() => { test(() => {
class ShadowDisabledElement extends HTMLElement { class ShadowDisabledElement extends HTMLElement {
static disabledFeatures = ['shadow']; static get disabledFeatures() { return ['shadow']; }
} }
// No definition. attachShadow() should succeed. // No definition. attachShadow() should succeed.
...@@ -47,7 +47,7 @@ test(() => { ...@@ -47,7 +47,7 @@ test(() => {
test(() => { test(() => {
class ShadowDisabledHeadingElement extends HTMLHeadingElement { class ShadowDisabledHeadingElement extends HTMLHeadingElement {
static disabledFeatures = ['shadow']; static get disabledFeatures() { return ['shadow']; }
} }
// No definition. attachShadow() should succeed. // No definition. attachShadow() should succeed.
...@@ -77,7 +77,7 @@ test(() => { ...@@ -77,7 +77,7 @@ test(() => {
test(() => { test(() => {
class CapitalShadowDisabledElement extends HTMLElement { class CapitalShadowDisabledElement extends HTMLElement {
static disabledFeatures = ['SHADOW']; static get disabledFeatures() { return ['shadow']; }
} }
customElements.define('capital-shadow-disabled-element', CapitalShadowDisabledElement); customElements.define('capital-shadow-disabled-element', CapitalShadowDisabledElement);
......
# wpt-submissions.live is a public deployment of WPT, maintained in an external
# repository. It automatically fetches and deploys all refs in the WPT
# repository which match a certain pattern. This behavior is intended to be
# used for pull requests so that reviewers can preview changes without running
# the WPT server locally.
#
# This script facilitates the service by maintaining the git refs. It creates
# and updates refs in response to GitHub events. It does this automatically for
# pull requests from GitHub users who have "collaborator" access permissions to
# the WPT repository. It also does this for any pull requests which bear the
# `pull-request-has-preview` label. Collaborators can add or remove this label
# to enable or disable the preview for submissions from non-collaborators.
#
# Although the script relies on a secret access token, it is *not* limited to
# use for pull requests from trusted collaborators due to the way GitHub
# Actions are executed:
#
# > # Pull request events for forked repositories
# >
# > [...]
# >
# > ## Pull request with base and head branches in different repositories
# >
# > The base repository receives a `pull_request` event where the SHA is the
# > latest commit of base branch and ref is the base branch.
#
# https://developer.github.com/actions/managing-workflows/workflow-configuration-options/#pull-request-events-for-forked-repositories
import json
import logging
import os
import sys
import requests
active_label = 'pull-request-has-preview'
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class Status(object):
SUCCESS = 0
FAIL = 1
NEUTRAL = 0
def request(url, method_name, data=None, json_data=None, ignore_body=False):
github_token = os.environ.get('GITHUB_TOKEN')
kwargs = {
'headers': {
'Authorization': 'token {}'.format(github_token),
'Accept': 'application/vnd.github.machine-man-preview+json'
}
}
method = getattr(requests, method_name)
logger.info('Issuing request: {} {}'.format(method_name.upper(), url))
if json_data is not None or data is not None:
kwargs['json'] = json_data
kwargs['data'] = data
resp = method(url, **kwargs)
resp.raise_for_status()
if not ignore_body:
return resp.json()
def resource_exists(url):
try:
request(url, 'get', ignore_body=True)
except requests.HTTPError as exception:
if exception.response.status_code == 404:
return False
raise
return True
class GitHub(object):
def __init__(self, api_root, owner, repo):
self.api_root = api_root
self.owner = owner
self.repo = repo
def is_collaborator(self, login):
return resource_exists(
'{}/repos/{}/{}/collaborators/{}'.format(
self.api_root, self.owner, self.repo, login
)
)
def ref_exists(self, ref):
return resource_exists(
'{}/repos/{}/{}/git/refs/{}'.format(
self.api_root, self.owner, self.repo, ref
)
)
def create_ref(self, ref, sha):
data = {
'ref': 'refs/{}'.format(ref),
'sha': sha
}
url = '{}/repos/{}/{}/git/refs'.format(
self.api_root, self.owner, self.repo
)
logger.info('Creating ref "{}" as {}'.format(ref, sha))
request(url, 'post', json_data=data)
def update_ref(self, ref, sha):
data = {
'force': True,
'sha': sha
}
url = '{}/repos/{}/{}/git/refs/{}'.format(
self.api_root, self.owner, self.repo, ref
)
logger.info('Updating ref "{}" as {}'.format(ref, sha))
request(url, 'patch', json_data=data)
def delete_ref(self, ref):
url = '{}/repos/{}/{}/git/refs/{}'.format(
self.api_root, self.owner, self.repo, ref
)
logger.info('Deleting ref "{}"'.format(ref))
try:
request(url, 'delete', ignore_body=True)
except requests.HTTPError as exception:
if exception.response.status_code != 404:
raise
logger.info(
'Attempted to delete non-existent ref: {}'.format(ref)
)
def set_ref(self, ref, sha):
if self.ref_exists(ref):
self.update_ref(ref, sha)
else:
self.create_ref(ref, sha)
def add_label(self, pr_number, label_name):
data = {
'labels': [label_name]
}
url = '{}/repos/{}/{}/issues/{}/labels'.format(
self.api_root, self.owner, self.repo, pr_number
)
logger.info('Adding label')
request(url, 'post', json_data=data)
def remove_label(self, pr_number, label_name):
url = '{}/repos/{}/{}/issues/{}/labels/{}'.format(
self.api_root, self.owner, self.repo, pr_number, label_name
)
logger.info('Removing label')
try:
request(url, 'delete')
except requests.HTTPError as exception:
if exception.response.status_code != 404:
raise
logger.info(
'Attempted to remove non-existent label: {}'.format(label_name)
)
def main(api_root):
with open(os.environ['GITHUB_EVENT_PATH']) as handle:
event = json.load(handle)
logger.info(json.dumps(event, indent=2))
if 'pull_request' not in event:
logger.info('Unexpected event data')
return Status.FAIL
owner, repo = os.environ['GITHUB_REPOSITORY'].split('/', 1)
github = GitHub(api_root, owner, repo)
action = event['action']
pr_number = event['pull_request']['number']
ref_open = 'prs-open/gh-{}'.format(pr_number)
ref_labeled = 'prs-labeled-for-preview/gh-{}'.format(pr_number)
sha = event['pull_request']['head']['sha']
login = event['pull_request']['user']['login']
has_label = any([
label['name'] == active_label
for label in event['pull_request']['labels']
])
target_label = event.get('label', {}).get('name')
if action == 'closed':
if has_label:
github.remove_label(pr_number, active_label)
# Removing a label from a GitHub Action will not trigger another
# Workflow, so the corresponding ref must be deleted while processing
# the "closed" action.
#
# > An action can't trigger other workflows. For example, a push,
# > deployment, or any task performed within an action with the
# > provided `GITHUB_TOKEN` will not trigger a workflow listening on
# > push, deploy, or any other supported action triggers.
#
# https://developer.github.com/actions/managing-workflows/workflow-configuration-options/
github.delete_ref(ref_open)
return Status.SUCCESS
elif action in ('opened', 'reopened') and has_label:
github.set_ref(ref_open, sha)
github.set_ref(ref_labeled, sha)
elif action in ('opened', 'reopened') and github.is_collaborator(login):
github.add_label(pr_number, active_label)
# Removing a label from a GitHub Action will not trigger another
# Workflow, so the corresponding ref must be created while processing
# the "opened" and "reopened" actions.
#
# > An action can't trigger other workflows. For example, a push,
# > deployment, or any task performed within an action with the
# > provided `GITHUB_TOKEN` will not trigger a workflow listening on
# > push, deploy, or any other supported action triggers.
#
# https://developer.github.com/actions/managing-workflows/workflow-configuration-options/
github.set_ref(ref_open, sha)
github.set_ref(ref_labeled, sha)
elif action == 'labeled' and target_label == active_label:
github.set_ref(ref_labeled, sha)
elif action == 'unlabeled' and target_label == active_label:
github.delete_ref(ref_labeled)
elif action == 'synchronize' and has_label:
github.set_ref(ref_open, sha)
github.set_ref(ref_labeled, sha)
else:
return Status.NEUTRAL
return Status.SUCCESS
if __name__ == '__main__':
code = main(sys.argv[1])
assert isinstance(code, int)
sys.exit(code)
# This image for WebKitGTK tests is based on Debian stable to ensure binary
# compatibility with ToT/trunk built-products from build.webkit.org bots.
# See https://github.com/web-platform-tests/wpt/pull/18595#issuecomment-537267080
FROM debian:10
# No interactive frontend during docker build
ENV DEBIAN_FRONTEND=noninteractive \
DEBCONF_NONINTERACTIVE_SEEN=true
# Install general requirements not in the base image
RUN apt-get -qqy update \
&& apt-get -qqy install \
bzip2 \
ca-certificates \
dbus-x11 \
earlyoom \
fluxbox \
gdebi \
git \
locales \
pulseaudio \
python \
python-pip \
python-virtualenv \
tzdata \
sudo \
unzip \
wget \
xvfb \
git-core
# Configure buster-wpt-webkit-updates repository
RUN apt-key adv --fetch-keys https://webkitgtk.org/debian/apt.key
RUN printf 'deb [arch=amd64] https://webkitgtk.org/debian buster-wpt-webkit-updates main' \
> /etc/apt/sources.list.d/webkitgtk.list
RUN printf 'Package: *\nPin: origin webkitgtk.org\nPin-Priority: 1999' \
> /etc/apt/preferences.d/99webkitgtk
# Update and upgrade
RUN apt-get update \
&& apt-get -y upgrade
# Install webkit packages from https://webkitgtk.org/debian
RUN apt-get install -y -t buster-wpt-webkit-updates webkit2gtk-driver
# Set the timezone
ENV TZ "UTC"
RUN echo "${TZ}" > /etc/timezone \
&& dpkg-reconfigure --frontend noninteractive tzdata
# Set the locale
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
&& dpkg-reconfigure --frontend noninteractive locales
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN useradd test \
--shell /bin/bash \
--create-home \
&& usermod -a -G sudo test \
&& echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \
&& echo 'test:secret' | chpasswd
ENV SCREEN_WIDTH 1280
ENV SCREEN_HEIGHT 1024
ENV SCREEN_DEPTH 24
ENV DISPLAY :99.0
USER test
WORKDIR /home/test
# Remove information on how to use sudo on login
RUN sudo echo ""
RUN mkdir -p /home/test/artifacts
RUN mkdir -p /home/test/bin
ENV PATH="/home/test/bin:/home/test/.local/bin:${PATH}"
WORKDIR /home/test/
COPY .bashrc /home/test/.bashrc
COPY start.sh /home/test/start.sh
COPY retry.py /home/test/bin/retry
This docker images is used for testing Chrome, Firefox and running other tasks
on Taskcluster. When any of the files in this directory change, the images must
be updated as well. To do this, assuming you have docker installed:
In this directory, run
```sh
docker build -t <tag> .
docker push <tag>
```
Then update the `image` specified in the project's .taskcluster.yml file.
To update the image used for WebKitGTK:
```sh
docker build -f Dockerfile.webkitgtk -t <tag> .
docker push <tag>
```
(This image is not yet used in .taskcluster.yml.)
#!/bin/bash #!/bin/bash
# This script is embedded in the docker image, and so the image must be updated when changes
# to the script are made. To do this, assuming you have docker installed:
# In tools/docker/ :
# docker build .
# docker ps # and look for the id of the image you just built
# docker tag <image> <tag>
# docker push <tag>
# Update the `image` specified in the project's .taskcluster.yml file
set -ex set -ex
REMOTE=${1:-https://github.com/web-platform-tests/wpt} REMOTE=${1:-https://github.com/web-platform-tests/wpt}
......
...@@ -8,8 +8,6 @@ deps = ...@@ -8,8 +8,6 @@ deps =
pytest-cov pytest-cov
mock mock
hypothesis hypothesis
# `requests` is required by `update_pr_preview.py`
requests
commands = pytest {posargs} commands = pytest {posargs}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment