tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 283b9dbbe873f39f5468099254b42664f083ee18
parent 18b47cd2f2143ffa86ab7c2b1e20be0911c3b696
Author: Rakesh Goulikar <ragoulik@microsoft.com>
Date:   Fri, 31 Oct 2025 08:55:00 +0000

Bug 1996820 [wpt PR 55705] - [Editing] Skip user-select:none in Selection.toString(), a=testonly

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

Diffstat:
Atesting/web-platform/tests/selection/toString-user-select-none.html | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+), 0 deletions(-)

diff --git a/testing/web-platform/tests/selection/toString-user-select-none.html b/testing/web-platform/tests/selection/toString-user-select-none.html @@ -0,0 +1,54 @@ +<!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>