commit c6b00049a9371cfb2781e9c111772f6eb20dc492
parent af6ad4e82c09ec30ed88a4fe61b81f60bc1636f3
Author: Alexandru Marc <amarc@mozilla.com>
Date: Fri, 12 Dec 2025 04:29:01 +0200
Revert "Bug 1728746 - consider grapheme cluster when deleting backwards r=masayuki" for causing mochitest failures @ test_bug332636.html
This reverts commit af6ad4e82c09ec30ed88a4fe61b81f60bc1636f3.
Diffstat:
3 files changed, 8 insertions(+), 109 deletions(-)
diff --git a/editor/libeditor/AutoClonedRangeArray.cpp b/editor/libeditor/AutoClonedRangeArray.cpp
@@ -1459,10 +1459,9 @@ AutoClonedSelectionRangeArray::ExtendAnchorFocusRangeFor(
// Different from the `eNext` case, we look for character boundary.
// I'm not sure whether this inconsistency between "Delete" and
// "Backspace" is intentional or not.
- result = nsFrameSelection::
- CreateRangeExtendedToPreviousGraphemeClusterBoundary<nsRange>(
- *presShell, limitersAndCaretData, anchorFocusRange,
- rangeDirection);
+ result = nsFrameSelection::CreateRangeExtendedToPreviousCharacterBoundary<
+ nsRange>(*presShell, limitersAndCaretData, anchorFocusRange,
+ rangeDirection);
if (NS_WARN_IF(aEditorBase.Destroyed())) {
return Err(NS_ERROR_EDITOR_DESTROYED);
}
diff --git a/layout/generic/nsFrameSelection.h b/layout/generic/nsFrameSelection.h
@@ -681,9 +681,9 @@ class nsFrameSelection final {
}
/**
- * CreateRangeExtendedToPreviousGraphemeClusterBoundary() returns range
- * which is extended from normal selection range to start of previous
- * grapheme cluster boundary.
+ * CreateRangeExtendedToPreviousCharacterBoundary() returns range which is
+ * extended from normal selection range to start of previous character
+ * boundary.
*
* @param aLimitersAndCaretData The data of limiters and additional
* caret data.
@@ -695,13 +695,13 @@ class nsFrameSelection final {
*/
template <typename RangeType>
MOZ_CAN_RUN_SCRIPT static mozilla::Result<RefPtr<RangeType>, nsresult>
- CreateRangeExtendedToPreviousGraphemeClusterBoundary(
+ CreateRangeExtendedToPreviousCharacterBoundary(
mozilla::PresShell& aPresShell,
const mozilla::LimitersAndCaretData& aLimitersAndCaretData,
const mozilla::dom::AbstractRange& aRange, nsDirection aRangeDirection) {
return CreateRangeExtendedToSomewhere<RangeType>(
aPresShell, aLimitersAndCaretData, aRange, aRangeDirection,
- eDirPrevious, eSelectCluster, eLogical);
+ eDirPrevious, eSelectCharacter, eLogical);
}
/**
diff --git a/testing/web-platform/mozilla/tests/editor/delete-backwards-grapheme-cluster.html b/testing/web-platform/mozilla/tests/editor/delete-backwards-grapheme-cluster.html
@@ -1,100 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<meta charset="utf-8">
-<meta name="timeout" content="long">
-<title>Deleting grapheme cluster</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="../../editing/include/editor-test-utils.js"></script>
-</head>
-<body>
-<div contenteditable></div>
-<script>
-"use strict";
-
-const editingHost = document.querySelector("div[contenteditable]");
-const utils = new EditorTestUtils(editingHost);
-
-const flag = "\u{1F1E8}\u{1F1F3}";
-const halfWidthKatakana = "\uFF76\uFF9E";
-const rainbowFlag = "\u{1F3F3}\u{FE0F}\u{200D}\u{1F308}";
-const family = "\u{1F468}\u{200D}\u{1F469}\u{200D}\u{1F467}";
-
-const tests = [
- {
- name: "Backwards delete grapheme cluster",
- initialInnerHTML: `a${flag}[]b`,
- command: "delete",
- expected: "ab"
- },
- {
- name: "Forwards delete grapheme cluster",
- initialInnerHTML: `a[]${flag}b`,
- command: "forwarddelete",
- expected: "ab"
- },
- {
- name: "Backwards delete half-width katakana",
- initialInnerHTML: `${halfWidthKatakana}[]`,
- command: "delete",
- expected: "\uFF76"
- },
- {
- name: "Forwards delete half-width katakana",
- initialInnerHTML: `[]${halfWidthKatakana}`,
- command: "forwarddelete",
- expected: ["", "<br>"]
- },
- {
- name: "Backwards delete rainbow flag",
- initialInnerHTML: `${rainbowFlag}[]`,
- command: "delete",
- expected: ["", "<br>"]
- },
- {
- name: "Forwards delete rainbow flag",
- initialInnerHTML: `[]${rainbowFlag}`,
- command: "forwarddelete",
- expected: ["", "<br>"]
- },
- {
- name: "Backwards delete rainbow flag around text",
- initialInnerHTML: `start${rainbowFlag}[]end`,
- command: "delete",
- expected: "startend"
- },
- {
- name: "Forwards delete rainbow flag around text",
- initialInnerHTML: `start[]${rainbowFlag}end`,
- command: "forwarddelete",
- expected: "startend"
- },
- {
- name: "Backwards delete family emoji",
- initialInnerHTML: `${family}[]`,
- command: "delete",
- expected: ["", "<br>"]
- },
- {
- name: "Forwards delete family emoji",
- initialInnerHTML: `[]${family}`,
- command: "forwarddelete",
- expected: ["", "<br>"]
- }
-];
-
-for (const t of tests) {
- test(() => {
- utils.setupEditingHost(t.initialInnerHTML);
- document.execCommand(t.command);
- if (Array.isArray(t.expected)) {
- assert_in_array(editingHost.innerHTML, t.expected);
- } else {
- assert_equals(editingHost.innerHTML, t.expected);
- }
- }, t.name);
-}
-</script>
-</body>
-</html>