Update web-platform-tests to revision 3564c21f260aeb6862ceaa56bee9c39b74db3440

This commit is contained in:
WPT Sync Bot 2019-10-03 10:23:35 +00:00
parent 78438113d4
commit 555167ffdb
141 changed files with 3095 additions and 1280 deletions

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
[abspos-block-level-001.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[toogle-abspos-on-relpos-inline-child.html]
expected: FAIL

View file

@ -0,0 +1,4 @@
[background-position-x-interpolation.html]
[background-position-x-interpolation]
expected: FAIL

View file

@ -0,0 +1,4 @@
[background-position-y-interpolation.html]
[background-position-y-interpolation]
expected: FAIL

View file

@ -0,0 +1,4 @@
[box-shadow-interpolation.html]
[box-shadow-interpolation]
expected: FAIL

View file

@ -1,5 +0,0 @@
[css3-text-line-break-baspglwj-094.html]
type: testharness
[ ]
expected: FAIL

View file

@ -1,2 +0,0 @@
[shaping-024.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[shaping-025.html]
expected: FAIL

View file

@ -0,0 +1,7 @@
[trailing-space-position-001.html]
[CSS Test: Positions of trailing collapsible spaces]
expected: FAIL
[CSS Test: Positions of trailing collapsible spaces 2]
expected: FAIL

View file

@ -0,0 +1,2 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -0,0 +1,4 @@
[table-with-border-client-width-height.html]
[Table's clientWidth/Height and OffsetWidth/Height should be the same]
expected: FAIL

View file

@ -2,6 +2,7 @@
[backpressure] [backpressure]
expected: FAIL expected: FAIL
[backpressure.any.sharedworker.html] [backpressure.any.sharedworker.html]
[backpressure] [backpressure]
expected: FAIL expected: FAIL
@ -11,7 +12,32 @@
[backpressure] [backpressure]
expected: FAIL expected: FAIL
[write() should not complete until read relieves backpressure for TextEncoderStream]
expected: FAIL
[additional writes should wait for backpressure to be relieved for class TextDecoderStream]
expected: FAIL
[write() should not complete until read relieves backpressure for TextDecoderStream]
expected: FAIL
[additional writes should wait for backpressure to be relieved for class TextEncoderStream]
expected: FAIL
[backpressure.any.worker.html] [backpressure.any.worker.html]
[backpressure] [backpressure]
expected: FAIL expected: FAIL
[write() should not complete until read relieves backpressure for TextEncoderStream]
expected: FAIL
[additional writes should wait for backpressure to be relieved for class TextDecoderStream]
expected: FAIL
[write() should not complete until read relieves backpressure for TextDecoderStream]
expected: FAIL
[additional writes should wait for backpressure to be relieved for class TextEncoderStream]
expected: FAIL

View file

@ -315,18 +315,12 @@
[<iframe>: combined response Content-Type: text/html */*] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk] [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain] [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL

View file

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

View file

@ -11,3 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,24 +1,5 @@
[open-features-negative-top-left.html] [open-features-negative-top-left.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`] [HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL expected: FAIL
[features "top=-204" should NOT set "top=204"]
expected: TIMEOUT
[features "top=-204.5" should NOT set "top=204"]
expected: TIMEOUT
[features "left=-204" should NOT set "left=204"]
expected: TIMEOUT
[features "top=-0" should NOT set "top=204"]
expected: TIMEOUT
[features "left=-204.5" should NOT set "left=204"]
expected: TIMEOUT
[features "left=-0" should NOT set "left=204"]
expected: TIMEOUT

View file

@ -1,4 +1,4 @@
[img-aspect-ratio.tentative.html] [img-aspect-ratio.html]
[Image width and height attributes are used to infer aspect-ratio] [Image width and height attributes are used to infer aspect-ratio]
expected: FAIL expected: FAIL

View file

@ -1,10 +0,0 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -1,20 +0,0 @@
[invalid-content-type.html]
expected: TIMEOUT
[text/json+blah]
expected: TIMEOUT
[application/json+blah]
expected: TIMEOUT
[application/json+protobuf]
expected: TIMEOUT
[application/blahjson]
expected: TIMEOUT
[image/json]
expected: TIMEOUT
[text/x-json]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[module.html]
expected: TIMEOUT
[JSON modules]
expected: NOTRUN

View file

@ -1,19 +0,0 @@
[non-object.any.html]
[non-object]
expected: FAIL
[non-object.any.worker.html]
[non-object]
expected: FAIL
[non-object.any.serviceworker.html]
[non-object]
expected: FAIL
[non-object.any.sharedworker.html]
[non-object]
expected: FAIL

View file

@ -1,5 +0,0 @@
[parse-error.html]
expected: TIMEOUT
[JSON modules: parse error]
expected: TIMEOUT

View file

@ -1,14 +0,0 @@
[utf8.html]
expected: TIMEOUT
[windows-1252]
expected: NOTRUN
[utf-7]
expected: NOTRUN
[shift-jis]
expected: NOTRUN
[utf-8]
expected: NOTRUN

View file

@ -1,14 +0,0 @@
[valid-content-type.html]
expected: TIMEOUT
[image/svg+json]
expected: NOTRUN
[text/html+json]
expected: NOTRUN
[application/json]
expected: NOTRUN
[text/json]
expected: NOTRUN

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[nested-context-navigations-iframe.html] [nested-context-navigations-iframe.html]
expected: CRASH expected: TIMEOUT
[Test that iframe navigations are not observable by the parent, even after history navigations by the parent] [Test that iframe navigations are not observable by the parent, even after history navigations by the parent]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,31 @@
[abort.any.worker.html]
[abort after connect should do nothing]
expected: FAIL
[abort during handshake should work]
expected: FAIL
[abort before constructing should prevent connection]
expected: FAIL
[abort.any.sharedworker.html]
[abort]
expected: FAIL
[abort.any.html]
[abort after connect should do nothing]
expected: FAIL
[abort during handshake should work]
expected: FAIL
[abort before constructing should prevent connection]
expected: FAIL
[abort.any.serviceworker.html]
[abort]
expected: FAIL

View file

@ -0,0 +1,4 @@
[getViewerPose_emulatedPosition.https.html]
[XRFrame getViewerPose has emulatedPosition set properly.]
expected: FAIL

View file

@ -2,3 +2,6 @@
[document.featurePolicy.features should advertise xr.] [document.featurePolicy.features should advertise xr.]
expected: FAIL expected: FAIL
[document.featurePolicy.features should advertise xr-spatial-tracking.]
expected: FAIL

View file

@ -0,0 +1,8 @@
[webxr_feature_policy.https.html]
expected: ERROR
[Validate isSessionSupported behavior without xr-spatial-tracking policy]
expected: FAIL
[Validate requestSession behavior without xr-spatial-tracking policy]
expected: FAIL

View file

@ -1,5 +1,5 @@
[xrBoundedReferenceSpace_updates.https.html] [xrBoundedReferenceSpace_updates.https.html]
expected: TIMEOUT expected: ERROR
['XRBoundedReferenceSpace updates properly when the changes are applied] ['XRBoundedReferenceSpace updates properly when the changes are applied]
expected: TIMEOUT expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[xrInputSource_emulatedPosition.https.html]
[Poses from XRInputSource.gripSpace have emulatedPosition set properly]
expected: FAIL

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -1,3 +1,4 @@
suggested_reviewers: suggested_reviewers:
- foolip
- jgraham - jgraham
- jugglinmike - jugglinmike

View file

@ -2,6 +2,11 @@ on:
push: push:
branches: branches:
- master - master
pull_request:
paths:
- 'docs/**'
- 'resources/**'
- 'tools/**'
name: Build & Publish Documentation Website name: Build & Publish Documentation Website
jobs: jobs:
website-build-and-publish: website-build-and-publish:

View file

@ -1,17 +0,0 @@
on: pull_request
name: Synchronize the Pull Request Preview
jobs:
update-pr-preview:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
with:
ref: refs/heads/master
fetch-depth: 50
- name: update-pr-preview
uses: ./tools/docker/github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
entrypoint: python
args: tools/ci/update_pr_preview.py https://api.github.com

View file

@ -25,6 +25,7 @@
overflow: auto; overflow: auto;
height: 100px; height: 100px;
width: 100px; width: 100px;
will-change: transform; /* force compositing */
} }
.removed { .removed {
@ -74,4 +75,4 @@
}); });
}); });
}); });
</script> </script>

View file

@ -25,6 +25,7 @@
overflow: auto; overflow: auto;
height: 100px; height: 100px;
width: 100px; width: 100px;
will-change: transform; /* force compositing */
} }
#contents { #contents {
@ -64,4 +65,4 @@
takeScreenshot(); takeScreenshot();
}); });
}); });
</script> </script>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://compat.spec.whatwg.org/#css-gradients-webkit-radial-gradient">
<link rel="help" href="https://www.w3.org/TR/css3-images/#radial-gradients">
<meta name="assert" content="Negative radii values are invalid.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(function() {
assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4%, red, blue)"));
}, '-webkit-radial-gradient accepts comma before color stops.');
test(function() {
assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4% red, blue)"));
}, '-webkit-radial-gradient rejects missing comma before color stops.');
</script>

View file

@ -6,16 +6,16 @@
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script> <script>
test(function() { test(function() {
assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4% red, blue)")); assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% 4%, red, blue)"));
}, '-webkit-radial-gradient accepts positive radii.'); }, '-webkit-radial-gradient accepts positive radii.');
test(function() { test(function() {
assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 0% 4% red, blue)")); assert_true(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 0% 4%, red, blue)"));
}, '-webkit-radial-gradient accepts zero radii.'); }, '-webkit-radial-gradient accepts zero radii.');
test(function() { test(function() {
assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% 4% red, blue)")); assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% 4%, red, blue)"));
assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% -4% red, blue)")); assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, 3% -4%, red, blue)"));
assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% -4% red, blue)")); assert_false(CSS.supports("background-image", "-webkit-radial-gradient(1px 2px, -3% -4%, red, blue)"));
}, '-webkit-radial-gradient rejects negative radii.'); }, '-webkit-radial-gradient rejects negative radii.');
</script> </script>

View file

@ -0,0 +1,24 @@
self.GLOBAL = {
isWindow: function() { return false; },
isWorker: function() { return true; },
};
importScripts("/resources/testharness.js");
self.addEventListener('install', event => {
event.waitUntil((async () => {
try {
await cookieStore.subscribeToChanges([
{ name: 'cookie-name', matchType: 'equals',
url: '/cookie-store/scope/path' }]);
// If the worker enters the "redundant" state, the UA may terminate it
// before all tests have been reported to the client. Stifle errors in
// order to avoid this and ensure all tests are consistently reported.
} catch (err) {}
})());
});
self.addEventListener('message', async event => {
const subscriptions = await cookieStore.getChangeSubscriptions();
event.ports[0].postMessage(subscriptions.length);
});

View file

@ -0,0 +1,37 @@
<!doctype html>
<meta charset="utf-8">
<title>Async Cookies: reset cookie change subscription list</title>
<link rel="help" href="https://github.com/WICG/cookie-store">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/service-workers/service-worker/resources/test-helpers.sub.js">
</script>
<script src='resources/helpers.js'></script>
<script>
const worker_url = 'serviceworker_cookieStore_subscriptions_reset.sub.js';
const scope = '/cookie-store/';
async function getSubscriptionCount(serviceWorker) {
return sendMessageOverChannel('', serviceWorker);
}
promise_test(async t => {
const registration = await service_worker_unregister_and_register(
t, worker_url, scope);
t.add_cleanup(() => registration.unregister());
await wait_for_state(t, registration.installing, 'activated');
assert_equals(await getSubscriptionCount(registration.active), 1,
'subscription count before unregistration');
await registration.unregister();
const new_registration = await navigator.serviceWorker.register(
worker_url, { scope });
t.add_cleanup(() => new_registration.unregister());
await wait_for_state(t, new_registration.installing, 'activated');
assert_equals(await getSubscriptionCount(new_registration.active), 1,
'subscription count after unregistration');
}, `cookiechange subscription list resets across service worker
unregistrations`);
</script>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<style>
.rtl {
direction: rtl
}
.absolute {
position: absolute;
}
.green {
background-color: lime;
padding: 0 1ch;
}
</style>
<body>
<div>
<span class="absolute green">Block-level abspos before inline content</span>
<br>
</div>
<div>
<div>Inline content</div>
<div>Block-level abspos after inline content</div>
</div>
<div class=rtl>
<span class="absolute green">Block-level abspos before inline content</span>
<br>
</div>
<div class=rtl>
<div>Inline content</div>
<div>Block-level abspos after inline content</div>
</div>
</body>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html>
<title>CSS Test: Static positions of block-level absolutely positioned objects</title>
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#static-position">
<link rel="match" href="abspos-block-level-001-ref.html">
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
<style>
.rtl {
direction: rtl
}
.absolute {
position: absolute;
}
.red {
color: red;
padding: 0 1ch;
}
.green {
background-color: lime;
padding: 0 1ch;
}
</style>
<body>
<div>
<div class="absolute green">Block-level abspos before inline content</div>
<span class="red">Inline content</span>
</div>
<div>
<span>Inline content</span>
<div class=absolute>Block-level abspos after inline content</div>
</div>
<br>
<div class=rtl>
<div class="absolute green">Block-level abspos before inline content</div>
<span class="red">Inline content</span>
</div>
<div class=rtl>
<span>Inline content</span>
<div class=absolute>Block-level abspos after inline content</div>
</div>
</body>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=732397">
<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#containing-block-details">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width:50px; height:50px; padding-left:50px; padding-top:50px; background:red;">
<span style="position:relative;">
<div id="victim" style="position:absolute; top:-50px; left:-50px; width:100px; height:100px; background:green;"></div>
</span>
</div>
<script>
document.body.offsetTop;
victim.style.position = "static";
document.body.offsetTop;
victim.style.position = "absolute";
</script>

View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-position">
<meta name="test" content="background-position-x supports animation">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
.parent {
background-position-x: 60px;
}
.target {
background-position-x: 40px;
}
</style>
<body>
<script>
test_interpolation({
property: 'background-position-x',
from: neutralKeyframe,
to: '80px',
}, [
{at: -0.25, expect: '30px'},
{at: 0, expect: '40px'},
{at: 0.25, expect: '50px'},
{at: 0.5, expect: '60px'},
{at: 0.75, expect: '70px'},
{at: 1, expect: '80px'},
{at: 1.25, expect: '90px'},
]);
test_interpolation({
property: 'background-position-x',
from: 'initial',
to: 'right',
}, [
{at: -0.25, expect: '-25%'},
{at: 0, expect: '0%'},
{at: 0.25, expect: '25%'},
{at: 0.5, expect: '50%'},
{at: 0.75, expect: '75%'},
{at: 1, expect: '100%'},
{at: 1.25, expect: '125%'},
]);
test_interpolation({
property: 'background-position-x',
from: 'inherit',
to: '80px',
}, [
{at: -0.25, expect: '55px'},
{at: 0, expect: '60px'},
{at: 0.25, expect: '65px'},
{at: 0.5, expect: '70px'},
{at: 0.75, expect: '75px'},
{at: 1, expect: '80px'},
{at: 1.25, expect: '85px'},
]);
test_interpolation({
property: 'background-position-x',
from: '300px, 400px',
to: '500px, 600px, 700px',
}, [
{at: -0.25, expect: '250px, 350px, 200px, 375px, 225px, 325px'},
{at: 0, expect: '300px, 400px, 300px, 400px, 300px, 400px'},
{at: 0.25, expect: '350px, 450px, 400px, 425px, 375px, 475px'},
{at: 0.5, expect: '400px, 500px, 500px, 450px, 450px, 550px'},
{at: 0.75, expect: '450px, 550px, 600px, 475px, 525px, 625px'},
{at: 1, expect: '500px, 600px, 700px, 500px, 600px, 700px'},
{at: 1.25, expect: '550px, 650px, 800px, 525px, 675px, 775px'},
]);
</script>
</body>

View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-position">
<meta name="test" content="background-position-y supports animation">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
.parent {
background-position-y: 60px;
}
.target {
background-position-y: 40px;
}
</style>
<body>
<script>
test_interpolation({
property: 'background-position-y',
from: neutralKeyframe,
to: '80px',
}, [
{at: -0.25, expect: '30px'},
{at: 0, expect: '40px'},
{at: 0.25, expect: '50px'},
{at: 0.5, expect: '60px'},
{at: 0.75, expect: '70px'},
{at: 1, expect: '80px'},
{at: 1.25, expect: '90px'},
]);
test_interpolation({
property: 'background-position-y',
from: 'initial',
to: 'bottom',
}, [
{at: -0.25, expect: '-25%'},
{at: 0, expect: '0%'},
{at: 0.25, expect: '25%'},
{at: 0.5, expect: '50%'},
{at: 0.75, expect: '75%'},
{at: 1, expect: '100%'},
{at: 1.25, expect: '125%'},
]);
test_interpolation({
property: 'background-position-y',
from: 'inherit',
to: '80px',
}, [
{at: -0.25, expect: '55px'},
{at: 0, expect: '60px'},
{at: 0.25, expect: '65px'},
{at: 0.5, expect: '70px'},
{at: 0.75, expect: '75px'},
{at: 1, expect: '80px'},
{at: 1.25, expect: '85px'},
]);
test_interpolation({
property: 'background-position-y',
from: '300px, 400px',
to: '500px, 600px, 700px',
}, [
{at: -0.25, expect: '250px, 350px, 200px, 375px, 225px, 325px'},
{at: 0, expect: '300px, 400px, 300px, 400px, 300px, 400px'},
{at: 0.25, expect: '350px, 450px, 400px, 425px, 375px, 475px'},
{at: 0.5, expect: '400px, 500px, 500px, 450px, 450px, 550px'},
{at: 0.75, expect: '450px, 550px, 600px, 475px, 525px, 625px'},
{at: 1, expect: '500px, 600px, 700px, 500px, 600px, 700px'},
{at: 1.25, expect: '550px, 650px, 800px, 525px, 675px, 775px'},
]);
</script>
</body>

View file

@ -0,0 +1,171 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#box-shadow">
<meta name="test" content="box-shadow supports animation">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<style>
.parent {
box-shadow: 30px 10px 30px 10px black;
}
.target {
display: inline-block;
width: 60px;
height: 60px;
font-size: 3px;
border: 2px solid;
margin-right: 20px;
margin-bottom: 30px;
color: green;
box-shadow: 10px 30px 10px 30px black;
}
.expected {
margin-right: 40px;
}
</style>
<body>
<script>
test_interpolation({
property: 'box-shadow',
from: neutralKeyframe,
to: '20px 20px 20px 20px black',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 7px 33px 7px 33px'},
{at: 0, expect: 'rgb(0, 0, 0) 10px 30px 10px 30px'},
{at: 0.3, expect: 'rgb(0, 0, 0) 13px 27px 13px 27px'},
{at: 0.6, expect: 'rgb(0, 0, 0) 16px 24px 16px 24px'},
{at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'},
{at: 1.5, expect: 'rgb(0, 0, 0) 25px 15px 25px 15px'},
]);
test_interpolation({
property: 'box-shadow',
from: 'initial',
to: '20px 20px 20px 20px black',
}, [
{at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px -6px'},
{at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px 0px'},
{at: 0.3, expect: 'rgba(0, 0, 0, 0.3) 6px 6px 6px 6px'},
{at: 0.6, expect: 'rgba(0, 0, 0, 0.6) 12px 12px 12px 12px'},
{at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'},
{at: 1.5, expect: 'rgb(0, 0, 0) 30px 30px 30px 30px'},
]);
test_interpolation({
property: 'box-shadow',
from: 'inherit',
to: '20px 20px 20px 20px black',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 33px 7px 33px 7px'},
{at: 0, expect: 'rgb(0, 0, 0) 30px 10px 30px 10px'},
{at: 0.3, expect: 'rgb(0, 0, 0) 27px 13px 27px 13px'},
{at: 0.6, expect: 'rgb(0, 0, 0) 24px 16px 24px 16px'},
{at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'},
{at: 1.5, expect: 'rgb(0, 0, 0) 15px 25px 15px 25px'},
]);
test_interpolation({
property: 'box-shadow',
from: 'unset',
to: '20px 20px 20px 20px black',
}, [
{at: -0.3, expect: 'rgba(0, 0, 0, 0) -6px -6px 0px -6px'},
{at: 0, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px 0px'},
{at: 0.3, expect: 'rgba(0, 0, 0, 0.3) 6px 6px 6px 6px'},
{at: 0.6, expect: 'rgba(0, 0, 0, 0.6) 12px 12px 12px 12px'},
{at: 1, expect: 'rgb(0, 0, 0) 20px 20px 20px 20px'},
{at: 1.5, expect: 'rgb(0, 0, 0) 30px 30px 30px 30px'},
]);
// Test basic functionality, and clipping blur at 0
test_interpolation({
property: 'box-shadow',
from: '15px 10px 5px 6px black',
to: '-15px -10px 25px -4px orange',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px'},
{at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px'},
{at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px 3px'},
{at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px 0px'},
{at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px -4px'},
{at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px -9px'},
]);
// Test with color as first value.
test_interpolation({
property: 'box-shadow',
from: 'black 15px 10px 5px 6px',
to: 'orange -15px -10px 25px -4px',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px'},
{at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px'},
{at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px 3px'},
{at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px 0px'},
{at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px -4px'},
{at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px -9px'},
]);
test_interpolation({
property: 'box-shadow',
from: '15px 10px 5px 6px black inset',
to: '-15px -10px 25px -4px orange inset',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px inset'},
{at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px inset'},
{at: 0.3, expect: 'rgb(77, 50, 0) 6px 4px 11px 3px inset'},
{at: 0.6, expect: 'rgb(153, 99, 0) -3px -2px 17px 0px inset'},
{at: 1, expect: 'rgb(255, 165, 0) -15px -10px 25px -4px inset'},
{at: 1.5, expect: 'rgb(255, 248, 0) -30px -20px 35px -9px inset'},
]);
test_interpolation({
property: 'box-shadow',
from: '15px 10px 5px 6px black',
to: '-15px -10px 25px -4px',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 24px 16px 0px 9px'},
{at: 0, expect: 'rgb(0, 0, 0) 15px 10px 5px 6px'},
{at: 0.3, expect: 'rgb(0, 38, 0) 6px 4px 11px 3px'},
{at: 0.6, expect: 'rgb(0, 77, 0) -3px -2px 17px 0px'},
{at: 1, expect: 'rgb(0, 128, 0) -15px -10px 25px -4px'},
{at: 1.5, expect: 'rgb(0, 192, 0) -30px -20px 35px -9px'},
]);
test_interpolation({
property: 'box-shadow',
from: '10px 10px 10px 10px black',
to: '10px 10px 10px 10px currentColor',
}, [
{at: -0.3, expect: 'rgb(0, 0, 0) 10px 10px 10px 10px'},
{at: 0, expect: 'rgb(0, 0, 0) 10px 10px 10px 10px'},
{at: 0.3, expect: 'rgb(0, 38, 0) 10px 10px 10px 10px'},
{at: 0.6, expect: 'rgb(0, 77, 0) 10px 10px 10px 10px'},
{at: 1, expect: 'rgb(0, 128, 0) 10px 10px 10px 10px'},
{at: 1.5, expect: 'rgb(0, 192, 0) 10px 10px 10px 10px'},
]);
// Test padding shorter lists
test_interpolation({
property: 'box-shadow',
from: '10px 20px rgba(255, 255, 0, 0.5), inset 5px 10em #008000',
to: 'none',
}, [
{at: -0.3, expect: 'rgba(255, 255, 0, 0.65) 13px 26px 0px 0px, rgb(0, 166, 0) 6.5px 39px 0px 0px inset'},
{at: 0, expect: 'rgba(255, 255, 0, 0.5) 10px 20px 0px 0px, rgb(0, 128, 0) 5px 30px 0px 0px inset'},
{at: 0.3, expect: 'rgba(255, 255, 0, 0.353) 7px 14px 0px 0px, rgba(0, 128, 0, 0.7) 3.5px 21px 0px 0px inset'},
{at: 0.6, expect: 'rgba(255, 255, 0, 0.2) 4px 8px 0px 0px, rgba(0, 128, 0, 0.4) 2px 12px 0px 0px inset'},
{at: 1, expect: 'rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset'},
{at: 1.5, expect: 'rgba(0, 0, 0, 0) -5px -10px 0px 0px, rgba(0, 0, 0, 0) -2.5px -15px 0px 0px inset'},
]);
// Test unmatched inset
test_no_interpolation({
property: 'box-shadow',
from: '10px 20px yellow, 5px 10px green',
to: 'inset 5px 10px green, 15px 20px blue'
});
</script>
</body>

View file

@ -9,7 +9,7 @@
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="support/testing-utils.js"></script> <script src="support/testing-utils.js"></script>
<style> <style>
#grid { #inline-grid {
display: inline-grid; display: inline-grid;
} }
</style> </style>

View file

@ -34,8 +34,8 @@ document.fonts.ready.then(()=> {
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(1, auto)", "repeat(1, auto)", "90px", "10px"); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(1, auto)", "repeat(1, auto)", "90px", "10px");
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, auto)", "repeat(2, auto)", ["0px 0px", "repeat(2, 0px)"], ["0px 0px", "repeat(2, 0px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, auto)", "repeat(2, auto)", ["0px 0px", "repeat(2, 0px)"], ["0px 0px", "repeat(2, 0px)"]);
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, auto)", "repeat(2, auto)", "90px 0px", "10px 0px"); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, auto)", "repeat(2, auto)", "90px 0px", "10px 0px");
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]);
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]);
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]);
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]);
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "max-content repeat(2, 25%) 1fr", "100px repeat(2, 25%) 1fr", ["0px 200px 200px 400px", "0px repeat(2, 200px) 400px"], ["100px 150px 150px 200px", "100px repeat(2, 150px) 200px"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "max-content repeat(2, 25%) 1fr", "100px repeat(2, 25%) 1fr", ["0px 200px 200px 400px", "0px repeat(2, 200px) 400px"], ["100px 150px 150px 200px", "100px repeat(2, 150px) 200px"]);

View file

@ -34,8 +34,8 @@ document.fonts.ready.then(()=> {
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(1, auto)", "repeat(1, auto)", "90px", "10px"); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(1, auto)", "repeat(1, auto)", "90px", "10px");
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, auto)", "repeat(2, auto)", ["0px 0px", "repeat(2, 0px)"], ["0px 0px", "repeat(2, 0px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, auto)", "repeat(2, auto)", ["0px 0px", "repeat(2, 0px)"], ["0px 0px", "repeat(2, 0px)"]);
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, auto)", "repeat(2, auto)", "90px 0px", "10px 0px"); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, auto)", "repeat(2, auto)", "90px 0px", "10px 0px");
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]);
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%))", "repeat(2, minmax(50px, calc(50px + 50%))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(2, minmax(50px, calc(50px + 50%)))", "repeat(2, minmax(50px, calc(50px + 50%)))", ["400px 400px", "repeat(2, 400px)"], ["300px 300px", "repeat(2, 300px)"]);
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]);
TestingUtils.testGridTemplateColumnsRows("grid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]); TestingUtils.testGridTemplateColumnsRows("grid", "repeat(5, 10%)", "repeat(5, 10%)", ["80px 80px 80px 80px 80px", "repeat(5, 80px)"], ["60px 60px 60px 60px 60px", "repeat(5, 60px)"]);
TestingUtils.testGridTemplateColumnsRows("emptyGrid", "max-content repeat(2, 25%) 1fr", "100px repeat(2, 25%) 1fr", ["0px 200px 200px 400px", "0px repeat(2, 200px) 400px"], ["100px 150px 150px 200px", "100px repeat(2, 150px) 200px"]); TestingUtils.testGridTemplateColumnsRows("emptyGrid", "max-content repeat(2, 25%) 1fr", "100px repeat(2, 25%) 1fr", ["0px 200px 200px 400px", "0px repeat(2, 200px) 400px"], ["100px 150px 150px 200px", "100px repeat(2, 150px) 200px"]);

View file

@ -0,0 +1,113 @@
<!doctype html>
<link rel="author" title="Aleks Totic" href="mailto:atotic@chromium.org">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/129">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1003373">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
.container {
--size: 100px;
--padding-size: 30px;
--too-big-size: calc(var(--size) - var(--padding-size) + 1px);
--just-right-size: calc(var(--size) - var(--padding-size));
overflow:auto;
width: var(--size);
height: var(--size);
padding-right: var(--padding-size);
padding-bottom: var(--padding-size);
background: #DDD;
box-sizing: border-box;
display: inline-block;
}
.big {
width: var(--too-big-size);
height: var(--too-big-size);
background: green;
}
.small {
width: var(--just-right-size);
height: var(--just-right-size);
background: yellow;
}
.bigfont {
font-size: var(--too-big-size);
font-family: Ahem;
line-height: 1;
color:green;
}
.smallfont {
font-size: var(--just-right-size);
font-family: Ahem;
line-height: 1;
color:yellow;
}
.red {
background:red;
}
</style>
<body onload="runTest()">
<p><span style="background:green">green</span> blocks get scrollbars, <span style="background:yellow">yellow</span> do not.</p>
<p>Block child gets only block padding.</p>
<div class="container" data-scrollbar="v">
<div class="big"></div>
</div>
<div class="container" data-scrollbar="">
<div class="small"></div>
</div>
<p>Inline child gets block and inline padding.</p>
<div class="container bigfont" data-scrollbar="hv">
<span>X</span>
</div>
<div class="container" style="font:36px/1 Ahem;color:green" data-scrollbar="hv">
<span>XX</span><br>XX
</div>
<div class="container smallfont" data-scrollbar="">
<span>X</span>
</div>
<p>Inline block child gets block and inline padding.</p>
<div class="container" data-scrollbar="hv">
<div class="big" style="display:inline-block;vertical-align:bottom;"></div>
</div>
<div class="container" data-scrollbar="">
<div class="small" style="display:inline-block;vertical-align:bottom;"></div>
</div>
<p>Padding applies to linebox, not linebox overflow.</p>
<div class="container" data-scrollbar="">
<div class="small" style="display:inline-block;vertical-align:bottom">
<div style="height:90px;width:80px;background: rgba(0,0,255,0.3)"></div>
</div>
</div>
<script>
function hasHorizontalScrollbar(el) {
return (el.offsetHeight - el.clientHeight) > 0;
}
function hasVerticalScrollbar(el) {
return (el.offsetWidth - el.clientWidth) > 0;
}
// Tests needs to be run after load.
function runTest() {
test(()=> {
let i=0;
for (el of Array.from(document.querySelectorAll(".container"))) {
i++;
el.classList.toggle("red");
let expected = el.getAttribute("data-scrollbar");
if (expected.match(/h/))
assert_true(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`);
else
assert_false(hasHorizontalScrollbar(el), `horizontal scrollbar ${i}`);
if (expected.match(/v/))
assert_true(hasVerticalScrollbar(el), `vertical scrollbar ${i}`);
else
assert_false(hasVerticalScrollbar(el), `vertical scrollbar ${i}`);
el.classList.toggle("red");
}
}, "Container padding is applied approriately to block/inline children.");
}
</script>
</body>

View file

@ -251,13 +251,20 @@
data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59" data-expected-width="338" data-expected-height="182" data-offset-y="11" data-offset-x="59"
> >
</div> </div>
<!-- Just viewbox. Has aspect_ration, but no intrinsic size <!-- Just viewbox. Has aspect_ratio, but no intrinsic size
inline_width defaults to container width --> inline_width defaults to container width -->
<div class="container"> <div class="container">
<img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E" <img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E"
data-expected-width="388" data-expected-height="67" data-offset-y="126" data-offset-x="9" data-expected-width="388" data-expected-height="67" data-offset-y="126" data-offset-x="9"
> >
</div> </div>
<!-- Just viewbox. Has aspect_ratio, but no intrinsic size
inline_width is constrained by left/right, height computed proportionally -->
<div class="container">
<img class="target" style="left:100px;right:100px" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E"
data-expected-width="188" data-expected-height="47" data-offset-y="146" data-offset-x="109"
>
</div>
<!-- Viewbox + svg width. Has aspect_ratio and width. Height is scaled --> <!-- Viewbox + svg width. Has aspect_ratio and width. Height is scaled -->
<div class="container"> <div class="container">
<img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' width='100px' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E" <img class="target" src="data:image/svg+xml,%3Csvg viewBox='0 0 100 10' width='100px' xmlns='http://www.w3.org/2000/svg' %3E%3Crect width='100%' height='100%' style='fill:rgb(0,255,0);'/%3E%3C/svg%3E"

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<title>scroll anchoring accounts for scroll-padding</title>
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/#anchor-node-selection">
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#optimal-viewing-region">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
#scroller {
overflow: auto;
height: 500px;
scroll-padding-top: 200px;
}
#changer {
height: 100px;
}
#content {
height: 1000px;
}
</style>
<div id="scroller">
<div id="changer"></div>
<div id="content"></div>
</div>
<script>
test(() => {
scroller.scrollTop = 50;
changer.style.height = "200px";
assert_equals(scroller.scrollTop, 150, "Shouldn't anchor to #changer, since it's covered by scroll-padding");
});
</script>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<link rel="author" title="David Grogan" href="dgrogan@chromium.org">
<link rel="author" title="Xiaocheng Hu" href="xiaochengh@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94">
<style>
table {
width: 200px;
border-collapse: collapse;
table-layout: auto;
height: 20px;
}
td {
padding: 0px;
background: lime;
outline: 1px solid blue;
}
</style>
<h2>Calc width on col is treated as auto in auto tables</h2>
<table id=theTable>
<col style="width:calc(20% + 80px)">
<tr>
<td data-expected-width=100></td>
<td data-expected-width=100></td>
</tr>
</table>
<script>
checkLayout('#theTable')
</script>

View file

@ -1,10 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Simple calc expression in table layout</title> <title>Simple calc expression in table layout</title>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3482"> <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3482">
<link rel="match" href="calc-percent-plus-0px-ref.html"> <link rel="match" href="calc-percent-plus-0px-ref.html">
<meta name="assert" content="calc(% + 0px) should be handled as calc(%) in table layout."> <meta name="assert" content="calc(% + 0px) should be handled as calc(%) in auto table layout.">
<table border> <table border style="table-layout: auto">
<tr> <tr>
<td style="width: calc(50% + 0px)">x</td> <td style="width: calc(50% + 0px)">x</td>
<td style="width: 100px">y</td> <td style="width: 100px">y</td>

View file

@ -0,0 +1,10 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Simple calc expression in table layout</title>
<table border style="table-layout: fixed; width: 200px">
<tr>
<td style="width: 50%">x</td>
<td>y</td>
<td>z</td>
</tr>
</table>

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Simple calc expression in table layout</title>
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3482">
<link rel="match" href="calc-percent-plus-0px-fixed-ref.html">
<meta name="assert" content="calc(% + 0px) should be handled as calc(%) in fixed table layout.">
<table border style="table-layout: fixed; width: 200px">
<tr>
<td style="width: calc(50% + 0px)">x</td>
<td>y</td>
<td>z</td>
</tr>
</table>

View file

@ -4,6 +4,7 @@
<script src="/resources/check-layout-th.js"></script> <script src="/resources/check-layout-th.js"></script>
<link rel="author" title="David Grogan" href="dgrogan@chromium.org"> <link rel="author" title="David Grogan" href="dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns"> <link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/94">
<style> <style>
table { table {

View file

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

View file

@ -0,0 +1,22 @@
<!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>

View file

@ -2,7 +2,7 @@
<html lang="en" > <html lang="en" >
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<title>CSS3 Text, linebreaks: U+07BE TIBETAN KU RU KHA</title> <title>CSS3 Text, linebreaks: U+0FBE TIBETAN KU RU KHA</title>
<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'> <link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
<link rel='help' href='https://drafts.csswg.org/css-text-3/#line-breaking'> <link rel='help' href='https://drafts.csswg.org/css-text-3/#line-breaking'>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
@ -21,10 +21,10 @@
<div class="test"> <div class="test">
<div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> <div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
<div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> <div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
<div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> <div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
<div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x07BE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div> <div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x0FBE;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
</div> </div>

View file

@ -1,54 +0,0 @@
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="utf-8"/>
<title>CSS3 Text, linebreaks: U+1B5C BALINESE WINDU</title>
<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
<link rel='help' href='https://drafts.csswg.org/css-text-3/#line-breaking'>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<meta name='flags' content='should dom'>
<meta name="assert" content="[Exploratory] The browser will break a line of text after any Unicode character with the BA Other Terminating Punctuation property.">
<style type='text/css'>
.test > div { font-family: monospace; font-size: 25px; width: 50ch; line-height: 30px; }
#breakable2 { white-space: pre-line; }
#breakable3 { white-space: pre-wrap; }
#breakable4 { white-space: break-spaces; }
</style>
</head>
<body>
<div class="test">
<div id="breakable">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
<div id="breakable2">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
<div id="breakable3">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
<div id="breakable4">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&#x1B5C;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
</div>
<!--Notes:
Box height: <span id='debugresult'></span><script>document.getElementById('debugresult').innerHTML = document.getElementById('breakable').offsetHeight;</script>
-->
<script>
test(function() {
assert_true(document.getElementById('breakable').offsetHeight > 35);
}, "white-space:normal");
test(function() {
assert_true(document.getElementById('breakable2').offsetHeight > 35);
}, "white-space:pre-line");
test(function() {
assert_true(document.getElementById('breakable3').offsetHeight > 35);
}, "white-space:pre-wrap");
test(function() {
assert_true(document.getElementById('breakable4').offsetHeight > 35);
}, "white-space:break-spaces");
</script>
<div id='log'></div>
</body>
</html>

View file

@ -14,7 +14,7 @@
background: green; background: green;
font-family: monospace; font-family: monospace;
width: 1ch; width: 1ch;
height: 20em; height: 19em;
} }
#test { #test {
width: 1ch; width: 1ch;

View file

@ -8,7 +8,6 @@
<style> <style>
div { div {
font-size: 4em; font-size: 4em;
margin: 1rem;
width: 4em; width: 4em;
} }
#test { #test {

View file

@ -4,11 +4,10 @@
<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
<link rel="help" href="https://www.w3.org/TR/css-text-3/#overflow-wrap-property"> <link rel="help" href="https://www.w3.org/TR/css-text-3/#overflow-wrap-property">
<link rel="match" href="reference/overflow-wrap-cluster-001-ref.html"> <link rel="match" href="reference/overflow-wrap-cluster-001-ref.html">
<meta name="assert" content="grapheme clusters must stay together as one unit when a line is broken by overflow-wrap:break-word"> <meta name="assert" content="grapheme clusters must stay together as one unit when a line is broken by overflow-wrap:anywhere">
<style> <style>
div { div {
font-size: 4em; font-size: 4em;
margin: 1rem;
width: 4em; width: 4em;
} }
#test { #test {

View file

@ -5,7 +5,6 @@
<style> <style>
div { div {
font-size: 4em; font-size: 4em;
margin: 1rem;
width: 4em; width: 4em;
} }
</style> </style>

View file

@ -5,7 +5,7 @@
<title>CSS Text: getComputedStyle().letterSpacing</title> <title>CSS Text: getComputedStyle().letterSpacing</title>
<link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-letter-spacing"> <link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-letter-spacing">
<meta name="assert" content="letter-spacing computed value is an absolute length."> <meta name="assert" content="letter-spacing computed value is an absolute length.">
<meta name="assert" content="'normal' computes to zero."> <meta name="assert" content="'normal' computes to zero, but the resolved value of 0px is 'normal', so that's the value that is observed.">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script> <script src="/css/support/computed-testcommon.js"></script>
@ -18,7 +18,8 @@
<body> <body>
<div id="target"></div> <div id="target"></div>
<script> <script>
test_computed_value("letter-spacing", "normal", "0px"); test_computed_value("letter-spacing", "normal");
test_computed_value("letter-spacing", "0px", "normal");
test_computed_value("letter-spacing", "10px"); test_computed_value("letter-spacing", "10px");
test_computed_value("letter-spacing", "-20px"); test_computed_value("letter-spacing", "-20px");

View file

@ -11,7 +11,7 @@
font-family: 'csstest_noto'; font-family: 'csstest_noto';
src: url('/fonts/noto/NotoSansMongolian-regular.woff2') format('woff2'); src: url('/fonts/noto/NotoSansMongolian-regular.woff2') format('woff2');
} }
.test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; float:left; } .test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; }
/* the CSS above is not part of the test */ /* the CSS above is not part of the test */
.styled { font-style:italic; } .styled { font-style:italic; }
</style> </style>

View file

@ -11,7 +11,7 @@
font-family: 'csstest_noto'; font-family: 'csstest_noto';
src: url('/fonts/noto/NotoSansMongolian-regular.woff2') format('woff2'); src: url('/fonts/noto/NotoSansMongolian-regular.woff2') format('woff2');
} }
.test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; float:left; } .test, .ref { border: 1px solid #02D7F6; margin: 20px; padding: 10px; width: 3em; font-size: 120px; font-family: "csstest_noto"; writing-mode: vertical-lr; }
/* the CSS above is not part of the test */ /* the CSS above is not part of the test */
.styled { text-decoration:underline; } .styled { text-decoration:underline; }
</style> </style>

View file

@ -7,7 +7,6 @@
<meta name="flags" content=""> <meta name="flags" content="">
<link rel="match" href="reference/text-indent-percentage-002-ref.html"> <link rel="match" href="reference/text-indent-percentage-002-ref.html">
<meta name="assert" content="Percentages in text-indent refer to width of the element's content box, when used in a calc expression"> <meta name="assert" content="Percentages in text-indent refer to width of the element's content box, when used in a calc expression">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style> <style>
body { background: white; } body { background: white; }
section { position: absolute; } section { position: absolute; }
@ -15,7 +14,6 @@ section, div {
border-right: 10px solid white; border-right: 10px solid white;
margin-right: 10px; margin-right: 10px;
padding-right: 10px; padding-right: 10px;
font-family: Ahem;
} }
div { div {
box-sizing: border-box; box-sizing: border-box;

View file

@ -6,42 +6,26 @@
<link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" /> <link rel="author" title="Satoshi Umehara" href="mailto:umehara@est.co.jp" />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[
@font-face {
font-family: 'mplus-1p-regular';
src: url('/fonts/mplus-1p-regular.woff') format('woff');
}
span { span {
font-family: 'mplus-1p-regular';
background-color: cyan; background-color: cyan;
} }
.test { .test {
color: Blue; color: Blue;
font-size: 200%; line-height: 1.1em;
line-height: 1.2em;
} }
.test div { .test div {
display: inline-block; display: inline-block;
margin-bottom: 1em; margin-bottom: .5em;
margin-top: 1em;
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
width: 5em;
} }
]]> ]]>
</style> </style>
<script type="text/javascript">
// <![CDATA[
// Set Font Family to 'IPAMincho'
function setFontFamily () {
var fontName = 'IPAMincho';
var divs = document.getElementsByTagName('div');
var i = 0;
var div;
while (i < divs.length) {
div = divs.item(i);
if (div.className == 'test') {
div.style.fontFamily = fontName;
}
i++;
}
}
// ]]>
</script>
</head> </head>
<body> <body>
<p> <p>
@ -52,12 +36,12 @@
<!-- FULLWIDTH LATIN --> <!-- FULLWIDTH LATIN -->
<div>[<span> </span>]<br />[<span> </span>]</div> <div>[<span> </span>]<br />[<span> </span>]</div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span>”</span><br /><span>”</span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
@ -66,7 +50,7 @@
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
@ -77,7 +61,7 @@
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
@ -85,7 +69,7 @@
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
@ -112,14 +96,14 @@
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span>_</span><br /><span>_</span></div> <div><span>_</span><br /><span>_</span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
@ -146,7 +130,7 @@
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
@ -156,13 +140,12 @@
<div><span>⦆</span><br /><span>⦆</span></div> <!-- RIGHT WHITE PARENTHESIS --> <div><span>⦆</span><br /><span>⦆</span></div> <!-- RIGHT WHITE PARENTHESIS -->
<!-- HALFWIDTH KATAKANA --> <!-- HALFWIDTH KATAKANA -->
<br />
<div><span>。</span><br /><span>。</span></div> <div><span>。</span><br /><span>。</span></div>
<div><span>「</span><br /><span>「</span></div> <div><span>「</span><br /><span>「</span></div>
<div><span>」</span><br /><span>」</span></div> <div><span>」</span><br /><span>」</span></div>
<div><span>、</span><br /><span>、</span></div> <div><span>、</span><br /><span>、</span></div>
<div><span>・</span><br /><span>・</span></div> <div><span>・</span><br /><span>・</span></div>
<br />
<div><span>ヲ</span><br /><span>ヲ</span></div> <div><span>ヲ</span><br /><span>ヲ</span></div>
<div><span>ァ</span><br /><span>ァ</span></div> <div><span>ァ</span><br /><span>ァ</span></div>
<div><span>ィ</span><br /><span>ィ</span></div> <div><span>ィ</span><br /><span>ィ</span></div>
@ -174,7 +157,7 @@
<div><span>ョ</span><br /><span>ョ</span></div> <div><span>ョ</span><br /><span>ョ</span></div>
<div><span>ッ</span><br /><span>ッ</span></div> <div><span>ッ</span><br /><span>ッ</span></div>
<div><span>ー</span><br /><span>ー</span></div> <div><span>ー</span><br /><span>ー</span></div>
<br />
<div><span>ア</span><br /><span>ア</span></div> <div><span>ア</span><br /><span>ア</span></div>
<div><span>イ</span><br /><span>イ</span></div> <div><span>イ</span><br /><span>イ</span></div>
<div><span>ウ</span><br /><span>ウ</span></div> <div><span>ウ</span><br /><span>ウ</span></div>
@ -220,15 +203,14 @@
<div><span>ロ</span><br /><span>ロ</span></div> <div><span>ロ</span><br /><span>ロ</span></div>
<div><span>ワ</span><br /><span>ワ</span></div> <div><span>ワ</span><br /><span>ワ</span></div>
<div><span>ン</span><br /><span>ン</span></div> <div><span>ン</span><br /><span>ン</span></div>
<br />
<div><span>゛</span><br /><span>゛</span></div> <div><span>&nbsp;&#x3099;</span><br /><span>&nbsp;&#x3099;</span></div>
<div><span>゜</span><br /><span>゜</span></div> <div><span>&nbsp;&#x309A;</span><br /><span>&nbsp;&#x309A;</span></div>
<!-- HALFWIDTH HANGUL --> <!-- HALFWIDTH HANGUL -->
<br />
<div>[<span>&#x115F;</span>]<br />[<span>&#x115F;</span>]</div> <!-- HANGUL FILLER --> <div>[<span>&#x115F;</span>]<br />[<span>&#x115F;</span>]</div> <!-- HANGUL FILLER -->
<div><span>ᆨ</span><br /><span>ᆨ</span></div> <!-- HANGUL LETTER KIYEOK --> <div><span>ᆨ</span><br /><span>ᆨ</span></div> <!-- HANGUL LETTER KIYEOK -->
<div><span>ᆩ</span><br /><span>ᆩ</span></div> <!-- HANGUL LETTER SSANGKIYEOK --> <div><span>ㄲ</span><br /><span>ㄲ</span></div> <!-- HANGUL LETTER SSANGKIYEOK -->
<div><span>ᆪ</span><br /><span>ᆪ</span></div> <!-- HANGUL LETTER KIYEOK-SIOS --> <div><span>ᆪ</span><br /><span>ᆪ</span></div> <!-- HANGUL LETTER KIYEOK-SIOS -->
<div><span>ᆫ</span><br /><span>ᆫ</span></div> <!-- HANGUL LETTER NIEUN --> <div><span>ᆫ</span><br /><span>ᆫ</span></div> <!-- HANGUL LETTER NIEUN -->
<div><span>ᆬ</span><br /><span>ᆬ</span></div> <!-- HANGUL LETTER NIEUN-CIEUC --> <div><span>ᆬ</span><br /><span>ᆬ</span></div> <!-- HANGUL LETTER NIEUN-CIEUC -->
@ -242,7 +224,7 @@
<div><span>ᆳ</span><br /><span>ᆳ</span></div> <!-- HANGUL LETTER RIEUL-SIOS --> <div><span>ᆳ</span><br /><span>ᆳ</span></div> <!-- HANGUL LETTER RIEUL-SIOS -->
<div><span>ᆴ</span><br /><span>ᆴ</span></div> <!-- HANGUL LETTER RIEUL-THIEUTH --> <div><span>ᆴ</span><br /><span>ᆴ</span></div> <!-- HANGUL LETTER RIEUL-THIEUTH -->
<div><span>ᆵ</span><br /><span>ᆵ</span></div> <!-- HANGUL LETTER RIEUL-PHIEUPH --> <div><span>ᆵ</span><br /><span>ᆵ</span></div> <!-- HANGUL LETTER RIEUL-PHIEUPH -->
<div><span>&#x111A;</span><br /><span>&#x111A;</span></div> <!-- HANGUL LETTER RIEUL-HIEUH --> <div><span>ㅀ</span><br /><span>ㅀ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH -->
<div><span>ᄆ</span><br /><span>ᄆ</span></div> <!-- HANGUL LETTER MIEUM --> <div><span>ᄆ</span><br /><span>ᄆ</span></div> <!-- HANGUL LETTER MIEUM -->
<div><span>ᄇ</span><br /><span>ᄇ</span></div> <!-- HANGUL LETTER PIEUP --> <div><span>ᄇ</span><br /><span>ᄇ</span></div> <!-- HANGUL LETTER PIEUP -->
<div><span>ᄈ</span><br /><span>ᄈ</span></div> <!-- HANGUL LETTER SSANGPIEUP --> <div><span>ᄈ</span><br /><span>ᄈ</span></div> <!-- HANGUL LETTER SSANGPIEUP -->
@ -257,7 +239,6 @@
<div><span>ᇀ</span><br /><span>ᇀ</span></div> <!-- HANGUL LETTER THIEUTH --> <div><span>ᇀ</span><br /><span>ᇀ</span></div> <!-- HANGUL LETTER THIEUTH -->
<div><span>ᄑ</span><br /><span>ᄑ</span></div> <!-- HANGUL LETTER PHIEUPH --> <div><span>ᄑ</span><br /><span>ᄑ</span></div> <!-- HANGUL LETTER PHIEUPH -->
<div><span>ᇂ</span><br /><span>ᇂ</span></div> <!-- HANGUL LETTER HIEUH --> <div><span>ᇂ</span><br /><span>ᇂ</span></div> <!-- HANGUL LETTER HIEUH -->
<br />
<div><span>ᅡ</span><br /><span>ᅡ</span></div> <!-- HANGUL LETTER A --> <div><span>ᅡ</span><br /><span>ᅡ</span></div> <!-- HANGUL LETTER A -->
<div><span>ᅢ</span><br /><span>ᅢ</span></div> <!-- HANGUL LETTER AE --> <div><span>ᅢ</span><br /><span>ᅢ</span></div> <!-- HANGUL LETTER AE -->
<div><span>ᅣ</span><br /><span>ᅣ</span></div> <!-- HANGUL LETTER YA --> <div><span>ᅣ</span><br /><span>ᅣ</span></div> <!-- HANGUL LETTER YA -->
@ -284,7 +265,6 @@
<div><span>ᅵ</span><br /><span>ᅵ</span></div> <!-- HANGUL LETTER I --> <div><span>ᅵ</span><br /><span>ᅵ</span></div> <!-- HANGUL LETTER I -->
<!-- FULLWIDTH SIGN --> <!-- FULLWIDTH SIGN -->
<br />
<div><span>¢</span><br /><span>¢</span></div> <!-- CENT SIGN --> <div><span>¢</span><br /><span>¢</span></div> <!-- CENT SIGN -->
<div><span>£</span><br /><span>£</span></div> <!-- POUND SIGN --> <div><span>£</span><br /><span>£</span></div> <!-- POUND SIGN -->
<div><span>¬</span><br /><span>¬</span></div> <!-- NOT SIGN --> <div><span>¬</span><br /><span>¬</span></div> <!-- NOT SIGN -->
@ -294,8 +274,7 @@
<div><span>₩</span><br /><span>₩</span></div> <!-- WON SIGN --> <div><span>₩</span><br /><span>₩</span></div> <!-- WON SIGN -->
<!-- HALFWIDTH SIGN --> <!-- HALFWIDTH SIGN -->
<br /> <div><span>│</span><br /><span>│</span></div> <!-- FORMS LIGHT VERTICAL -->
<div><span></span><br /><span></span></div> <!-- FORMS LIGHT VERTICAL -->
<div><span>←</span><br /><span>←</span></div> <!-- LEFTWARDS ARROW --> <div><span>←</span><br /><span>←</span></div> <!-- LEFTWARDS ARROW -->
<div><span>↑</span><br /><span>↑</span></div> <!-- UPWARDS ARROW --> <div><span>↑</span><br /><span>↑</span></div> <!-- UPWARDS ARROW -->
<div><span>→</span><br /><span>→</span></div> <!-- RIGHTWARDS ARROW --> <div><span>→</span><br /><span>→</span></div> <!-- RIGHTWARDS ARROW -->
@ -304,39 +283,26 @@
<div><span>○</span><br /><span>○</span></div> <!-- WHITE CIRCLE --> <div><span>○</span><br /><span>○</span></div> <!-- WHITE CIRCLE -->
<!-- HALFWIDTH LATIN --> <!-- HALFWIDTH LATIN -->
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<!-- FULLWIDTH KANA --> <!-- FULLWIDTH KANA -->
<br />
<div><span>あ</span><br /><span>あ</span></div> <div><span>あ</span><br /><span>あ</span></div>
<div><span>い</span><br /><span>い</span></div> <div><span>い</span><br /><span>い</span></div>
<div><span>う</span><br /><span>う</span></div> <div><span>う</span><br /><span>う</span></div>
<div><span>え</span><br /><span>え</span></div> <div><span>え</span><br /><span>え</span></div>
<div><span>お</span><br /><span>お</span></div> <div><span>お</span><br /><span>お</span></div>
<br />
<div><span>ア</span><br /><span>ア</span></div> <div><span>ア</span><br /><span>ア</span></div>
<div><span>イ</span><br /><span>イ</span></div> <div><span>イ</span><br /><span>イ</span></div>
<div><span>ウ</span><br /><span>ウ</span></div> <div><span>ウ</span><br /><span>ウ</span></div>
<div><span>エ</span><br /><span>エ</span></div> <div><span>エ</span><br /><span>エ</span></div>
<div><span>オ</span><br /><span>オ</span></div> <div><span>オ</span><br /><span>オ</span></div>
</div> </div>
<p id="fontChange" style="display: none;">
If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and apply it.
<button type="button" onclick="setFontFamily()">
Apply
</button>
</p>
<script type="text/javascript">
if (document.getElementById) {
document.getElementById('fontChange').style.display = 'block'
}
</script>
</body> </body>
</html> </html>

View file

@ -11,46 +11,30 @@
<meta name="assert" content="The UA should transform halfwidth character to fullwidth character when text-transform is set to fullwidth." /> <meta name="assert" content="The UA should transform halfwidth character to fullwidth character when text-transform is set to fullwidth." />
<style type="text/css"> <style type="text/css">
<![CDATA[ <![CDATA[
@font-face {
font-family: 'mplus-1p-regular';
src: url('/fonts/mplus-1p-regular.woff') format('woff');
}
.test span { .test span {
text-transform: full-width; text-transform: full-width;
} }
/* the CSS below is not part of the test */ /* the CSS below is not part of the test */
span { span {
font-family: 'mplus-1p-regular';
background-color: cyan; background-color: cyan;
} }
.test { .test {
color: Blue; color: Blue;
font-size: 200%; line-height: 1.1;
line-height: 1.2em;
} }
.test div { .test div {
display: inline-block; display: inline-block;
margin-bottom: 1em; margin-bottom: .5em;
margin-top: 1em;
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
width: 5em;
} }
]]> ]]>
</style> </style>
<script type="text/javascript">
// <![CDATA[
// Set Font Family to 'IPAMincho'
function setFontFamily () {
var fontName = 'IPAMincho';
var divs = document.getElementsByTagName('div');
var i = 0;
var div;
while (i < divs.length) {
div = divs.item(i);
if (div.className == 'test') {
div.style.fontFamily = fontName;
}
i++;
}
}
// ]]>
</script>
</head> </head>
<body> <body>
<p> <p>
@ -61,12 +45,12 @@
<!-- FULLWIDTH LATIN --> <!-- FULLWIDTH LATIN -->
<div>[<span> </span>]<br />[<span> </span>]</div> <div>[<span> </span>]<br />[<span> </span>]</div>
<div><span></span><br /><span>!</span></div> <div><span></span><br /><span>!</span></div>
<div><span></span><br /><span>&quot;</span></div> <div><span></span><br /><span>&quot;</span></div>
<div><span></span><br /><span>#</span></div> <div><span></span><br /><span>#</span></div>
<div><span></span><br /><span>$</span></div> <div><span></span><br /><span>$</span></div>
<div><span></span><br /><span>%</span></div> <div><span></span><br /><span>%</span></div>
<div><span></span><br /><span>&amp;</span></div> <div><span></span><br /><span>&amp;</span></div>
<div><span></span><br /><span>'</span></div> <div><span></span><br /><span>'</span></div>
<div><span></span><br /><span>(</span></div> <div><span></span><br /><span>(</span></div>
<div><span></span><br /><span>)</span></div> <div><span></span><br /><span>)</span></div>
<div><span></span><br /><span>*</span></div> <div><span></span><br /><span>*</span></div>
@ -75,7 +59,7 @@
<div><span></span><br /><span>-</span></div> <div><span></span><br /><span>-</span></div>
<div><span></span><br /><span>.</span></div> <div><span></span><br /><span>.</span></div>
<div><span></span><br /><span>/</span></div> <div><span></span><br /><span>/</span></div>
<br />
<div><span></span><br /><span>0</span></div> <div><span></span><br /><span>0</span></div>
<div><span></span><br /><span>1</span></div> <div><span></span><br /><span>1</span></div>
<div><span></span><br /><span>2</span></div> <div><span></span><br /><span>2</span></div>
@ -86,7 +70,7 @@
<div><span></span><br /><span>7</span></div> <div><span></span><br /><span>7</span></div>
<div><span></span><br /><span>8</span></div> <div><span></span><br /><span>8</span></div>
<div><span></span><br /><span>9</span></div> <div><span></span><br /><span>9</span></div>
<br />
<div><span></span><br /><span>:</span></div> <div><span></span><br /><span>:</span></div>
<div><span></span><br /><span>;</span></div> <div><span></span><br /><span>;</span></div>
<div><span></span><br /><span>&lt;</span></div> <div><span></span><br /><span>&lt;</span></div>
@ -94,7 +78,7 @@
<div><span></span><br /><span>&gt;</span></div> <div><span></span><br /><span>&gt;</span></div>
<div><span></span><br /><span>?</span></div> <div><span></span><br /><span>?</span></div>
<div><span></span><br /><span>@</span></div> <div><span></span><br /><span>@</span></div>
<br />
<div><span></span><br /><span>A</span></div> <div><span></span><br /><span>A</span></div>
<div><span></span><br /><span>B</span></div> <div><span></span><br /><span>B</span></div>
<div><span></span><br /><span>C</span></div> <div><span></span><br /><span>C</span></div>
@ -121,14 +105,14 @@
<div><span></span><br /><span>X</span></div> <div><span></span><br /><span>X</span></div>
<div><span></span><br /><span>Y</span></div> <div><span></span><br /><span>Y</span></div>
<div><span></span><br /><span>Z</span></div> <div><span></span><br /><span>Z</span></div>
<br />
<div><span></span><br /><span>[</span></div> <div><span></span><br /><span>[</span></div>
<div><span></span><br /><span>\</span></div> <div><span></span><br /><span>\</span></div>
<div><span></span><br /><span>]</span></div> <div><span></span><br /><span>]</span></div>
<div><span></span><br /><span>^</span></div> <div><span></span><br /><span>^</span></div>
<div><span>_</span><br /><span>_</span></div> <div><span>_</span><br /><span>_</span></div>
<div><span></span><br /><span>`</span></div> <div><span></span><br /><span>`</span></div>
<br />
<div><span></span><br /><span>a</span></div> <div><span></span><br /><span>a</span></div>
<div><span></span><br /><span>b</span></div> <div><span></span><br /><span>b</span></div>
<div><span></span><br /><span>c</span></div> <div><span></span><br /><span>c</span></div>
@ -155,7 +139,7 @@
<div><span></span><br /><span>x</span></div> <div><span></span><br /><span>x</span></div>
<div><span></span><br /><span>y</span></div> <div><span></span><br /><span>y</span></div>
<div><span></span><br /><span>z</span></div> <div><span></span><br /><span>z</span></div>
<br />
<div><span></span><br /><span>{</span></div> <div><span></span><br /><span>{</span></div>
<div><span></span><br /><span>|</span></div> <div><span></span><br /><span>|</span></div>
<div><span></span><br /><span>}</span></div> <div><span></span><br /><span>}</span></div>
@ -165,13 +149,12 @@
<div><span>⦆</span><br /><span>⦆</span></div> <!-- RIGHT WHITE PARENTHESIS --> <div><span>⦆</span><br /><span>⦆</span></div> <!-- RIGHT WHITE PARENTHESIS -->
<!-- HALFWIDTH KATAKANA --> <!-- HALFWIDTH KATAKANA -->
<br />
<div><span>。</span><br /><span>。</span></div> <div><span>。</span><br /><span>。</span></div>
<div><span>「</span><br /><span>「</span></div> <div><span>「</span><br /><span>「</span></div>
<div><span>」</span><br /><span>」</span></div> <div><span>」</span><br /><span>」</span></div>
<div><span>、</span><br /><span>、</span></div> <div><span>、</span><br /><span>、</span></div>
<div><span>・</span><br /><span>・</span></div> <div><span>・</span><br /><span>・</span></div>
<br />
<div><span>ヲ</span><br /><span>ヲ</span></div> <div><span>ヲ</span><br /><span>ヲ</span></div>
<div><span>ァ</span><br /><span>ァ</span></div> <div><span>ァ</span><br /><span>ァ</span></div>
<div><span>ィ</span><br /><span>ィ</span></div> <div><span>ィ</span><br /><span>ィ</span></div>
@ -183,7 +166,7 @@
<div><span>ョ</span><br /><span>ョ</span></div> <div><span>ョ</span><br /><span>ョ</span></div>
<div><span>ッ</span><br /><span>ッ</span></div> <div><span>ッ</span><br /><span>ッ</span></div>
<div><span>ー</span><br /><span>ー</span></div> <div><span>ー</span><br /><span>ー</span></div>
<br />
<div><span>ア</span><br /><span>ア</span></div> <div><span>ア</span><br /><span>ア</span></div>
<div><span>イ</span><br /><span>イ</span></div> <div><span>イ</span><br /><span>イ</span></div>
<div><span>ウ</span><br /><span>ウ</span></div> <div><span>ウ</span><br /><span>ウ</span></div>
@ -229,15 +212,14 @@
<div><span>ロ</span><br /><span>ロ</span></div> <div><span>ロ</span><br /><span>ロ</span></div>
<div><span>ワ</span><br /><span>ワ</span></div> <div><span>ワ</span><br /><span>ワ</span></div>
<div><span>ン</span><br /><span>ン</span></div> <div><span>ン</span><br /><span>ン</span></div>
<br />
<div><span>゛</span><br /><span>゙</span></div> <div><span>&nbsp;&#x3099;</span><br /><span>&nbsp;゙</span></div>
<div><span>゜</span><br /><span>゚</span></div> <div><span>&nbsp;&#x309A;</span><br /><span>&nbsp;゚</span></div>
<!-- HALFWIDTH HANGUL --> <!-- HALFWIDTH HANGUL -->
<br />
<div>[<span>&#x115F;</span>]<br />[<span>&#xFFA0;</span>]</div> <!-- HANGUL FILLER --> <div>[<span>&#x115F;</span>]<br />[<span>&#xFFA0;</span>]</div> <!-- HANGUL FILLER -->
<div><span>ᆨ</span><br /><span>ᄀ</span></div> <!-- HANGUL LETTER KIYEOK --> <div><span>ᆨ</span><br /><span>ᄀ</span></div> <!-- HANGUL LETTER KIYEOK -->
<div><span></span><br /><span>ᄁ</span></div> <!-- HANGUL LETTER SSANGKIYEOK --> <div><span></span><br /><span>ᄁ</span></div> <!-- HANGUL LETTER SSANGKIYEOK -->
<div><span>ᆪ</span><br /><span>ᆪ</span></div> <!-- HANGUL LETTER KIYEOK-SIOS --> <div><span>ᆪ</span><br /><span>ᆪ</span></div> <!-- HANGUL LETTER KIYEOK-SIOS -->
<div><span>ᆫ</span><br /><span>ᄂ</span></div> <!-- HANGUL LETTER NIEUN --> <div><span>ᆫ</span><br /><span>ᄂ</span></div> <!-- HANGUL LETTER NIEUN -->
<div><span>ᆬ</span><br /><span>ᆬ</span></div> <!-- HANGUL LETTER NIEUN-CIEUC --> <div><span>ᆬ</span><br /><span>ᆬ</span></div> <!-- HANGUL LETTER NIEUN-CIEUC -->
@ -251,7 +233,7 @@
<div><span>ᆳ</span><br /><span>ᆳ</span></div> <!-- HANGUL LETTER RIEUL-SIOS --> <div><span>ᆳ</span><br /><span>ᆳ</span></div> <!-- HANGUL LETTER RIEUL-SIOS -->
<div><span>ᆴ</span><br /><span>ᆴ</span></div> <!-- HANGUL LETTER RIEUL-THIEUTH --> <div><span>ᆴ</span><br /><span>ᆴ</span></div> <!-- HANGUL LETTER RIEUL-THIEUTH -->
<div><span>ᆵ</span><br /><span>ᆵ</span></div> <!-- HANGUL LETTER RIEUL-PHIEUPH --> <div><span>ᆵ</span><br /><span>ᆵ</span></div> <!-- HANGUL LETTER RIEUL-PHIEUPH -->
<div><span>&#x111A;</span><br /><span>ᄚ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH --> <div><span></span><br /><span>ᄚ</span></div> <!-- HANGUL LETTER RIEUL-HIEUH -->
<div><span>ᄆ</span><br /><span>ᄆ</span></div> <!-- HANGUL LETTER MIEUM --> <div><span>ᄆ</span><br /><span>ᄆ</span></div> <!-- HANGUL LETTER MIEUM -->
<div><span>ᄇ</span><br /><span>ᄇ</span></div> <!-- HANGUL LETTER PIEUP --> <div><span>ᄇ</span><br /><span>ᄇ</span></div> <!-- HANGUL LETTER PIEUP -->
<div><span>ᄈ</span><br /><span>ᄈ</span></div> <!-- HANGUL LETTER SSANGPIEUP --> <div><span>ᄈ</span><br /><span>ᄈ</span></div> <!-- HANGUL LETTER SSANGPIEUP -->
@ -266,7 +248,6 @@
<div><span>ᇀ</span><br /><span>ᄐ</span></div> <!-- HANGUL LETTER THIEUTH --> <div><span>ᇀ</span><br /><span>ᄐ</span></div> <!-- HANGUL LETTER THIEUTH -->
<div><span>ᄑ</span><br /><span>ᄑ</span></div> <!-- HANGUL LETTER PHIEUPH --> <div><span>ᄑ</span><br /><span>ᄑ</span></div> <!-- HANGUL LETTER PHIEUPH -->
<div><span>ᇂ</span><br /><span>ᄒ</span></div> <!-- HANGUL LETTER HIEUH --> <div><span>ᇂ</span><br /><span>ᄒ</span></div> <!-- HANGUL LETTER HIEUH -->
<br />
<div><span>ᅡ</span><br /><span>ᅡ</span></div> <!-- HANGUL LETTER A --> <div><span>ᅡ</span><br /><span>ᅡ</span></div> <!-- HANGUL LETTER A -->
<div><span>ᅢ</span><br /><span>ᅢ</span></div> <!-- HANGUL LETTER AE --> <div><span>ᅢ</span><br /><span>ᅢ</span></div> <!-- HANGUL LETTER AE -->
<div><span>ᅣ</span><br /><span>ᅣ</span></div> <!-- HANGUL LETTER YA --> <div><span>ᅣ</span><br /><span>ᅣ</span></div> <!-- HANGUL LETTER YA -->
@ -293,7 +274,6 @@
<div><span>ᅵ</span><br /><span>ᅵ</span></div> <!-- HANGUL LETTER I --> <div><span>ᅵ</span><br /><span>ᅵ</span></div> <!-- HANGUL LETTER I -->
<!-- FULLWIDTH SIGN --> <!-- FULLWIDTH SIGN -->
<br />
<div><span>¢</span><br /><span>¢</span></div> <!-- CENT SIGN --> <div><span>¢</span><br /><span>¢</span></div> <!-- CENT SIGN -->
<div><span>£</span><br /><span>£</span></div> <!-- POUND SIGN --> <div><span>£</span><br /><span>£</span></div> <!-- POUND SIGN -->
<div><span>¬</span><br /><span>¬</span></div> <!-- NOT SIGN --> <div><span>¬</span><br /><span>¬</span></div> <!-- NOT SIGN -->
@ -303,8 +283,7 @@
<div><span>₩</span><br /><span>₩</span></div> <!-- WON SIGN --> <div><span>₩</span><br /><span>₩</span></div> <!-- WON SIGN -->
<!-- HALFWIDTH SIGN --> <!-- HALFWIDTH SIGN -->
<br /> <div><span>│</span><br /><span></span></div> <!-- FORMS LIGHT VERTICAL -->
<div><span></span><br /><span></span></div> <!-- FORMS LIGHT VERTICAL -->
<div><span>←</span><br /><span>←</span></div> <!-- LEFTWARDS ARROW --> <div><span>←</span><br /><span>←</span></div> <!-- LEFTWARDS ARROW -->
<div><span>↑</span><br /><span>↑</span></div> <!-- UPWARDS ARROW --> <div><span>↑</span><br /><span>↑</span></div> <!-- UPWARDS ARROW -->
<div><span>→</span><br /><span>→</span></div> <!-- RIGHTWARDS ARROW --> <div><span>→</span><br /><span>→</span></div> <!-- RIGHTWARDS ARROW -->
@ -313,39 +292,26 @@
<div><span>○</span><br /><span>○</span></div> <!-- WHITE CIRCLE --> <div><span>○</span><br /><span>○</span></div> <!-- WHITE CIRCLE -->
<!-- HALFWIDTH LATIN --> <!-- HALFWIDTH LATIN -->
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<br />
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<div><span></span><br /><span></span></div> <div><span></span><br /><span></span></div>
<!-- FULLWIDTH KANA --> <!-- FULLWIDTH KANA -->
<br />
<div><span>あ</span><br /><span>あ</span></div> <div><span>あ</span><br /><span>あ</span></div>
<div><span>い</span><br /><span>い</span></div> <div><span>い</span><br /><span>い</span></div>
<div><span>う</span><br /><span>う</span></div> <div><span>う</span><br /><span>う</span></div>
<div><span>え</span><br /><span>え</span></div> <div><span>え</span><br /><span>え</span></div>
<div><span>お</span><br /><span>お</span></div> <div><span>お</span><br /><span>お</span></div>
<br />
<div><span>ア</span><br /><span>ア</span></div> <div><span>ア</span><br /><span>ア</span></div>
<div><span>イ</span><br /><span>イ</span></div> <div><span>イ</span><br /><span>イ</span></div>
<div><span>ウ</span><br /><span>ウ</span></div> <div><span>ウ</span><br /><span>ウ</span></div>
<div><span>エ</span><br /><span>エ</span></div> <div><span>エ</span><br /><span>エ</span></div>
<div><span>オ</span><br /><span>オ</span></div> <div><span>オ</span><br /><span>オ</span></div>
</div> </div>
<p id="fontChange" style="display: none;">
If you are unable to see font glyphs for certain characters using the browsers default font, install the <a href="http://ossipedia.ipa.go.jp/ipafont/">IPA Font(http://ossipedia.ipa.go.jp/ipafont/)</a> and apply it.
<button type="button" onclick="setFontFamily()">
Apply
</button>
</p>
<script type="text/javascript">
if (document.getElementById) {
document.getElementById('fontChange').style.display = 'block'
}
</script>
</body> </body>
</html> </html>

View file

@ -11,9 +11,9 @@ div {
font: 20px/1 Ahem; font: 20px/1 Ahem;
} }
#test { #test {
white-space: pre-wrap; white-space: break-spaces;
color: green; color: green;
width: 2ch; width: 1ch;
} }
#ref { #ref {
color: red; color: red;

View file

@ -9,6 +9,7 @@ div {
color: transparent; color: transparent;
font-size: 50px; font-size: 50px;
background: green; background: green;
width: 2em;
} }
</style> </style>

View file

@ -9,6 +9,7 @@ div {
color: transparent; color: transparent;
font-size: 50px; font-size: 50px;
background: green; background: green;
width: 1em;
} }
</style> </style>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<title>CSS Test: Positions of trailing collapsible spaces</title>
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.container > div {
font-family: Ahem;
font-size: 10px;
line-height: 1;
color: gray;
width: 5ch;
outline: 2px solid orange;
margin-bottom: 6px;
position: relative;
}
.pre-wrap {
white-space: pre-wrap;
}
.bg { background: purple; }
.h { outline: 4px red solid; }
</style>
<body>
<section class="container">
<div>1234<span data-line="0" class="h"> </span>567</div>
<div>1234 <span data-line="0" class="h"> </span>567</div>
<div>1234567<span data-line="0" class="h"> </span>567</div>
<div>1234567 <span data-line="0" class="h"> </span>567</div>
<div class="pre-wrap">1234<span data-line="0" class="bg"> </span>567</div>
</section>
<script>
for (let e of document.querySelectorAll('[data-line]')) {
test(() => {
let y = e.offsetTop;
assert_equals(Math.round(y / 10), parseInt(e.dataset.line));
});
}
</script>
</body>

View file

@ -14,7 +14,7 @@ div {
</style> </style>
<p>This test passes if the four characters below are arranged in a two-by-two square. <p>This test passes if the four characters below are arranged in a two-by-two square.
<div lang=ja>字字 字字</div> <div>字字 字字</div>
<!-- <!--
If keep-all has no effect at all, breaks are allowed everywhere, If keep-all has no effect at all, breaks are allowed everywhere,
and the result will be: and the result will be:

View file

@ -15,7 +15,7 @@ span { color: transparent }
</style> </style>
<p>This test passes if the four characters below are arranged in a two-by-two square. <p>This test passes if the four characters below are arranged in a two-by-two square.
<div lang=ja>字字<span></span>字字</div> <div>字字<span></span>字字</div>
<!-- <!--
U+3001 : IDEOGRAPHIC COMMA is made transparent for visual simplicity, U+3001 : IDEOGRAPHIC COMMA is made transparent for visual simplicity,
the change in color has no effect on layout. the change in color has no effect on layout.

View file

@ -16,7 +16,7 @@ div {
</style> </style>
<p>This test passes if the four characters below are arranged in a two-by-two square. <p>This test passes if the four characters below are arranged in a two-by-two square.
<div lang=ja>字字 字字</div> <div>字字 字字</div>
<!-- <!--
If keep-all has no effect at all, breaks are allowed everywhere, If keep-all has no effect at all, breaks are allowed everywhere,
and the result will be: and the result will be:

View file

@ -16,7 +16,7 @@ div {
</style> </style>
<p>This test passes if the four characters below are arranged in a two-by-two square. <p>This test passes if the four characters below are arranged in a two-by-two square.
<div lang=ja>字字 字字</div> <div>字字 字字</div>
<!-- <!--
If keep-all has no effect at all, breaks are allowed everywhere, If keep-all has no effect at all, breaks are allowed everywhere,
and the result will be: and the result will be:

View file

@ -1,67 +1,235 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>rotate interpolation</title> <title>rotate interpolation</title>
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate"> <link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-rotate">
<meta name="assert" content="rotate supports animation.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
</head>
<body>
<script>
test_interpolation({
property: 'rotate',
from: '100deg',
to: '180deg',
}, [
{at: -1, expect: '20deg'},
{at: 0, expect: '100deg'},
{at: 0.125, expect: '110deg'},
{at: 0.875, expect: '170deg'},
{at: 1, expect: '180deg'},
{at: 2, expect: '260deg'}
]);
test_interpolation({ <meta name="assert" content="rotate supports animation.">
property: 'rotate', <script src="/resources/testharness.js"></script>
from: '45deg', <script src="/resources/testharnessreport.js"></script>
to: '-1 1 0 60deg', <script src="/css/support/interpolation-testcommon.js"></script>
}, [ </head>
{at: -1, expect: '0.447214 -0.447214 0.774597 104.478deg'},
{at: 0, expect: '45deg'},
{at: 0.125, expect: '-0.136456 0.136456 0.981203 40.6037deg'},
{at: 0.875, expect: '-0.70246 0.70246 0.114452 53.1994deg'},
{at: 1, expect: '-1 1 0 60deg'},
{at: 2, expect: '-0.637897 0.637897 -0.431479 124.975deg'}
]);
test_interpolation({ <style>
property: 'rotate', .parent {
from: 'none', rotate: 90deg;
to: '7 -8 9 400grad', }
}, [
{at: -1, expect: '7 -8 9 -400grad'},
{at: 0, expect: 'none'},
{at: 0.125, expect: '7 -8 9 50grad'},
{at: 0.875, expect: '7 -8 9 350grad'},
{at: 1, expect: '7 -8 9 400grad'},
{at: 2, expect: '7 -8 9 800grad'}
]);
test_interpolation({ .target {
property: 'rotate', width: 40px;
from: 'none', height: 20px;
to: 'none', background-color: grey;
}, [ rotate: 10deg;
{at: -1, expect: 'none'}, }
{at: 0, expect: 'none'},
{at: 0.125, expect: 'none'}, .expected {
{at: 0.875, expect: 'none'}, background-color: green;
{at: 1, expect: 'none'}, }
{at: 2, expect: 'none'} </style>
]);
</script> <template id="target-template">
</body> <div class="parent">
<div class="target">Text</div>
</div>
</template>
<body>
<script>
test_interpolation({
property: 'rotate',
from: '100deg',
to: '180deg',
}, [
{at: -1, expect: '20deg'},
{at: 0, expect: '100deg'},
{at: 0.125, expect: '110deg'},
{at: 0.875, expect: '170deg'},
{at: 1, expect: '180deg'},
{at: 2, expect: '260deg'}
]);
test_interpolation({
property: 'rotate',
from: '45deg',
to: '-1 1 0 60deg',
}, [
{at: -1, expect: '0.447214 -0.447214 0.774597 104.478deg'},
{at: 0, expect: '45deg'},
{at: 0.125, expect: '-0.136456 0.136456 0.981203 40.6037deg'},
{at: 0.875, expect: '-0.70246 0.70246 0.114452 53.1994deg'},
{at: 1, expect: '-1 1 0 60deg'},
{at: 2, expect: '-0.637897 0.637897 -0.431479 124.975deg'}
]);
test_interpolation({
property: 'rotate',
from: 'none',
to: '7 -8 9 400grad',
}, [
{at: -1, expect: '7 -8 9 -400grad'},
{at: 0, expect: 'none'},
{at: 0.125, expect: '7 -8 9 50grad'},
{at: 0.875, expect: '7 -8 9 350grad'},
{at: 1, expect: '7 -8 9 400grad'},
{at: 2, expect: '7 -8 9 800grad'}
]);
test_interpolation({
property: 'rotate',
from: 'none',
to: 'none',
}, [
{at: -1, expect: 'none'},
{at: 0, expect: 'none'},
{at: 0.125, expect: 'none'},
{at: 0.875, expect: 'none'},
{at: 1, expect: 'none'},
{at: 2, expect: 'none'}
]);
test_interpolation({
property: 'rotate',
from: 'none',
to: '30deg',
}, [
{at: -1, expect: '-30deg'},
{at: 0, expect: 'none'},
{at: 0.25, expect: '7.5deg'},
{at: 0.75, expect: '22.5deg'},
{at: 1, expect: '30deg'},
{at: 2, expect: '60deg'},
]);
test_interpolation({
property: 'rotate',
from: neutralKeyframe,
to: '30deg',
}, [
{at: -1, expect: '-10deg'},
{at: 0, expect: '10deg'},
{at: 0.25, expect: '15deg'},
{at: 0.75, expect: '25deg'},
{at: 1, expect: '30deg'},
{at: 2, expect: '50deg'},
]);
test_interpolation({
property: 'rotate',
from: 'inherit',
to: '270deg',
}, [
{at: -1, expect: '-90deg'},
{at: 0, expect: '90deg'},
{at: 0.25, expect: '135deg'},
{at: 0.75, expect: '225deg'},
{at: 1, expect: '270deg'},
{at: 2, expect: '450deg'},
]);
test_interpolation({
property: 'rotate',
from: 'unset',
to: '30deg',
}, [
{at: -1, expect: '-30deg'},
{at: 0, expect: 'none'},
{at: 0.25, expect: '7.5deg'},
{at: 0.75, expect: '22.5deg'},
{at: 1, expect: '30deg'},
{at: 2, expect: '60deg'},
]);
test_interpolation({
property: 'rotate',
from: '100deg',
to: '-100deg',
}, [
{at: -1, expect: '300deg'},
{at: 0, expect: '100deg'},
{at: 0.25, expect: '50deg'},
{at: 0.75, expect: '-50deg'},
{at: 1, expect: '-100deg'},
{at: 2, expect: '-300deg'},
]);
test_interpolation({
property: 'rotate',
from: '0 1 0 100deg',
to: '0 1 0 -100deg',
}, [
{at: -1, expect: '0 1 0 300deg'},
{at: 0, expect: '0 1 0 100deg'},
{at: 0.25, expect: '0 1 0 50deg'},
{at: 0.75, expect: '0 1 0 -50deg'},
{at: 1, expect: '0 1 0 -100deg'},
{at: 2, expect: '0 1 0 -300deg'},
]);
test_interpolation({
property: 'rotate',
from: '1 -2.5 3.64 100deg',
to: '1 -2.5 3.64 -100deg',
}, [
{at: -1, expect: '1 -2.5 3.64 300deg'},
{at: 0, expect: '1 -2.5 3.64 100deg'},
{at: 0.25, expect: '1 -2.5 3.64 50deg'},
{at: 0.75, expect: '1 -2.5 3.64 -50deg'},
{at: 1, expect: '1 -2.5 3.64 -100deg'},
{at: 2, expect: '1 -2.5 3.64 -300deg'},
]);
test_interpolation({
property: 'rotate',
from: '1 0 0 0deg',
to: '0 1 0 10deg',
}, [
{at: -1, expect: '0 1 0 -10deg'},
{at: 0, expect: '1 0 0 0deg'},
{at: 0.25, expect: '0 1 0 2.5deg'},
{at: 0.75, expect: '0 1 0 7.5deg'},
{at: 1, expect: '0 1 0 10deg'},
{at: 2, expect: '0 1 0 20deg'},
]);
test_interpolation({
property: 'rotate',
from: '1 1 0 90deg',
to: '0 1 1 135deg',
}, [
{at: -1, expect: '0.67 -0.06 -0.74 124.97deg'},
{at: 0, expect: '1 1 0 90deg'},
{at: 0.25, expect: '0.54 0.8 0.26 94.83deg'},
{at: 0.75, expect: '0.17 0.78 0.61 118.68deg'},
{at: 1, expect: '0 1 1 135deg'},
{at: 2, expect: '0.52 -0.29 -0.81 151.04deg'},
]);
test_interpolation({
property: 'rotate',
from: '0 1 0 0deg',
to: '1 0 0 450deg',
}, [
{at: -1, expect: '1 0 0 -450deg'},
{at: 0, expect: '0 1 0 0deg'},
{at: 0.25, expect: '1 0 0 112.5deg'},
{at: 0.75, expect: '1 0 0 337.5deg'},
{at: 1, expect: '1 0 0 450deg'},
{at: 2, expect: '1 0 0 900deg'},
]);
test_interpolation({
property: 'rotate',
from: '1 0 0 450deg',
to: '0 1 0 0deg',
}, [
{at: -1, expect: '1 0 0 900deg'},
{at: 0, expect: '1 0 0 450deg'},
{at: 0.25, expect: '1 0 0 337.5deg'},
{at: 0.75, expect: '1 0 0 112.5deg'},
{at: 1, expect: '0 1 0 0deg'},
{at: 2, expect: '1 0 0 -450deg'},
]);
</script>
</body>
</html> </html>

View file

@ -37,4 +37,9 @@ test(() => {
assert_style_value_equals(expected, CSSNumericValue.parse('max(10px, 10%)')); assert_style_value_equals(expected, CSSNumericValue.parse('max(10px, 10%)'));
}, 'Parsing max() is successful'); }, 'Parsing max() is successful');
test(() => {
const expected = new CSSMathMax(CSS.px(10), new CSSMathMin(CSS.percent(10), CSS.px(20)));
assert_style_value_equals(expected, CSSNumericValue.parse('clamp(10px, 10%, 20px)'));
}, 'Parsing clamp() is successful');
</script> </script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<title>CSSOM Test: Table with border-collapse: collapse's clientWidth/Height</title>
<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#model" />
<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#collapsing-borders" />
<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface" />
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<style>
table {
border-collapse: collapse;
}
td {
border: 8px solid #faa;
}
</style>
<table>
<tbody>
<tr>
<td>a</td>
<td>b</td>
</tr>
<tr>
<td>c</td>
<td>d</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
var table = document.getElementsByTagName('table')[0];
test(function() {
assert_equals(table.clientWidth, table.offsetWidth);
assert_equals(table.clientHeight, table.offsetHeight);
}, "Table's clientWidth/Height and OffsetWidth/Height should be the same");
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<title>CSSOM Test: Table with border-collapse: separate's clientWidth/Height</title>
<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#model" />
<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#separated-borders" />
<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface" />
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<style>
table {
border-collapse: separate;
}
td {
border: 8px solid #faa;
}
</style>
<table>
<tbody>
<tr>
<td>a</td>
<td>b</td>
</tr>
<tr>
<td>c</td>
<td>d</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
var table = document.getElementsByTagName('table')[0];
test(function() {
assert_equals(table.clientWidth, table.offsetWidth);
assert_equals(table.clientHeight, table.offsetHeight);
}, "Table's clientWidth/Height and OffsetWidth/Height should be the same");
</script>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<title>CSSOM Test: Table with its own specified border's clientWidth/Height</title>
<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#model" />
<link rel="help" href="https://www.w3.org/TR/CSS2/tables.html#separated-borders" />
<link rel="help" href="https://drafts.csswg.org/cssom-view/#extension-to-the-element-interface" />
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<style>
table {
border: 8px solid #faa;
}
</style>
<table>
<tbody>
<tr>
<td>a</td>
<td>b</td>
</tr>
<tr>
<td>c</td>
<td>d</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
var table = document.getElementsByTagName('table')[0];
test(function() {
assert_equals(table.clientWidth, table.offsetWidth);
assert_equals(table.clientHeight, table.offsetHeight);
}, "Table's clientWidth/Height and OffsetWidth/Height should be the same");
</script>

View file

@ -0,0 +1,53 @@
<?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>

View file

@ -0,0 +1,55 @@
<?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>

View file

@ -24,6 +24,7 @@
== flexbox-align-self-baseline-horiz-005.xhtml flexbox-align-self-baseline-horiz-005-ref.xhtml == flexbox-align-self-baseline-horiz-005.xhtml flexbox-align-self-baseline-horiz-005-ref.xhtml
== flexbox-align-self-baseline-horiz-006.xhtml flexbox-align-self-baseline-horiz-006-ref.xhtml == flexbox-align-self-baseline-horiz-006.xhtml flexbox-align-self-baseline-horiz-006-ref.xhtml
== flexbox-align-self-baseline-horiz-007.xhtml flexbox-align-self-baseline-horiz-007-ref.xhtml == flexbox-align-self-baseline-horiz-007.xhtml flexbox-align-self-baseline-horiz-007-ref.xhtml
== flexbox-align-self-baseline-horiz-008.xhtml flexbox-align-self-baseline-horiz-008-ref.xhtml
== flexbox-align-self-stretch-vert-001.html flexbox-align-self-stretch-vert-001-ref.html == flexbox-align-self-stretch-vert-001.html flexbox-align-self-stretch-vert-001-ref.html
== flexbox-align-self-stretch-vert-002.html flexbox-align-self-stretch-vert-002-ref.html == flexbox-align-self-stretch-vert-002.html flexbox-align-self-stretch-vert-002-ref.html

View file

@ -8,6 +8,7 @@
== will-change-stacking-context-perspective-1.html green-square-100-by-100-ref.html == will-change-stacking-context-perspective-1.html green-square-100-by-100-ref.html
== will-change-stacking-context-position-1.html green-square-100-by-100-ref.html == will-change-stacking-context-position-1.html green-square-100-by-100-ref.html
== will-change-stacking-context-transform-1.html green-square-100-by-100-ref.html == will-change-stacking-context-transform-1.html green-square-100-by-100-ref.html
== will-change-stacking-context-translate-1.html green-square-100-by-100-ref.html
== will-change-stacking-context-transform-style-1.html green-square-100-by-100-ref.html == will-change-stacking-context-transform-style-1.html green-square-100-by-100-ref.html
== will-change-stacking-context-z-index-1.html green-square-100-by-100-ref.html == will-change-stacking-context-z-index-1.html green-square-100-by-100-ref.html
== will-change-fixpos-cb-contain-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-contain-1.html green-square-100-by-100-offset-ref.html
@ -16,4 +17,5 @@
== will-change-fixpos-cb-perspective-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-perspective-1.html green-square-100-by-100-offset-ref.html
== will-change-fixpos-cb-position-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-position-1.html green-square-100-by-100-offset-ref.html
== will-change-fixpos-cb-transform-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-transform-1.html green-square-100-by-100-offset-ref.html
== will-change-fixpos-cb-translate-1.html green-square-100-by-100-offset-ref.html
== will-change-fixpos-cb-transform-style-1.html green-square-100-by-100-offset-ref.html == will-change-fixpos-cb-transform-style-1.html green-square-100-by-100-offset-ref.html

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS will-change: 'will-change: translate' creates a containing block for fixed positioned elements</title>
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-will-change-1/#will-change">
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
<link rel="match" href="green-square-100-by-100-offset-ref.html">
<meta name="assert" content="If any non-initial value of a property would cause the element to generate a containing block for fixed-position elements, specifying that property in will-change must cause the element to generate a containing block for fixed-position elements.">
<style>
html, body { margin: 0; padding: 0; }
div { width: 100px; height: 100px }
#wc { will-change: translate; margin: 100px 0 0 100px; background: red }
.child { top: 0; left: 0; width: 50px; background: green }
#fixpos { position: fixed }
#abspos { position: absolute; left: 50px }
</style>
<body>
<div id="wc">
<div class="child" id="fixpos">
</div>
<div class="child" id="abspos">
</div>
</div>
</body>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS will-change: 'will-change: translate' creates a stacking context</title>
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-will-change-1/#will-change">
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#propdef-translate">
<link rel="match" href="green-square-100-by-100-ref.html">
<meta name="assert" content="If any non-initial value of a property would create a stacking context on the element, specifying that property in will-change must create a stacking context on the element.">
<style>
html, body { margin: 0; padding: 0; }
div { width: 100px; height: 100px }
#wc { will-change: translate; background: red }
#child { position: absolute; top: 0; left: 0; z-index: -1; background: green }
</style>
<body>
<div id="wc">
<div id="child">
</div>
</div>
</body>

View file

@ -54,7 +54,7 @@ Filename: `{description}.html` or `{test-topic}-###-ref.html`
### SVG test ### SVG test
``` svg ``` xml
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
<title>${1:Test title}</title> <title>${1:Test title}</title>
<metadata> <metadata>
@ -69,7 +69,7 @@ Filename: `{test-topic}-###.svg`
### SVG reference ### SVG reference
``` svg ``` xml
<svg xmlns="http://www.w3.org/2000/svg"> <svg xmlns="http://www.w3.org/2000/svg">
<title>${1:Reference title}</title> <title>${1:Reference title}</title>
${2:Reference content} ${2:Reference content}
@ -97,7 +97,7 @@ Filename: `{test-topic}-###.html`
### SVG ### SVG
``` svg ``` xml
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
<title>${1:Test title}</title> <title>${1:Test title}</title>
<metadata> <metadata>
@ -133,7 +133,7 @@ Filename: `{test-topic}-###-manual.html`
#### SVG #### SVG
``` svg ``` xml
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
<title>${1:Test title}</title> <title>${1:Test title}</title>
<metadata> <metadata>

View file

@ -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));
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) {
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) {
'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}`);
} }

View file

@ -10,7 +10,7 @@ const check_report_format = ([reports, observer]) => {
const report = reports[0]; const report = reports[0];
assert_equals(report.type, "feature-policy-violation"); assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href); assert_equals(report.url, document.location.href);
assert_equals(report.body.featureId, "xr"); assert_equals(report.body.featureId, "xr-spatial-tracking");
assert_equals(report.body.sourceFile, document.location.href); assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.lineNumber, "number"); assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number"); assert_equals(typeof report.body.columnNumber, "number");
@ -23,11 +23,12 @@ promise_test(async t => {
{types: ['feature-policy-violation']}).observe(); {types: ['feature-policy-violation']}).observe();
}); });
try { try {
await navigator.xr.supportsSession('inline'); let supported = await navigator.xr.isSessionSupported('immersive-vr');
} catch (err) { } catch (err) {
// If no XR devices are available, supportsSession() will reject with a // IsSessionSupported should only throw with a feature policy violation;
// NotSupportedError, but the report should be generated anyway. // however, inline does not trigger the feature policy,
assert_equals(err.name, 'NotSupportedError'); // so immersive-vr must be used.
assert_unreached("isSessionSupported should not throw in ReportOnly mode");
} }
check_report_format(await report); check_report_format(await report);
}, "XR report only mode"); }, "XR report only mode");

View file

@ -1 +1 @@
Feature-Policy-Report-Only: xr 'none' Feature-Policy-Report-Only: xr-spatial-tracking 'none'

View file

@ -10,7 +10,7 @@ var check_report_format = (reports, observer) => {
let report = reports[0]; let report = reports[0];
assert_equals(report.type, "feature-policy-violation"); assert_equals(report.type, "feature-policy-violation");
assert_equals(report.url, document.location.href); assert_equals(report.url, document.location.href);
assert_equals(report.body.featureId, "xr"); assert_equals(report.body.featureId, "xr-spatial-tracking");
assert_equals(report.body.sourceFile, document.location.href); assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.lineNumber, "number"); assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number"); assert_equals(typeof report.body.columnNumber, "number");
@ -22,8 +22,9 @@ promise_test(async (t) => {
new ReportingObserver((reports, observer) => resolve([reports, observer]), new ReportingObserver((reports, observer) => resolve([reports, observer]),
{types: ['feature-policy-violation']}).observe(); {types: ['feature-policy-violation']}).observe();
}); });
await promise_rejects(t, 'SecurityError', navigator.xr.supportsSession('inline'), await promise_rejects(t, 'SecurityError',
"XR device access should not be allowed in this document."); navigator.xr.isSessionSupported('immersive-vr'),
"XR spatial tracking should not be allowed in this document.");
const [reports, observer] = await report; const [reports, observer] = await report;
check_report_format(reports, observer); check_report_format(reports, observer);
}, "XR Report Format"); }, "XR Report Format");

Some files were not shown because too many files have changed in this diff Show more