Diff
Modified: trunk/LayoutTests/ChangeLog (282749 => 282750)
--- trunk/LayoutTests/ChangeLog 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/ChangeLog 2021-09-20 16:19:04 UTC (rev 282750)
@@ -1,3 +1,24 @@
+2021-09-20 Aditya Keerthi <akeer...@apple.com>
+
+ Implement input-security
+ https://bugs.webkit.org/show_bug.cgi?id=184510
+ rdar://79979992
+
+ Reviewed by Antti Koivisto.
+
+ Add a test to verify the interaction between the new input-security
+ property, and the existing -webkit-text-security property. See the
+ WebCore ChangeLog for more details.
+
+ Rebaselined existing tests to account for the existence of a new CSS
+ property.
+
+ * fast/css/computed-text-security-for-input-security-expected.txt: Added.
+ * fast/css/computed-text-security-for-input-security.html: Added.
+ * platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
+ * platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
+ * platform/ios/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
+
2021-09-20 Chris Dumez <cdu...@apple.com>
Unskip COOP tests that were marked as flaky as they have no recent failures on the bots.
Added: trunk/LayoutTests/fast/css/computed-text-security-for-input-security-expected.txt (0 => 282750)
--- trunk/LayoutTests/fast/css/computed-text-security-for-input-security-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/css/computed-text-security-for-input-security-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,74 @@
+This test verifies that the value of input-security correctly adjusts the value of -webkit-text-security for sensitive text inputs.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+"input-security: auto, -webkit-text-security: none" on an <input type=password>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "disc"
+
+"input-security: auto, -webkit-text-security: disc" on an <input type=password>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "disc"
+
+"input-security: auto, -webkit-text-security: circle" on an <input type=password>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "disc"
+
+"input-security: auto, -webkit-text-security: square" on an <input type=password>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "disc"
+
+"input-security: none, -webkit-text-security: none" on an <input type=password>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "none"
+
+"input-security: none, -webkit-text-security: disc" on an <input type=password>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "none"
+
+"input-security: none, -webkit-text-security: circle" on an <input type=password>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "none"
+
+"input-security: none, -webkit-text-security: square" on an <input type=password>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "none"
+
+"input-security: auto, -webkit-text-security: none" on an <input type=text>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "none"
+
+"input-security: auto, -webkit-text-security: disc" on an <input type=text>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "disc"
+
+"input-security: auto, -webkit-text-security: circle" on an <input type=text>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "circle"
+
+"input-security: auto, -webkit-text-security: square" on an <input type=text>
+PASS computedStyle.inputSecurity is "auto"
+PASS computedStyle.webkitTextSecurity is "square"
+
+"input-security: none, -webkit-text-security: none" on an <input type=text>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "none"
+
+"input-security: none, -webkit-text-security: disc" on an <input type=text>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "disc"
+
+"input-security: none, -webkit-text-security: circle" on an <input type=text>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "circle"
+
+"input-security: none, -webkit-text-security: square" on an <input type=text>
+PASS computedStyle.inputSecurity is "none"
+PASS computedStyle.webkitTextSecurity is "square"
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/css/computed-text-security-for-input-security.html (0 => 282750)
--- trunk/LayoutTests/fast/css/computed-text-security-for-input-security.html (rev 0)
+++ trunk/LayoutTests/fast/css/computed-text-security-for-input-security.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src=""
+ <style>
+ </style>
+</head>
+<body>
+ <input type="password" id="passwordInput">
+ <input type="text" id="textInput">
+</body>
+<script>
+
+function runTest(input, inputSecurity, textSecurity)
+{
+ inputType = input.type;
+
+ debug(`\n\"input-security: ${ inputSecurity }, -webkit-text-security: ${ textSecurity }\" on an <input type=${ inputType }>`);
+
+ input.style.inputSecurity = inputSecurity;
+ input.style.webkitTextSecurity = textSecurity;
+
+ computedStyle = window.getComputedStyle(input);
+ shouldBeEqualToString("computedStyle.inputSecurity", inputSecurity);
+
+ expectedTextSecurity = (() => {
+ if (inputType === "password")
+ return (inputSecurity === "auto") ? "disc" : "none";
+
+ return textSecurity;
+ })();
+
+ shouldBeEqualToString("computedStyle.webkitTextSecurity", expectedTextSecurity);
+}
+
+addEventListener("load", () => {
+ description("This test verifies that the value of input-security correctly adjusts the value of -webkit-text-security for sensitive text inputs.");
+
+ for (const input of [ passwordInput, textInput ]) {
+ for (const inputSecurity of [ "auto", "none" ]) {
+ for (const textSecurity of [ "none", "disc", "circle", "square" ]) {
+ runTest(input, inputSecurity, textSecurity);
+ }
+ }
+ }
+
+ debug("");
+});
+
+</script>
+</html>
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (282749 => 282750)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-20 16:19:04 UTC (rev 282750)
@@ -1,3 +1,27 @@
+2021-09-20 Aditya Keerthi <akeer...@apple.com>
+
+ Implement input-security
+ https://bugs.webkit.org/show_bug.cgi?id=184510
+ rdar://79979992
+
+ Reviewed by Antti Koivisto.
+
+ Add web platform tests for input-security.
+
+ * web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
+ * web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input-expected.html: Added.
+ * web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input.html: Added.
+ * web-platform-tests/css/css-ui/input-security-computed-expected.txt: Added.
+ * web-platform-tests/css/css-ui/input-security-computed.html: Added.
+ * web-platform-tests/css/css-ui/input-security-non-sensitive-elements-expected.html: Added.
+ * web-platform-tests/css/css-ui/input-security-non-sensitive-elements.html: Added.
+ * web-platform-tests/css/css-ui/input-security-none-sensitive-text-input-expected.html: Added.
+ * web-platform-tests/css/css-ui/input-security-none-sensitive-text-input.html: Added.
+ * web-platform-tests/css/css-ui/input-security-parsing-expected.txt: Added.
+ * web-platform-tests/css/css-ui/input-security-parsing.html: Added.
+ * web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
+ * web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
+
2021-09-20 Tim Nguyen <n...@apple.com>
Import inert/inert-on-non-html.tentative.html from WPT
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt (282749 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -149,6 +149,7 @@
PASS image-orientation
PASS image-rendering
PASS inline-size
+PASS input-security
PASS inset-block-end
PASS inset-block-start
PASS inset-inline-end
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input-expected.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input-expected.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input-expected.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<title>Test that input-security: auto obscures text in sensitive text inputs</title>
+<style>
+ input { input-security: auto; }
+</style>
+<input type="password" value="abcdefg">
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test that input-security: auto obscures text in sensitive text inputs</title>
+<link rel="help" href=""
+<link rel="author" title="Apple Inc">
+<link rel="match" href=""
+<style>
+ input { input-security: auto; }
+</style>
+<input type="password" value="hunter2">
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-computed-expected.txt (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-computed-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-computed-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,6 @@
+
+PASS Property input-security value 'initial'
+PASS Property input-security value 'inherit'
+PASS Property input-security value 'auto'
+PASS Property input-security value 'none'
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-computed.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-computed.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-computed.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<title>Test computed values for input-security</title>
+<link rel="help" href=""
+<link rel="author" title="Apple Inc">
+<script src=""
+<script src=""
+<script src=""
+<style>
+ #outer { input-security: none; }
+</style>
+<div id="outer">
+ <div id="target"></div>
+</div>
+<div id="noInputSecurity"></div>
+<script>
+test_computed_value('input-security', 'initial', 'auto');
+test_computed_value('input-security', 'inherit', 'none');
+test_computed_value('input-security', 'auto', 'auto');
+test_computed_value('input-security', 'none', 'none');
+
+// When input-security isn't specified, it should return 'auto'
+assert_equals(getComputedStyle(noInputSecurity).inputSecurity, 'auto');
+</script>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements-expected.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements-expected.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements-expected.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<title>Test that input-security: auto does not obscure text in elements that do not accept sensitive text input</title>
+<style>
+ * { input-security: none; }
+</style>
+<input type="email" value="web...@webkit.org">
+<input type="number" value="2021">
+<input type="search" value="test">
+<input type="tel" value="555-5555">
+<input type="text" value="test">
+<input type="url" value="webkit.org">
+<div>Test</div>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>Test that input-security: auto does not obscure text in elements that do not accept sensitive text input</title>
+<link rel="help" href=""
+<link rel="author" title="Apple Inc">
+<link rel="match" href=""
+<style>
+ * { input-security: auto; }
+</style>
+<input type="email" value="web...@webkit.org">
+<input type="number" value="2021">
+<input type="search" value="test">
+<input type="tel" value="555-5555">
+<input type="text" value="test">
+<input type="url" value="webkit.org">
+<div>Test</div>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input-expected.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input-expected.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input-expected.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,3 @@
+<!DOCTYPE html>
+<title>Test that input-security: none does not obscure text in sensitive text inputs</title>
+<input type="text" value="hunter2">
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test that input-security: none does not obscure text in sensitive text inputs</title>
+<link rel="help" href=""
+<link rel="author" title="Apple Inc">
+<link rel="match" href=""
+<style>
+ input { input-security: none; }
+</style>
+<input type="password" value="hunter2">
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-parsing-expected.txt (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-parsing-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-parsing-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,12 @@
+
+PASS e.style['input-security'] = "initial" should set the property value
+PASS e.style['input-security'] = "inherit" should set the property value
+PASS e.style['input-security'] = "unset" should set the property value
+PASS e.style['input-security'] = "revert" should set the property value
+PASS e.style['input-security'] = "auto" should set the property value
+PASS e.style['input-security'] = "none" should set the property value
+PASS e.style['input-security'] = "auto auto" should not set the property value
+PASS e.style['input-security'] = "disc" should not set the property value
+PASS e.style['input-security'] = "circle" should not set the property value
+PASS e.style['input-security'] = "square" should not set the property value
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-parsing.html (0 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-parsing.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-ui/input-security-parsing.html 2021-09-20 16:19:04 UTC (rev 282750)
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>Test parsing for input-security</title>
+<link rel="help" href=""
+<link rel="author" title="Apple Inc">
+<script src=""
+<script src=""
+<script src=""
+<div id="target"></div>
+<script>
+test_valid_value('input-security', 'initial');
+test_valid_value('input-security', 'inherit');
+test_valid_value('input-security', 'unset');
+test_valid_value('input-security', 'revert');
+test_valid_value('input-security', 'auto');
+test_valid_value('input-security', 'none');
+
+test_invalid_value('input-security', 'auto auto');
+test_invalid_value('input-security', 'disc');
+test_invalid_value('input-security', 'circle');
+test_invalid_value('input-security', 'square');
+</script>
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt (282749 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -9,5 +9,5 @@
PASS invalid property does not appear
FAIL Shorthands aren't serialized if there are other properties with different logical groups in between assert_equals: expected "margin-top: 10px; margin-right: 10px; margin-left: 10px; margin-inline-start: 10px; margin-block: 10px; margin-inline-end: 10px; margin-bottom: 10px;" but got "margin: 10px; margin-inline: 10px; margin-block: 10px;"
PASS Shorthands _are_ serialized if there are no other properties with different logical groups in between
-FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0,
0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none;
border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-f
amily: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: 400; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: norma
l; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavior-y
: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-re
ndering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-skip-ink: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transi
tion-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webki
t-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-rep
eat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-transform-style: flat; -webkit-user-drag: au
to; -webkit-user-modify: read-only; -webkit-user-select: text;"
+FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0,
0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none;
border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-fa
mily: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: 400; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; input-security: auto; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; j
ustify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto;
overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-ou
tside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-skip-ink: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-
property: all; transition-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ord
inal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webk
it-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-transform-style: flat;
-webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt (282749 => 282750)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -1,8 +1,8 @@
PASS getComputedStyle returns no style for detached element
-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 392
-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 392
-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 392
-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 392
+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 393
+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 393
+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 393
+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 393
PASS getComputedStyle returns no style for shadow tree outside of flattened tree
Modified: trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt (282749 => 282750)
--- trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -9,5 +9,5 @@
PASS invalid property does not appear
FAIL Shorthands aren't serialized if there are other properties with different logical groups in between assert_equals: expected "margin-top: 10px; margin-right: 10px; margin-left: 10px; margin-inline-start: 10px; margin-block: 10px; margin-inline-end: 10px; margin-bottom: 10px;" but got "margin: 10px; margin-inline: 10px; margin-block: 10px;"
PASS Shorthands _are_ serialized if there are no other properties with different logical groups in between
-FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0,
0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none;
border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-f
amily: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: normal; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: no
rmal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavio
r-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape
-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-timing-function: ease; t
ranslate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -we
bkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask-bo
x-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-overflow-scrolling: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-touch-callout: default; -webkit-transform-style: flat; -webkit-user-drag
: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"
+FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0,
0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none;
border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-fa
mily: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: normal; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; input-security: auto; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto
; justify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: aut
o; overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape
-outside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-tim
ing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webkit-box-or
ient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: str
etch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-overflow-scrolling: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-touch-callout: default; -webkit-transform-style: fl
at; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"
Modified: trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt (282749 => 282750)
--- trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -9,5 +9,5 @@
PASS invalid property does not appear
FAIL Shorthands aren't serialized if there are other properties with different logical groups in between assert_equals: expected "margin-top: 10px; margin-right: 10px; margin-left: 10px; margin-inline-start: 10px; margin-block: 10px; margin-inline-end: 10px; margin-bottom: 10px;" but got "margin: 10px; margin-inline: 10px; margin-block: 10px;"
PASS Shorthands _are_ serialized if there are no other properties with different logical groups in between
-FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0,
0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none;
border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-f
amily: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: 400; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: norma
l; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavior-y
: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-re
ndering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-skip-ink: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transi
tion-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webki
t-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-rep
eat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-overflow-scrolling: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-touch-call
out: default; -webkit-transform-style: flat; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"
+FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0,
0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none;
border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-fa
mily: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: 400; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; input-security: auto; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; j
ustify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto;
overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-ou
tside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-skip-ink: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-
property: all; transition-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ord
inal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webk
it-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-overflow-scrolling: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: norma
l; -webkit-touch-callout: default; -webkit-transform-style: flat; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"
Modified: trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt (282749 => 282750)
--- trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt 2021-09-20 16:19:04 UTC (rev 282750)
@@ -1,8 +1,8 @@
PASS getComputedStyle returns no style for detached element
-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 394
-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 394
-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 394
-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 394
+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 395
+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 395
+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 395
+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 395
PASS getComputedStyle returns no style for shadow tree outside of flattened tree
Modified: trunk/Source/WebCore/ChangeLog (282749 => 282750)
--- trunk/Source/WebCore/ChangeLog 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/ChangeLog 2021-09-20 16:19:04 UTC (rev 282750)
@@ -1,3 +1,92 @@
+2021-09-20 Aditya Keerthi <akeer...@apple.com>
+
+ Implement input-security
+ https://bugs.webkit.org/show_bug.cgi?id=184510
+ rdar://79979992
+
+ Reviewed by Antti Koivisto.
+
+ Implement the input-security property as specified in
+ https://drafts.csswg.org/css-ui-4/#input-security.
+
+ The property provides authors a way to enable/disable obscuring of text
+ in sensitive text inputs, such as <input type=password>. While the
+ property is similar to the non-standard -webkit-text-security property
+ at a surface level, there are several differences that make input-security
+ more than a simple alias/synonym.
+
+ 1. -webkit-text-security is an inherited property, input-security is not.
+
+ 2. input-security only applies to sensitive text inputs, whereas
+ -webkit-text-security applies to everything but sensitive text inputs.
+ The latter is due to the presence of an !important rule in the UA
+ stylesheet that prevented authors from disabling/controlling obscuring.
+
+ 3. -webkit-text-security supports additional values that control the
+ appearance of obscured characters. input-security is a simple toggle.
+
+ However, while an alias is not possible, the implementation can still
+ leverage the existing text security logic under the hood.
+
+ Tests: fast/css/computed-text-security-for-input-security.html
+ imported/w3c/web-platform-tests/css/css-ui/input-security-auto-sensitive-text-input.html
+ imported/w3c/web-platform-tests/css/css-ui/input-security-computed.html
+ imported/w3c/web-platform-tests/css/css-ui/input-security-non-sensitive-elements.html
+ imported/w3c/web-platform-tests/css/css-ui/input-security-none-sensitive-text-input.html
+ imported/w3c/web-platform-tests/css/css-ui/input-security-parsing.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
+ * css/CSSPrimitiveValueMappings.h:
+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
+ (WebCore::CSSPrimitiveValue::operator InputSecurity const):
+ * css/CSSProperties.json:
+ * css/html.css:
+ (input[type="password"]):
+
+ Remove the -webkit-text-security rule, as password inputs are obscured
+ by default (input-security: auto), and to support disabling of
+ obscuring.
+
+ (input:-webkit-autofill-strong-password, input:-webkit-autofill-strong-password-viewable):
+
+ Use input-security to make the characters viewable, as
+ -webkit-text-security no longer has an effect on password inputs in
+ the UA stylesheet. Note that the property already had no effect in
+ author stylesheets.
+
+ * css/parser/CSSParserFastPaths.cpp:
+ (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
+ (WebCore::CSSParserFastPaths::isKeywordPropertyID):
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::rareNonInheritedDataChangeRequiresLayout):
+ * rendering/style/RenderStyle.h:
+ (WebCore::RenderStyle::inputSecurity const):
+ (WebCore::RenderStyle::setInputSecurity):
+ (WebCore::RenderStyle::initialInputSecurity):
+ * rendering/style/RenderStyleConstants.h:
+ * rendering/style/StyleRareNonInheritedData.cpp:
+ (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+ (WebCore::StyleRareNonInheritedData::operator== const):
+ * rendering/style/StyleRareNonInheritedData.h:
+ * style/StyleAdjuster.cpp:
+ (WebCore::Style::Adjuster::adjust const):
+
+ Control the obscuring of text in password inputs by setting appropriate
+ TextSecurity value in RenderStyle, corresponding to the InputSecurity
+ value. This implementation was chosen for two reasons:
+
+ 1. Leverage the existing logic which obscures characters based on the
+ style's TextSecurity value. Note that it is already not possible to
+ specify other TextSecurity value's for password inputs, so there is
+ no risk in forcing a TextSecurity value for a given InputSecurity.
+
+ 2. Ensure the computed value for -webkit-text-security is not "none"
+ (the default) when input-security is "auto". This behavior is
+ necessary as there are known existing scripts that check the
+ computed value for -webkit-text-security to determine whether text
+ in an input is obscured.
+
2021-09-20 Simon Fraser <simon.fra...@apple.com>
Have ScrollingMomentumCalculator work in terms of ScrollExtents
Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (282749 => 282750)
--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2021-09-20 16:19:04 UTC (rev 282750)
@@ -3059,6 +3059,8 @@
case CSSPropertyImageResolution:
return cssValuePool.createValue(style.imageResolution(), CSSUnitType::CSS_DPPX);
#endif
+ case CSSPropertyInputSecurity:
+ return cssValuePool.createValue(style.inputSecurity());
case CSSPropertyLeft:
return positionOffsetValue(style, CSSPropertyLeft, renderer);
case CSSPropertyLetterSpacing:
Modified: trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h (282749 => 282750)
--- trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h 2021-09-20 16:19:04 UTC (rev 282750)
@@ -4207,6 +4207,37 @@
return ImageRendering::Auto;
}
+template<> inline CSSPrimitiveValue::CSSPrimitiveValue(InputSecurity e)
+ : CSSValue(PrimitiveClass)
+{
+ setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID);
+ switch (e) {
+ case InputSecurity::Auto:
+ m_value.valueID = CSSValueAuto;
+ break;
+ case InputSecurity::None:
+ m_value.valueID = CSSValueNone;
+ break;
+ }
+}
+
+template<> inline CSSPrimitiveValue::operator InputSecurity() const
+{
+ ASSERT(isValueID());
+
+ switch (m_value.valueID) {
+ case CSSValueAuto:
+ return InputSecurity::Auto;
+ case CSSValueNone:
+ return InputSecurity::None;
+ default:
+ break;
+ }
+
+ ASSERT_NOT_REACHED();
+ return InputSecurity::Auto;
+}
+
template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TransformStyle3D e)
: CSSValue(PrimitiveClass)
{
Modified: trunk/Source/WebCore/css/CSSProperties.json (282749 => 282750)
--- trunk/Source/WebCore/css/CSSProperties.json 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/css/CSSProperties.json 2021-09-20 16:19:04 UTC (rev 282750)
@@ -2856,6 +2856,16 @@
"url": "https://www.w3.org/TR/css-logical/#dimension-properties"
}
},
+ "input-security": {
+ "values": [
+ "auto",
+ "none"
+ ],
+ "specification": {
+ "category": "css-ui",
+ "url": "https://drafts.csswg.org/css-ui-4/#input-security"
+ }
+ },
"inset": {
"codegen-properties": {
"longhands": [
Modified: trunk/Source/WebCore/css/html.css (282749 => 282750)
--- trunk/Source/WebCore/css/html.css 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/css/html.css 2021-09-20 16:19:04 UTC (rev 282750)
@@ -767,10 +767,6 @@
line-height: initial;
}
-input[type="password"] {
- -webkit-text-security: disc !important;
-}
-
input:is([type="hidden"], [type="image"], [type="file"]) {
-webkit-appearance: initial;
padding: initial;
@@ -789,7 +785,7 @@
}
input:-webkit-autofill-strong-password, input:-webkit-autofill-strong-password-viewable {
- -webkit-text-security: none !important;
+ input-security: none !important;
cursor: default !important;
font-family: monospace;
}
Modified: trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp (282749 => 282750)
--- trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp 2021-09-20 16:19:04 UTC (rev 282750)
@@ -649,6 +649,8 @@
return valueID == CSSValueFromImage || valueID == CSSValueNone;
case CSSPropertyImageRendering: // auto | optimizeContrast | pixelated | optimizeSpeed | crispEdges | optimizeQuality | webkit-crispEdges
return valueID == CSSValueAuto || valueID == CSSValueOptimizeSpeed || valueID == CSSValueOptimizeQuality || valueID == CSSValueWebkitCrispEdges || valueID == CSSValueWebkitOptimizeContrast || valueID == CSSValueCrispEdges || valueID == CSSValuePixelated;
+ case CSSPropertyInputSecurity:
+ return valueID == CSSValueAuto || valueID == CSSValueNone;
#if ENABLE(CSS_COMPOSITING)
case CSSPropertyIsolation: // auto | isolate
return valueID == CSSValueAuto || valueID == CSSValueIsolate;
@@ -940,6 +942,7 @@
case CSSPropertyFontVariantPosition:
case CSSPropertyImageOrientation:
case CSSPropertyImageRendering:
+ case CSSPropertyInputSecurity:
case CSSPropertyListStylePosition:
case CSSPropertyListStyleType:
case CSSPropertyObjectFit:
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (282749 => 282750)
--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2021-09-20 16:19:04 UTC (rev 282750)
@@ -743,6 +743,9 @@
return true;
}
+ if (first.inputSecurity != second.inputSecurity)
+ return true;
+
return false;
}
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (282749 => 282750)
--- trunk/Source/WebCore/rendering/style/RenderStyle.h 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h 2021-09-20 16:19:04 UTC (rev 282750)
@@ -781,6 +781,7 @@
#endif
TextSecurity textSecurity() const { return static_cast<TextSecurity>(m_rareInheritedData->textSecurity); }
+ InputSecurity inputSecurity() const { return static_cast<InputSecurity>(m_rareNonInheritedData->inputSecurity); }
WritingMode writingMode() const { return static_cast<WritingMode>(m_inheritedFlags.writingMode); }
bool isHorizontalWritingMode() const { return WebCore::isHorizontalWritingMode(writingMode()); }
@@ -1337,6 +1338,7 @@
#endif
void setTextSecurity(TextSecurity security) { SET_VAR(m_rareInheritedData, textSecurity, static_cast<unsigned>(security)); }
+ void setInputSecurity(InputSecurity security) { SET_VAR(m_rareNonInheritedData, inputSecurity, static_cast<unsigned>(security)); }
#if ENABLE(CSS_TRAILING_WORD)
void setTrailingWord(TrailingWord) { }
@@ -1773,6 +1775,7 @@
static IntSize initialInitialLetter() { return IntSize(); }
static LineClampValue initialLineClamp() { return LineClampValue(); }
static TextSecurity initialTextSecurity() { return TextSecurity::None; }
+ static InputSecurity initialInputSecurity() { return InputSecurity::Auto; };
#if PLATFORM(IOS_FAMILY)
static bool initialTouchCalloutEnabled() { return true; }
Modified: trunk/Source/WebCore/rendering/style/RenderStyleConstants.h (282749 => 282750)
--- trunk/Source/WebCore/rendering/style/RenderStyleConstants.h 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/rendering/style/RenderStyleConstants.h 2021-09-20 16:19:04 UTC (rev 282750)
@@ -504,6 +504,11 @@
Square
};
+enum class InputSecurity : uint8_t {
+ Auto,
+ None
+};
+
// CSS3 User Modify Properties
enum class UserModify : uint8_t {
Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp (282749 => 282750)
--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp 2021-09-20 16:19:04 UTC (rev 282750)
@@ -109,6 +109,7 @@
, breakAfter(static_cast<unsigned>(RenderStyle::initialBreakBetween()))
, breakInside(static_cast<unsigned>(RenderStyle::initialBreakInside()))
, resize(static_cast<unsigned>(RenderStyle::initialResize()))
+ , inputSecurity(static_cast<unsigned>(RenderStyle::initialInputSecurity()))
, hasAttrContent(false)
, isNotFinal(false)
, columnGap(RenderStyle::initialColumnGap())
@@ -208,6 +209,7 @@
, breakAfter(o.breakAfter)
, breakInside(o.breakInside)
, resize(o.resize)
+ , inputSecurity(o.inputSecurity)
, hasAttrContent(o.hasAttrContent)
, isNotFinal(o.isNotFinal)
, columnGap(o.columnGap)
@@ -315,6 +317,7 @@
&& breakBefore == o.breakBefore
&& breakInside == o.breakInside
&& resize == o.resize
+ && inputSecurity == o.inputSecurity
&& hasAttrContent == o.hasAttrContent
&& isNotFinal == o.isNotFinal
&& columnGap == o.columnGap
Modified: trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h (282749 => 282750)
--- trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h 2021-09-20 16:19:04 UTC (rev 282750)
@@ -225,6 +225,8 @@
unsigned breakInside : 3; // BreakInside
unsigned resize : 2; // Resize
+ unsigned inputSecurity : 1; // InputSecurity
+
unsigned hasAttrContent : 1;
unsigned isNotFinal : 1;
Modified: trunk/Source/WebCore/style/StyleAdjuster.cpp (282749 => 282750)
--- trunk/Source/WebCore/style/StyleAdjuster.cpp 2021-09-20 16:01:49 UTC (rev 282749)
+++ trunk/Source/WebCore/style/StyleAdjuster.cpp 2021-09-20 16:19:04 UTC (rev 282750)
@@ -392,6 +392,9 @@
style.setOverflowY(style.overflowY() == Overflow::Visible ? Overflow::Auto : style.overflowY());
}
+ if (is<HTMLInputElement>(*m_element) && downcast<HTMLInputElement>(*m_element).isPasswordField())
+ style.setTextSecurity(style.inputSecurity() == InputSecurity::Auto ? TextSecurity::Disc : TextSecurity::None);
+
// Disallow -webkit-user-modify on :pseudo and ::pseudo elements.
if (!m_element->shadowPseudoId().isNull())
style.setUserModify(UserModify::ReadOnly);