-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1830576 - Update textarea intrinsic height calculations r=dholbert
This change adds a new layout.forms.textarea-sizing-excludes-auto-scrollbar.enabled pref that controls the height calculations for textareas. With the pref enabled (the default) textareas only include the scrollbar size in the height calculations when overflow-x is scroll, this matches Chromium and WebKit. Also adds a corresponding WPT for this. Differential Revision: https://phabricator.services.mozilla.com/D210796
- Loading branch information
1 parent
4241f99
commit 12a4e6f
Showing
5 changed files
with
107 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 0 additions & 4 deletions
4
...m/meta/html/semantics/forms/the-textarea-element/textarea-placeholder-lineheight.html.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,3 @@ | ||
[textarea-placeholder-lineheight.html] | ||
expected: | ||
if (os == "android") and fission: [TIMEOUT, OK] | ||
[Bounding rect height for textarea must be the same as line-height] | ||
expected: | ||
if os == "android": PASS | ||
FAIL |
42 changes: 42 additions & 0 deletions
42
testing/web-platform/tests/html/rendering/widgets/textarea-scrollbar-sizing-001.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
<!DOCTYPE html> | ||
<link rel="help" href="https://html.spec.whatwg.org/C/#the-textarea-element-2"> | ||
<title>Test textarea width and height accounting for scrollbars</title> | ||
<meta name="author" title="Luke Warlow" href="mailto:lwarlow@igalia.com"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<body> | ||
<textarea id="rows1" rows="1"></textarea> | ||
<textarea id="rows1Hidden" rows="1" style="overflow-x: hidden"></textarea> | ||
<textarea id="rows1Scroll" rows="1" style="overflow-x: scroll"></textarea> | ||
<textarea id="cols3" cols="3"></textarea> | ||
<textarea id="cols3Hidden" cols="3" style="overflow-y: hidden"></textarea> | ||
<textarea id="cols3Scroll" cols="3" style="overflow-y: scroll"></textarea> | ||
<div id="scrollableDiv" style="overflow:scroll"></div> | ||
|
||
<script> | ||
const scrollbarsHaveThickness = (scrollableDiv.offsetHeight != 0); | ||
test(() => { | ||
assert_equals(rows1.offsetWidth, rows1Hidden.offsetWidth); | ||
assert_equals(rows1.offsetHeight, rows1Hidden.offsetHeight); | ||
}, 'rows=1 doesnt include scrollbar thickness'); | ||
|
||
test(() => { | ||
assert_equals(rows1.offsetWidth, rows1Scroll.offsetWidth); | ||
if (scrollbarsHaveThickness) { | ||
assert_less_than(rows1.offsetHeight, rows1Scroll.offsetHeight); | ||
} else { | ||
assert_equals(rows1.offsetHeight, rows1Scroll.offsetHeight); | ||
} | ||
}, 'rows=1 overflow scroll includes scrollbar thickness'); | ||
|
||
test(() => { | ||
assert_equals(cols3.offsetWidth, cols3Scroll.offsetWidth); | ||
if (scrollbarsHaveThickness) { | ||
assert_greater_than(cols3.offsetWidth, cols3Hidden.offsetWidth); | ||
} else { | ||
assert_equals(cols3.offsetWidth, cols3Hidden.offsetWidth); | ||
} | ||
assert_equals(cols3.offsetHeight, cols3Scroll.offsetHeight); | ||
assert_equals(cols3.offsetHeight, cols3Hidden.offsetHeight); | ||
}, 'cols=3 includes scrollbar thickness'); | ||
</script> |
43 changes: 43 additions & 0 deletions
43
testing/web-platform/tests/html/rendering/widgets/textarea-scrollbar-sizing-002.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<!DOCTYPE html> | ||
<link rel="help" href="https://html.spec.whatwg.org/C/#the-textarea-element-2"> | ||
<title>Test textarea width and height accounting for scrollbars, with vertical writing mode</title> | ||
<meta name="author" title="Luke Warlow" href="mailto:lwarlow@igalia.com"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<body> | ||
<style>textarea { writing-mode: vertical-lr }</style> | ||
<textarea id="rows1" rows="1"></textarea> | ||
<textarea id="rows1Hidden" rows="1" style="overflow-y: hidden"></textarea> | ||
<textarea id="rows1Scroll" rows="1" style="overflow-y: scroll"></textarea> | ||
<textarea id="cols3" cols="3"></textarea> | ||
<textarea id="cols3Hidden" cols="3" style="overflow-x: hidden"></textarea> | ||
<textarea id="cols3Scroll" cols="3" style="overflow-x: scroll"></textarea> | ||
<div id="scrollableDiv" style="overflow:scroll"></div> | ||
|
||
<script> | ||
const scrollbarsHaveThickness = (scrollableDiv.offsetHeight != 0); | ||
test(() => { | ||
assert_equals(rows1.offsetHeight, rows1Hidden.offsetHeight); | ||
assert_equals(rows1.offsetWidth, rows1Hidden.offsetWidth); | ||
}, 'rows=1 doesnt include scrollbar thickness'); | ||
|
||
test(() => { | ||
assert_equals(rows1.offsetHeight, rows1Scroll.offsetHeight); | ||
if (scrollbarsHaveThickness) { | ||
assert_less_than(rows1.offsetWidth, rows1Scroll.offsetWidth); | ||
} else { | ||
assert_equals(rows1.offsetWidth, rows1Scroll.offsetWidth); | ||
} | ||
}, 'rows=1 overflow scroll includes scrollbar thickness'); | ||
|
||
test(() => { | ||
assert_equals(cols3.offsetHeight, cols3Scroll.offsetHeight); | ||
if (scrollbarsHaveThickness) { | ||
assert_greater_than(cols3.offsetHeight, cols3Hidden.offsetHeight); | ||
} else { | ||
assert_equals(cols3.offsetHeight, cols3Hidden.offsetHeight); | ||
} | ||
assert_equals(cols3.offsetWidth, cols3Scroll.offsetWidth); | ||
assert_equals(cols3.offsetWidth, cols3Hidden.offsetWidth); | ||
}, 'cols=3 includes scrollbar thickness'); | ||
</script> |