Automatic update from web-platform-tests [Editing] Skip user-select:none in Selection.toString() This fix adds SetSkipsUnselectableContent(true) to the TextIteratorBehavior used in DOMSelection::toString(). This ensures unselectable content is excluded from the string representation of selection. Bug: 446539520 Change-Id: Ic86c2bb87bd01b70ba5c950ed992cfc375ccb7e2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7087649 Reviewed-by: Koji Ishii <kojii@chromium.org> Reviewed-by: Ashish Kumar <ashishkum@microsoft.com> Commit-Queue: Rakesh Goulikar <ragoulik@microsoft.com> Cr-Commit-Position: refs/heads/main@{#1536538} -- wpt-commits: ce6e185b538e03aad63da2b36778aab13c121759 wpt-pr: 55705
55 lines
1.9 KiB
HTML
55 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>Selection.toString() with user-select: none elements</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<div id="test-content">
|
|
<!-- Test case 1: Basic user-select: none -->
|
|
<div id="basic">
|
|
a<span style="user-select: none;">b</span>c
|
|
</div>
|
|
|
|
<!-- Test case 2: Nested user-select: none -->
|
|
<div id="nested">
|
|
start <span style="user-select: none;">unselectable <strong>nested</strong>
|
|
text</span> end
|
|
</div>
|
|
|
|
<!-- Test case 3: Selectable children inside unselectable container -->
|
|
<div id="container" style="user-select: none;">
|
|
<span style="user-select: text;">selectable</span> unselectable
|
|
<span style="user-select: text;">text</span>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function selectAllAndGetSelectionTextInElement(element) {
|
|
const selection = getSelection();
|
|
selection.removeAllRanges();
|
|
const range = document.createRange();
|
|
range.selectNodeContents(element);
|
|
selection.addRange(range);
|
|
return selection.toString();
|
|
}
|
|
|
|
test(() => {
|
|
const result = selectAllAndGetSelectionTextInElement(document.getElementById('basic'));
|
|
assert_equals(result, 'ac',
|
|
'Basic user-select: none content should be excluded');
|
|
}, 'Selection.toString() excludes basic user-select: none content');
|
|
|
|
test(() => {
|
|
const result = selectAllAndGetSelectionTextInElement(document.getElementById('nested'));
|
|
assert_equals(result, 'start end',
|
|
'Nested user-select: none content should be excluded');
|
|
}, 'Selection.toString() excludes nested user-select: none content');
|
|
|
|
test(() => {
|
|
const result = selectAllAndGetSelectionTextInElement(document.getElementById('container'));
|
|
assert_equals(result, 'selectabletext',
|
|
'Selectable children should be included even in unselectable container');
|
|
}, 'Selection.toString() includes selectable children in unselectable ' +
|
|
'container');
|
|
</script>
|