Closed Bug 1627175 Opened 5 years ago Closed 4 years ago

Move some utility methods in editor classes which can be static to EditorUtils or HTMLEditUtils

Categories

(Core :: DOM: Editor, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
90 Branch
Tracking Status
firefox90 --- fixed

People

(Reporter: masayuki, Assigned: masayuki)

References

(Blocks 1 open bug)

Details

Attachments

(68 files)

47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
47 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review

Currently, a lot of utility methods are in editor classes, but it's difficult to find what you want. So, they should be moved to utility classes if they can be static.

HTMLEditor::IsBlockNode() is a virtual method derived from
EditorBase::IsBlockNode(). For the performance, EditorBase's one just
return false for text node and <br> element. However, these check cost
is really cheap in these days. Therefore, we can make TextEditor also
use rich API.

This patch moves HTMLEditor::NodeIsBlockStatic() and
HTMLEditor::NodeIsInlineStatic() to HTMLEditUtils, and removes the wrapper
of the fommer, HTMLEditor::IsBlockNode() and WSRunScanner::IsBlockNode().

Due to the include hell, EditorBase.h cannot include EditorUtils.h.
Therefore we need these 3 methods once. Additionally, IsModifiableNode()
is really odd method and looks like that it's used for the following 2 purposes:

  1. Simply can be editable.
  2. Can be removed from parent.

For the former case, we should sort out it with
EditorUtils::IsEditableContent(), but for now, this patch moves it to
HTMLEditUtils::IsSimplyEditable(). On the other hand, for the latter case,
we obviously has a bug. Therefore, this patch creates
HTMLEditUtils::IsRemovableFromParentNode() and make it check whether the
removing node is also editable.

Unfortunately, EditorUtils::IsEditableContent() needs to take editor type.
But it's most callers are in HTMLEditor and most of remains are in
common methods of EditorBase. I guess we could remove this ugly argument
in the future.

Depends on D70874

It's only non-HTMLEditor user is EditorBase::JoinNodesDeepWithTransaction(),
but it's called only by HTMLEditor. Therefore, we can move it into
HTMLEditUtils and move EditorBase::JoinNodesDeepWithTransaction() to
HTMLEditor.

Depends on D70875

A lot of editor code refers nsINode::IsText() directly so that we don't
need to keep the too simple editor API anymore.

Depends on D70876

Their users should use EditorDOMPoint or something instead.

This patch cleans up EditorBase::DoJoinNodes() too because of their heavy
user. It requires only joined nodes because aParent is used only for
removing aContentToJoin, but we now have nsINode::Remove() which does
not require parent node and never fails.

Depends on D70877

Actually, they are used only by HTMLEditor because TextEditor finally
returns true for any cases in TextEditor, but the users are overridden by
HTMLEditor and never used by HTMLEditor. Therefore, we cam move them
into HTMLEditUtils.

Depends on D70878

It's also used in <textarea> so that it should be in EditorUtils rather
than HTMLEditUtils.

Depends on D70879

It's a virtual method which always returns true if TextEditor. Therefore,
we can move it into HTMLEditUtils and we can make the only caller of
EditorBase check IsTextEditor() instead.

Depends on D70880

This patch also names the former to GetInclusiveAncestorBlockElement() and
the latter to GetAncestorBlockElement() for consistency with modern DOM
API names.

Depends on D70882

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/3b1b033a7cc0 part 1: Move `HTMLEditor::IsBlockNode()` into `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/7deca88757e3 part 2: Move `EditorBase::IsModifiableNode()`, `EditorBase::IsEditable()`, `EditorBase::IsTextElementOrText()` and `EditorBase::IsPaddingBRElementForEmptyEditor()` to `EditorUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/61750ef7b681 part 3: Move `EditorBase::AreNodesSameType()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/b6aa949f6383 part 4: Get rid of `EditorBase::IsText()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/4727bd1c6049 part 5: Get rid of `EditorBase::GetChildOffset()` and `EditorBase::GetNodeLocation()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/774483b023a6 part 6: Move "can contain" utility methods to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/b5019308a275 part 7: Move `EditorBase::IsPaddingBRElementForEmptyLastLine()` to `EditorUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/6119e9d5fce8 part 8: Move `EditorBase::IsContainer()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/7488b281a915 part 9: Move `HTMLEditor::GetBlock()` and `HTMLEditor::GetBlockNodeParent()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/a4bba077f98e part 10: Move `HTMLEditor::GetEnclosingTable()` to `HTMLEditUtils` r=m_kato

As an alternative of HTMLEditor::GetCellFromRange(), this patch creates more
generic utility method.

Depends on D72296

Even though the method returns only in specific cases, but the result affects
only one caller, HTMLEditor::GetNextSelectedTableCellElement(). Therefore,
we can create new generic utility method,
HTMLEditUtils::GetTableCellElementIfOnlyOneSelected() and get rid of
HTMLEditor::GetCellFromRange().

Note that the warnings in HTMLEditor::GetCellFromRange() is just noise for
any callers. So, this gets rid of the useless spam warnings.

Depends on D72585

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/bf6d7aa96d2a part 11: Create `HTMLEditUtils::GetElementIfOnlyOneSelected()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/cce6adfec7be part 12: Get rid of `HTMLEditor::GetCellFromRange()` r=m_kato

It's currently enough simple and there is only one user. So, we can get rid
of it.

Depends on D74203

This is used by TextEditor::UndoAsAction() too, so, it might be better to be
in EditorUtils. However, it is completely designed for HTMLEditor and
ideally, UndoAsAction should be overridden by HTMLEditor too and
TextEditor should use faster path because of its content is in anonymous
subtree. But we don't have any merit to do that instead of avoiding virtual
call.

Depends on D74361

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/d53b11af737f part 13: Get rid of `EditorBase::CreateRange()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/3095b3f0aec2 part 14: Create `HTMLEditUtils::GetLastLeafChild()` instead of `EditorBase::GetRightmostChild()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/900b2aa0b8cb part 15: Create `HTMLEditUtils::GetFirstLeafChild()` instead of `EditorBase::GetLeftmostChild()` r=m_kato

It looks for next leaf content or next block element for finding "end reason
node" of WSRunScanner. Especially for clearing the latter case, this
patch renames it to GetNextLeafContentOrNextBlockElement().

Similar to the previous patch, this patch moves it into HTMLEditUtils with
renaming it to GetPreviousLeafContentOrPreviousBlockElement().

Depends on D74804

They are returning same meaning value as
HTMLEditUtils::GetNextLeafContentOrNextBlockElement() and
HTMLEditUtils::GetPreviousLeafContentOrPreviousBlockElement() so that
they can be renamed to same name to overload them.

Depends on D74805

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/d010b23f67df part 16: Move `WSRunScanner::GetNextWSNodeInner()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/3dbde556656a part 17: Move `WSRunScanner::GetPreviousWSNodeInner()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/dffc3c357cee part 18: Move `WSRunScanner::GetNextWSNode()` and `WSRunScanner::GetPreviousWSNode()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/dc4525f247b9 part 19: Move `EditorBase::IsPreformatted()` to `EditorUtils` r=m_kato

Now, it does not depend on HTMLEditor. So, we can move it into the
HTMLEditUtils.

Depends on D112509

It returns true only when it's a text node, but the text is empty.
However, HTMLEditUtils::IsVisibleTextNode() is used in
HTMLEditor::IsEmptyNodeImpl(). So, we replace it with directly using
HTMLEditUtils::IsVisibleTextNode().

Depends on D112511

It's hard to understand each caller of HTMLEditor::IsEmptyNode() tries to
check with multiple bool arguments. Therefore, they should be replaced
with an EnumSet.

Note that only the first argument is reverted the meaning. Therefore, if
it's omitted or false, EmptyCheckOption::TreatSingleBRElementAsVisible
is specified explicitly. Otherwise, i.e., true, nothing should be
specified.

Depends on D112512

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/d28de60718cd part 20: Move `HTMLEditor::IsEmptyTextNode()` to `HTMLEditUtils` r=m_kato https://hg.mozilla.org/integration/autoland/rev/68551101467a part 21: Move `HTMLEditor::IsInVisibleTextFrames()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/d246ff939abd part 22: Get rid of `HTMLEditor::IsEmptyTextNode()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/92667a7f0447 part 23: Move `HTMLEditor::IsEmptyNode()` into `HTMLEditUtils` with making it take `EnumSet` instead of `bool` arguments r=m_kato

Before moving them from EditorBase, they should take only one option argument
whose type is an EnumSet class.

Note that I wanted to name each option for optional behavior, but
FindAnyDataNode requires to revert the its meaning (I.e., only with this
patch, true should be set an option). Therefore, the following patch renames
it.

So, the meaning is reverted of this action. But with this change, the scanner
methods scans any nodes by default. This is simpler to understand from the
callers.

Depends on D113228

The following patches will get rid of inline wrapper methods of them.
Therefore, they shouldn't be called as "internal". And they return
nsIContent* instead of nsINode* so, Get*Content() is better name for
them.

Depends on D113229

They are instance members of EditorBase only for referring editor type and
editing host. Therefore, we can make them static with making them take
editor type and ancestor limiter as arguments.

Depends on D113236

Only the user is EditorBase::BeginningOfDocument() which is used by both
TextEditor and HTMLEditor. However, if it's a TextEditor, expected
result is only the first text node only when there is one. Therefore, we can
move it into HTMLEditUtils and make EditorBase::BeginningOfDocument()
find the text node by it self. Then, we can get rid of using
EditorBase::GetEditorType() in this case.

Depends on D113238

If the editor instance is a TextEditor, the root element has to be
anonymous <div> element and it has only one text node when it has non-empty
value. Therefore, if it's in TextEditor, the method does not need to use
the complicated APIs for finding a text node from the anonymous <div> element
or padding <br> element since it can adjust the given point into the text
node without such API.

Depends on D113239

This changes the logic of HTMLEditor::GetFirstEditableLeaf() and
HTMLEditor::GetLastEditableLeaf(), but it shouldn't change actual behavior
because the case is that the first/last child of aNode is not in editing
host but editable.

Depends on D113281

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/8134628ba8bf part 24: Make `EditorBase::FindNode` and `EditorBase::Get*NodeInternal()` take an `EnumSet` instead of multiple `bool` arguments r=m_kato https://hg.mozilla.org/integration/autoland/rev/54b001545864 part 25: Rename `WalkTreeOption::FindAnyDataNode` to `WalkTreeOption::IgnoreDataNodeExceptText` r=m_kato https://hg.mozilla.org/integration/autoland/rev/73beaa39972d part 26: Rename `EditorBase::Get*NodeInternal()` to `Get*Content()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/38d54b3f0e7e part 27: Get rid of `EditorBase::GetNextNode()` and `EditorBase::GetPreviousNode()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/3cc2bc76803d part 28: Get rid of `EditorBase::GetNextElementOrText()` and `EditorBase::GetPreviousElementOrText()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/a446dafdd54a part 29: Get rid of `EditorBase::GetNextElementOrTextInBlock()` and `EditorBase::GetPreviousElementOrTextInBlock()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/8c688ae2cca9 part 30: Get rid of `EditorBase::GetNextEditableNodeInBlock()` and `EditorBase::GetPreviousEditableNodeInBlock()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/68e36962f1c8 part 31: Get rid of `EditorBase::GetNextEditableNode()` and `EditorBase::GetPreviousEditableNode()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/afd4832eef7a part 32: Get rid of `EditorBase::GetNextNodeInBlock()` and `EditorBase::GetPreviousNodeInBlock()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/48c21b42fee5 part 33: Make `EditorBase::FindNode()` and `EditorBase::FindNextLeafNode()` static r=m_kato https://hg.mozilla.org/integration/autoland/rev/952dc69a0c72 part 34: Make `EditorBase::GetNextContent()` and `EditorBase::GetPreviousContent()` static r=m_kato https://hg.mozilla.org/integration/autoland/rev/c33dc0983218 part 35: Move `EditorBase::GetFirstEditableNode()` into `HTMLEditUtils` r=m_kato https://hg.mozilla.org/integration/autoland/rev/d2431da8edea part 36: Make `EditorBase::CreateTransactionForCollapsedRange()` use `EditorBase::GetNextContent()` and `EditorBase::GetPreviousContent()` only when it's an `HTMLEditor` r=m_kato https://hg.mozilla.org/integration/autoland/rev/e9def24bca26 part 37: Get rid of editor type argument from `EditorBase::GetNextContent()` and `EditorBase::GetPreviousContent()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/a765064201f8 part 38: Move `EditorBase::GetNextContent()` and `EditorBase::GetPreviousContent()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/04d2ac9ad581 part 39: Get rid of `HTMLEditor::GetNextHTMLElementOrTextInBlock()` and `HTMLEditor::GetPreviousHTMLElementOrTextInBlock()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/f0587577e47d part 40: Get rid of `HTMLEditor::GetNextHTMLElementOrText()` and `HTMLEditor::GetPreviousHTMLElementOrText()` and their internal methods r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/b33a8402b98c part 41: Get rid of `HTMLEditor::GetNextEditableHTMLNodeInBlock()` and `HTMLEditor::GetPreviousEditableHTMLNodeInBlock()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/5cfcc36b7683 part 42: Get rid of `HTMLEditor::GetNextEditableHTMLNode()` and `HTMLEditor::GetPreviousEditableHTMLNode()` r=m_kato

When I review patches, sometimes I saw wrong usage of !IsVisibleBRElement().
It means that it's an invisible <br> element or non-<br> element node,
but developers may think it checks whether it's an invisible <br> element
or not without checking the specifying content is a <br> element.

For avoiding this, there should be IsInvisibleBRElement() too.

Depends on D114932

This must make the callers of HTMLEditUtils::IsVisibleBRElement() and
HTMLEditUtils::IsInvisibleBRElement() easier to read.

Depends on D114933

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/e027618f6d55 part 43: Move `HTMLEditor::IsVisibleBRElement()` to `HTMLEditUtils::IsVisibleBRElement()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/bc079cb52514 part 44: Add `HTMLEditUtils::IsInvisibleBRElement()` for avoiding a mistake r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/dc799cfb8718 part 45: Add helper methods which test found `<br>` element visibility to `WSRunScanner` and `WSScanResult` r=m_kato

I realized that it's used only by the dead path because the only caller,
EditorBase::BeginningOfDocument() is overridden by HTMLEditor and
is never called.

Depends on D115116

They may return a descendant, and now HTMLEditUtils has some methods whose
name ends with Child and they scan only direct children of given node.
So, we should rename these methods for avoiding misunderstanding.

Depends on D115121

The different points are, whether it checks in a given element or not, and
whether it ignores non-editable content. Therefore, this patch adds new
LeafNodeType and new ancestor limiter argument.

The new flag is not handled in the other methods which take LeafNodeType
because there is no test.

Depends on D115122

Despite its name, it checks whether both given nodes are in same/no table
structure element or not. For avoiding this confusion, let's add
GetInclusiveAncestorAnyTableElement() to HTMLEditUtils and compare
the result of its calls with 2 content nodes.

Depends on D115169

It's used only by HTMLEditor::GetWhiteSpaceEndPoint() and it just skips
white-spaces and returns first white-space position if and only if the
given point container is a text node and its previous character is a
white-space. Therefore, it can be rewritten with EditorDOMPoint simply in
the caller.

Depends on D115170

Similarly, it's called only by HTMLEditor::GetWhiteSpaceEndPoint() and
it returns after point of last white-space if and only if the given point
container is a text node and the offset is not end of the text node.
Therefore, we can reimplement it in the caller simply.

Depends on D115171

Now, it does easy things and called only by
HTMLEditor::CreateRangeIncludingAdjuscentWhiteSpaces(). Therefore, we can
move the code into the caller.

Depends on D115172

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/c59a870859b2 part 46: Move `HTMLEditor::GetPriorHTMLSibling()` to `HTMLEditUtils` r=m_kato

And also HTMLEditor::CountEditableChildren() is moved since it's used only by
it.

Despite the long method name, it's really unclear what it does. I try to
explain it with new name, but the things which the method does are not make
sense. So, if you have better name idea, I'll take it...

Depends on D115173

Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/aa632a8427b0 part 47: Move `HTMLEditor::GetNextHTMLSibling()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/85aabcbe6fe5 part 48: Get rid of `HTMLEditUtils::GetFirstEditableLeafContent()` due to unused r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/f191e2cc4529 part 49: Move `HTMLEditor::GetLastEditableChild()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/5de53d489b7d part 50: Move `HTMLEditor::GetFirstEditableChild()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/4faec743b5f1 part 51: Move `HTMLEditor::IsFirstEditableChild()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/480d25550e0f part 52: Move `HTMLEditor::IsLastEditableChild()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/67d0fba3df92 part 53: Rename `HTMLEditUtils::GetFirstLeafChild()` and `HTMLEditUtils::GetLastLeafChild()` r=m_kato https://hg.mozilla.org/integration/autoland/rev/f4f4f32f1270 part 54: Merge `HTMLEditor::Get(First|Last)EditableLeaf()` into `HTMLEditUtils::Get(First|Last)LeafContent()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/31e6ee41cd5a part 55: Move `HTMLEditor::IsEmptyInlineNode()` and `HTMLEditor::IsEmptyOneHardLine()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/05436a767b5b part 56: Move `HTMLEditor::GetGoodCaretPointFor()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/a5c77aa7cbc5 part 57: Move `HTMLEditor::GetBetterInsertionPointFor()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/734be62c0dbc part 58: Move `HTMLEditor::IsEmptyBlockElement()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/40eb2ea58aa7 part 59: Move `HTMLEditor::GetMostAncestorInlineElement()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/8ca3ae12971f part 60: Move `HTMLEditor::GetNearestAncestorListItemElement()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/51c404b61e6c part 61: Get rid of `HTMLEditor::NodesInDifferentTableElements()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/6a0552785275 part 62: Get rid of `HTMLEditor::IsPrevCharInNodeWhiteSpace()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/ea32cc59ac32 part 63: Get rid of `HTMLEditor::IsNextCharInNodeWhiteSpace()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/99e716181ac9 part 64: Get rid of `HTMLEditor::GetWhiteSpaceEndPoint()` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/7ecdf3309563 part 65: Move `HTMLEditor::GetDeepestEditableOnlyChildDivBlockquoteOrListElement()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/55bb517a4ff5 part 66: Move `HTMLEditor::IsTextPropertySetByContent()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/3dd600a5fc90 part 67: Move `HTMLEditor::FindNearEditableContent()` to `HTMLEditUtils` r=m_kato
Pushed by masayuki@d-toybox.com: https://hg.mozilla.org/integration/autoland/rev/e72cd321bbaf part 68: Move `HTMLEditor::StartOrEndOfSelectionRangesIsIn()` to `AutoRangeArray` r=m_kato
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 90 Branch
Regressions: 1722535
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: