Skip to content

Commit 097fdf1

Browse files
Rename FormControlRange to OpaqueRange
This CL renames the FormControlRange interface to OpaqueRange as suggested in TPAC feedback. The name "OpaqueRange" better reflects that the range is opaque - it doesn't expose the underlying DOM nodes. This is a pure rename with no behavioral changes. Low-Coverage-Reason: COVERAGE_UNDERREPORTED Bug: 421421332 Change-Id: I92a378b8ef1c711e287d204140656ba889d616bd Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7590591 Reviewed-by: Ana Sollano Kim <ansollan@microsoft.com> Reviewed-by: Mason Freed <masonf@chromium.org> Reviewed-by: Dan Clark <daniec@microsoft.com> Commit-Queue: Stephanie Zhang <stephanie.zhang@microsoft.com> Cr-Commit-Position: refs/heads/main@{#1588110}
1 parent e6d7127 commit 097fdf1

13 files changed

Lines changed: 72 additions & 72 deletions

dom/ranges/tentative/FormControlRange-basic.html renamed to dom/ranges/tentative/OpaqueRange-basic.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
const textarea = document.body.firstElementChild;
99
const range = textarea.getValueRange(0, 5);
1010

11-
assert_true(range instanceof FormControlRange, "|range| should be an instance of FormControlRange.");
11+
assert_true(range instanceof OpaqueRange, "|range| should be an instance of OpaqueRange.");
1212
assert_true(range instanceof AbstractRange, "|range| should also be an instance of AbstractRange.");
1313
assert_false(range instanceof Range, "|range| should not be an instance of Range.");
14-
}, "Tests getValueRange returns FormControlRange that extends AbstractRange.");
14+
}, "Tests getValueRange returns OpaqueRange that extends AbstractRange.");
1515

1616
test(() => {
1717
document.body.innerHTML = '<textarea>Hello</textarea>';
@@ -23,7 +23,7 @@
2323
assert_equals(range.startOffset, 1);
2424
assert_equals(range.endOffset, 4);
2525
assert_false(range.collapsed);
26-
}, "FormControlRange handles getValueRange correctly.");
26+
}, "OpaqueRange handles getValueRange correctly.");
2727

2828
test(() => {
2929
document.body.innerHTML = '<input type="text" value="">';
@@ -33,5 +33,5 @@
3333
assert_equals(range.startOffset, 0);
3434
assert_equals(range.endOffset, 0);
3535
assert_true(range.collapsed);
36-
}, "FormControlRange handles empty value correctly.");
36+
}, "OpaqueRange handles empty value correctly.");
3737
</script>

dom/ranges/tentative/FormControlRange-geometry-basic.html renamed to dom/ranges/tentative/OpaqueRange-geometry-basic.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
if ('scrollLeft' in element) element.scrollLeft = 0;
2828
return element;
2929
}
30-
function setupFormControlRange(element, startOffset, endOffset){
30+
function setupOpaqueRange(element, startOffset, endOffset){
3131
return element.getValueRange(startOffset, endOffset);
3232
}
3333

@@ -42,7 +42,7 @@
4242
// Collapsed range (caret): no client rects; bounding rect is a caret box
4343
// (zero width, non-zero height) positioned within the control.
4444
const element = setupControl(controlType, 'Hello');
45-
const range = setupFormControlRange(element, 2, 2);
45+
const range = setupOpaqueRange(element, 2, 2);
4646
const caretRect = range.getBoundingClientRect();
4747
assert_equals(range.getClientRects().length, 0, 'collapsed: no client rects');
4848
assert_approx_equals(caretRect.width, 0, 0.05, 'caret width should be 0');
@@ -53,7 +53,7 @@
5353
test(() => {
5454
// Non-collapsed selection: non-zero geometry, all rects contained in control.
5555
const element = setupControl(controlType, 'ABCDE');
56-
const range = setupFormControlRange(element, 1, 4);
56+
const range = setupOpaqueRange(element, 1, 4);
5757
const boundingRect = range.getBoundingClientRect();
5858
const clientRects = Array.from(range.getClientRects());
5959
assert_greater_than(boundingRect.width, 0, 'selection width greater than 0');
@@ -68,7 +68,7 @@
6868
test(() => {
6969
// If the control is removed from the DOM, geometry should be empty.
7070
const element = setupControl(controlType, 'ABCDE');
71-
const range = setupFormControlRange(element, 0, element.value.length);
71+
const range = setupOpaqueRange(element, 0, element.value.length);
7272
assert_greater_than(range.getBoundingClientRect().width,0,'pre removal width greater than 0');
7373
element.remove();
7474
const boundingRect = range.getBoundingClientRect();
@@ -80,7 +80,7 @@
8080
const value = 'ABCDE';
8181
const element = setupControl(controlType, value);
8282
[0, Math.floor(value.length / 2), value.length].forEach(position => {
83-
const range = setupFormControlRange(element, position, position);
83+
const range = setupOpaqueRange(element, position, position);
8484
const caretRect = range.getBoundingClientRect();
8585
assert_equals(range.getClientRects().length, 0, 'collapsed caret has no rects');
8686
assert_approx_equals(caretRect.width, 0, 0.05, 'caret width should be 0');
@@ -93,7 +93,7 @@
9393
// (For textarea, the string includes a hard newline to exercise multi-line.)
9494
const value = controlType === 'textarea' ? 'First line\nSecond line' : 'ABCDE';
9595
const element = setupControl(controlType, value);
96-
const range = setupFormControlRange(element, 0, element.value.length);
96+
const range = setupOpaqueRange(element, 0, element.value.length);
9797
const boundingRect = range.getBoundingClientRect();
9898
assert_greater_than(boundingRect.width, 0, 'full width greater than 0');
9999
assert_greater_than(boundingRect.height, 0, 'full height greater than 0');
@@ -118,7 +118,7 @@
118118
? '<input type="text" id="displayNone" style="display:none" value="hidden">'
119119
: '<textarea id="displayNone" style="display:none">hidden</textarea>';
120120
const element = document.getElementById('displayNone');
121-
const range = setupFormControlRange(element, 0, element.value.length);
121+
const range = setupOpaqueRange(element, 0, element.value.length);
122122
const boundingRect = range.getBoundingClientRect();
123123
assert_approx_equals(boundingRect.width, 0, 0.05, 'width should be 0 (display:none)');
124124
assert_approx_equals(boundingRect.height, 0, 0.05, 'height should be 0 (display:none)');

dom/ranges/tentative/FormControlRange-geometry-complexity-and-visibility.html renamed to dom/ranges/tentative/OpaqueRange-geometry-complexity-and-visibility.html

File renamed without changes.

dom/ranges/tentative/FormControlRange-geometry-multiline-and-mutations.html renamed to dom/ranges/tentative/OpaqueRange-geometry-multiline-and-mutations.html

File renamed without changes.

dom/ranges/tentative/FormControlRange-interactive-basic.html renamed to dom/ranges/tentative/OpaqueRange-interactive-basic.html

File renamed without changes.

dom/ranges/tentative/FormControlRange-interactive-overlap-and-selection.html renamed to dom/ranges/tentative/OpaqueRange-interactive-overlap-and-selection.html

File renamed without changes.
File renamed without changes.

dom/ranges/tentative/FormControlRange-programmatic-updates.html renamed to dom/ranges/tentative/OpaqueRange-programmatic-updates.html

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
<script>
77
'use strict';
88

9-
// Verifies that FormControlRange updates its start/end offsets for
9+
// Verifies that OpaqueRange updates its start/end offsets for
1010
// programmatic text mutations mirroring DOM Range behavior in the control’s
1111
// value space. Each test first exercises a DOM Range in a contenteditable div,
12-
// then performs the equivalent operation with FormControlRange to ensure
12+
// then performs the equivalent operation with OpaqueRange to ensure
1313
// behavior parity.
1414

1515
const controls = ['input', 'textarea'];
@@ -49,12 +49,12 @@
4949
assert_equals(domRange1.startOffset, 0, 'DOM shorter: start collapsed to 0');
5050
assert_equals(domRange1.endOffset, 0, 'DOM shorter: end collapsed to 0');
5151

52-
// FormControlRange: full .value replacement (shorter) collapses to [0,0].
52+
// OpaqueRange: full .value replacement (shorter) collapses to [0,0].
5353
let element = setup(control, 'ABCDEFG');
5454
let range = element.getValueRange(2, 5);
5555
element.value = 'XY';
56-
assert_equals(range.startOffset, 0, 'FormControlRange shorter: start collapsed to 0');
57-
assert_equals(range.endOffset, 0, 'FormControlRange shorter: end collapsed to 0');
56+
assert_equals(range.startOffset, 0, 'OpaqueRange shorter: start collapsed to 0');
57+
assert_equals(range.endOffset, 0, 'OpaqueRange shorter: end collapsed to 0');
5858

5959
// DOM: full replace (longer) collapses to [0,0].
6060
const d2 = setupEditable('ABC');
@@ -63,12 +63,12 @@
6363
assert_equals(domRange2.startOffset, 0, 'DOM longer: start collapsed to 0');
6464
assert_equals(domRange2.endOffset, 0, 'DOM longer: end collapsed to 0');
6565

66-
// FormControlRange: full .value replacement (longer) collapses to [0,0].
66+
// OpaqueRange: full .value replacement (longer) collapses to [0,0].
6767
element = setup(control, 'ABC');
6868
range = element.getValueRange(1, 3);
6969
element.value = 'ABCDEFGHIJKLMNOP';
70-
assert_equals(range.startOffset, 0, 'FormControlRange longer: start collapsed to 0');
71-
assert_equals(range.endOffset, 0, 'FormControlRange longer: end collapsed to 0');
70+
assert_equals(range.startOffset, 0, 'OpaqueRange longer: start collapsed to 0');
71+
assert_equals(range.endOffset, 0, 'OpaqueRange longer: end collapsed to 0');
7272
}, `Full replace collapses to start (shorter & longer) (${control})`);
7373

7474
test(() => {
@@ -79,12 +79,12 @@
7979
assert_equals(domRange.startOffset, 0, 'DOM whole-old: start collapsed to 0');
8080
assert_equals(domRange.endOffset, 0, 'DOM whole-old: end collapsed to 0');
8181

82-
// FormControlRange: same scenario.
82+
// OpaqueRange: same scenario.
8383
const element = setup(control, 'ABCDE');
8484
const range = element.getValueRange(0, 5);
8585
element.value = 'VWXYZ';
86-
assert_equals(range.startOffset, 0, 'FormControlRange whole-old: start collapsed to 0');
87-
assert_equals(range.endOffset, 0, 'FormControlRange whole-old: end collapsed to 0');
86+
assert_equals(range.startOffset, 0, 'OpaqueRange whole-old: start collapsed to 0');
87+
assert_equals(range.endOffset, 0, 'OpaqueRange whole-old: end collapsed to 0');
8888
}, `Full replace from whole-old range collapses to 0 (${control})`);
8989

9090
test(() => {
@@ -95,12 +95,12 @@
9595
assert_equals(domRange.startOffset, 0, 'DOM equal-length: start collapsed to 0');
9696
assert_equals(domRange.endOffset, 0, 'DOM equal-length: end collapsed to 0');
9797

98-
// FormControlRange: same scenario.
98+
// OpaqueRange: same scenario.
9999
const element = setup(control, 'ABCDE');
100100
const range = element.getValueRange(1, 4);
101101
element.value = 'VWXYZ';
102-
assert_equals(range.startOffset, 0, 'FormControlRange equal-length: start collapsed to 0');
103-
assert_equals(range.endOffset, 0, 'FormControlRange equal-length: end collapsed to 0');
102+
assert_equals(range.startOffset, 0, 'OpaqueRange equal-length: start collapsed to 0');
103+
assert_equals(range.endOffset, 0, 'OpaqueRange equal-length: end collapsed to 0');
104104
}, `Full replace (equal length) collapses to 0 (${control})`);
105105

106106
test(() => {
@@ -112,13 +112,13 @@
112112
assert_equals(domRange.startOffset, 2, 'DOM start unchanged before replaced segment');
113113
assert_equals(domRange.endOffset, 6, 'DOM end adjusted by net delta');
114114

115-
// FormControlRange: same replace via setRangeText.
115+
// OpaqueRange: same replace via setRangeText.
116116
const element = setup(control, '0123456789');
117117
const range = element.getValueRange(2, 8);
118118
element.setRangeText('XX', 3, 7);
119-
assert_equals(element.value, '012XX789', 'FormControlRange value reflects setRangeText replace');
120-
assert_equals(range.startOffset, 2, 'FormControlRange start unchanged before replaced segment');
121-
assert_equals(range.endOffset, 6, 'FormControlRange end adjusted by net delta');
119+
assert_equals(element.value, '012XX789', 'OpaqueRange value reflects setRangeText replace');
120+
assert_equals(range.startOffset, 2, 'OpaqueRange start unchanged before replaced segment');
121+
assert_equals(range.endOffset, 6, 'OpaqueRange end adjusted by net delta');
122122
}, `Partial replacement adjusts end (${control})`);
123123

124124
test(() => {
@@ -128,12 +128,12 @@
128128
assert_equals(domRange.startOffset, 1, 'DOM start unchanged on no-op');
129129
assert_equals(domRange.endOffset, 4, 'DOM end unchanged on no-op');
130130

131-
// FormControlRange: setting same value (no-op); range unchanged.
131+
// OpaqueRange: setting same value (no-op); range unchanged.
132132
const element = setup(control, 'HELLO');
133133
const range = element.getValueRange(1, 4);
134134
element.value = 'HELLO';
135-
assert_equals(range.startOffset, 1, 'FormControlRange start unchanged on no-op');
136-
assert_equals(range.endOffset, 4, 'FormControlRange end unchanged on no-op');
135+
assert_equals(range.startOffset, 1, 'OpaqueRange start unchanged on no-op');
136+
assert_equals(range.endOffset, 4, 'OpaqueRange end unchanged on no-op');
137137
}, `No-op leaves range unchanged (${control})`);
138138

139139
test(() => {
@@ -145,13 +145,13 @@
145145
assert_equals(domRange.startOffset, 3, 'DOM start +1');
146146
assert_equals(domRange.endOffset, 5, 'DOM end +1');
147147

148-
// FormControlRange: same insert via setRangeText.
148+
// OpaqueRange: same insert via setRangeText.
149149
const element = setup(control, 'ABCDE');
150150
const range = element.getValueRange(2, 4);
151151
element.setRangeText('Q', 1, 1);
152-
assert_equals(element.value, 'AQBCDE', 'FormControlRange value after insertion before range');
153-
assert_equals(range.startOffset, 3, 'FormControlRange start +1');
154-
assert_equals(range.endOffset, 5, 'FormControlRange end +1');
152+
assert_equals(element.value, 'AQBCDE', 'OpaqueRange value after insertion before range');
153+
assert_equals(range.startOffset, 3, 'OpaqueRange start +1');
154+
assert_equals(range.endOffset, 5, 'OpaqueRange end +1');
155155
}, `Insertion before range shifts both endpoints (${control})`);
156156

157157
test(() => {
@@ -163,13 +163,13 @@
163163
assert_equals(domRange.startOffset, 1, 'DOM start unchanged');
164164
assert_equals(domRange.endOffset, 4, 'DOM end -1');
165165

166-
// FormControlRange: same delete via setRangeText.
166+
// OpaqueRange: same delete via setRangeText.
167167
const element = setup(control, 'ABCDE');
168168
const range = element.getValueRange(1, 5);
169169
element.setRangeText('', 2, 3);
170-
assert_equals(element.value, 'ABDE', 'FormControlRange value after interior deletion');
171-
assert_equals(range.startOffset, 1, 'FormControlRange start unchanged');
172-
assert_equals(range.endOffset, 4, 'FormControlRange end -1');
170+
assert_equals(element.value, 'ABDE', 'OpaqueRange value after interior deletion');
171+
assert_equals(range.startOffset, 1, 'OpaqueRange start unchanged');
172+
assert_equals(range.endOffset, 4, 'OpaqueRange end -1');
173173
}, `Interior deletion shrinks end (${control})`);
174174

175175
test(() => {
@@ -181,13 +181,13 @@
181181
assert_equals(domRange.startOffset, 5, 'DOM start -2');
182182
assert_equals(domRange.endOffset, 8, 'DOM end -2');
183183

184-
// FormControlRange: same replacement via setRangeText.
184+
// OpaqueRange: same replacement via setRangeText.
185185
const element = setup(control, 'ABCDEFGHIJ');
186186
const range = element.getValueRange(7, 10);
187187
element.setRangeText('Z', 2, 5);
188-
assert_equals(element.value, 'ABZFGHIJ', 'FormControlRange value after before-range shrink');
189-
assert_equals(range.startOffset, 5, 'FormControlRange start -2');
190-
assert_equals(range.endOffset, 8, 'FormControlRange end -2');
188+
assert_equals(element.value, 'ABZFGHIJ', 'OpaqueRange value after before-range shrink');
189+
assert_equals(range.startOffset, 5, 'OpaqueRange start -2');
190+
assert_equals(range.endOffset, 8, 'OpaqueRange end -2');
191191
}, `Before-range shrink shifts left (${control})`);
192192

193193
test(() => {
@@ -199,13 +199,13 @@
199199
assert_equals(domRange.startOffset, 2, 'DOM start unchanged');
200200
assert_equals(domRange.endOffset, 5, 'DOM end unchanged');
201201

202-
// FormControlRange: same replacement via setRangeText.
202+
// OpaqueRange: same replacement via setRangeText.
203203
const element = setup(control, 'ABCDEFGHIJ');
204204
const range = element.getValueRange(2, 5);
205205
element.setRangeText('WXYZ', 7, 9);
206-
assert_equals(element.value, 'ABCDEFGWXYZJ', 'FormControlRange value after after-range grow');
207-
assert_equals(range.startOffset, 2, 'FormControlRange start unchanged');
208-
assert_equals(range.endOffset, 5, 'FormControlRange end unchanged');
206+
assert_equals(element.value, 'ABCDEFGWXYZJ', 'OpaqueRange value after after-range grow');
207+
assert_equals(range.startOffset, 2, 'OpaqueRange start unchanged');
208+
assert_equals(range.endOffset, 5, 'OpaqueRange end unchanged');
209209
}, `After-range grow leaves range unchanged (${control})`);
210210

211211
test(() => {
@@ -217,14 +217,14 @@
217217
assert_equals(domRange.startOffset, 1, 'DOM collapsed to change start');
218218
assert_equals(domRange.endOffset, 1, 'DOM collapsed');
219219

220-
// FormControlRange: same replacement via setRangeText.
220+
// OpaqueRange: same replacement via setRangeText.
221221
const element = setup(control, 'ABCDEFG');
222222
const range = element.getValueRange(2, 5);
223223
element.setRangeText('Q', 1, 6);
224-
assert_equals(element.value, 'AQG', 'FormControlRange value after superset replacement');
225-
assert_equals(range.startOffset, 1, 'FormControlRange collapsed to change start');
226-
assert_equals(range.endOffset, 1, 'FormControlRange collapsed');
227-
assert_true(range.collapsed, 'FormControlRange collapsed flag true');
224+
assert_equals(element.value, 'AQG', 'OpaqueRange value after superset replacement');
225+
assert_equals(range.startOffset, 1, 'OpaqueRange collapsed to change start');
226+
assert_equals(range.endOffset, 1, 'OpaqueRange collapsed');
227+
assert_true(range.collapsed, 'OpaqueRange collapsed flag true');
228228
}, `Superset replacement collapses to change start (${control})`);
229229

230230
test(() => {
@@ -236,13 +236,13 @@
236236
assert_equals(domRange.startOffset, 2, 'DOM start unchanged at boundary');
237237
assert_equals(domRange.endOffset, 6, 'DOM end +2');
238238

239-
// FormControlRange: same insertion via setRangeText.
239+
// OpaqueRange: same insertion via setRangeText.
240240
const element = setup(control, 'ABCDE');
241241
const range = element.getValueRange(2, 4);
242242
element.setRangeText('QQ', 2, 2);
243-
assert_equals(element.value, 'ABQQCDE', 'FormControlRange value after insert at start boundary');
244-
assert_equals(range.startOffset, 2, 'FormControlRange start unchanged at boundary');
245-
assert_equals(range.endOffset, 6, 'FormControlRange end +2');
243+
assert_equals(element.value, 'ABQQCDE', 'OpaqueRange value after insert at start boundary');
244+
assert_equals(range.startOffset, 2, 'OpaqueRange start unchanged at boundary');
245+
assert_equals(range.endOffset, 6, 'OpaqueRange end +2');
246246
}, `Insert at range.start extends end (${control})`);
247247

248248
test(() => {
@@ -254,13 +254,13 @@
254254
assert_equals(domRange.startOffset, 2, 'DOM start unchanged');
255255
assert_equals(domRange.endOffset, 4, 'DOM end unchanged at boundary');
256256

257-
// FormControlRange: same insertion via setRangeText.
257+
// OpaqueRange: same insertion via setRangeText.
258258
const element = setup(control, 'ABCDE');
259259
const range = element.getValueRange(2, 4);
260260
element.setRangeText('QQ', 4, 4);
261-
assert_equals(element.value, 'ABCDQQE', 'FormControlRange value after insert at end boundary');
262-
assert_equals(range.startOffset, 2, 'FormControlRange start unchanged');
263-
assert_equals(range.endOffset, 4, 'FormControlRange end unchanged at boundary');
261+
assert_equals(element.value, 'ABCDQQE', 'OpaqueRange value after insert at end boundary');
262+
assert_equals(range.startOffset, 2, 'OpaqueRange start unchanged');
263+
assert_equals(range.endOffset, 4, 'OpaqueRange end unchanged at boundary');
264264
}, `Insert at range.end leaves range unchanged (${control})`);
265265

266266
test(() => {
@@ -271,12 +271,12 @@
271271
assert_equals(domRange.startOffset, 1, 'DOM start unchanged inside growth');
272272
assert_equals(domRange.endOffset, 6, 'DOM end +2 code units');
273273

274-
// FormControlRange: same replacement via setRangeText.
274+
// OpaqueRange: same replacement via setRangeText.
275275
const element = setup(control, 'A😀BC');
276276
const range = element.getValueRange(1, 4);
277277
element.setRangeText('🙂🙂', 1, 3);
278-
assert_equals(range.startOffset, 1, 'FormControlRange start unchanged inside growth');
279-
assert_equals(range.endOffset, 6, 'FormControlRange end +2 code units');
278+
assert_equals(range.startOffset, 1, 'OpaqueRange start unchanged inside growth');
279+
assert_equals(range.endOffset, 6, 'OpaqueRange end +2 code units');
280280
}, `Surrogate pair expansion grows end (${control})`);
281281

282282
test(() => {
@@ -289,14 +289,14 @@
289289
assert_equals(domRange.startOffset, 2, 'DOM start unchanged across interior edits');
290290
assert_equals(domRange.endOffset, 4, 'DOM end reflects cumulative delta');
291291

292-
// FormControlRange: same edits via setRangeText.
292+
// OpaqueRange: same edits via setRangeText.
293293
const element = setup(control, '012345');
294294
const range = element.getValueRange(2, 5);
295295
element.setRangeText('XX', 3, 4);
296296
element.setRangeText('', 3, 5);
297-
assert_equals(element.value, '01245', 'FormControlRange final value after chained edits');
298-
assert_equals(range.startOffset, 2, 'FormControlRange start unchanged across interior edits');
299-
assert_equals(range.endOffset, 4, 'FormControlRange end reflects cumulative delta');
297+
assert_equals(element.value, '01245', 'OpaqueRange final value after chained edits');
298+
assert_equals(range.startOffset, 2, 'OpaqueRange start unchanged across interior edits');
299+
assert_equals(range.endOffset, 4, 'OpaqueRange end reflects cumulative delta');
300300
}, `Chained interior edits cumulatively adjust range (${control})`);
301301
});
302302
</script>

dom/ranges/tentative/FormControlRange-range-updates.html renamed to dom/ranges/tentative/OpaqueRange-range-updates.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,5 @@
7777
assert_true(range.collapsed, "range collapses on full-value replacement");
7878
assert_equals(range.startOffset, 0);
7979
assert_equals(range.endOffset, 0);
80-
}, "FormControlRange collapses on full .value= replacement.");
80+
}, "OpaqueRange collapses on full .value= replacement.");
8181
</script>

dom/ranges/tentative/FormControlRange-supported-elements.html renamed to dom/ranges/tentative/OpaqueRange-supported-elements.html

File renamed without changes.

0 commit comments

Comments
 (0)