gecko-dev/editor/libeditor
Masayuki Nakano 5c35d9705d Bug 1421504 - EditorBase should move children carefully r=m_kato
While moving children of a container to another container, mutation observer
may move children before moving and/or move node immediately after the
insertion point.  Therefore, EditorBase should store all children which
should be moved with a local variable.  Then, move one by one carefully.
E.g., if a child before being moved is moved to different container, it
shouldn't be moved because JS already handles it as expected for the web
app.  If next sibling of the insertion point has been moved, EditorBase
should stop moving the remaining children because it may move children to
odd position and it may cause dataloss.

This patch creates EditorBase::MoveChildren() and it moves children carefully
with above checks.  Additionally, making its callers simpler, this patch also
creates EditorBase::MovePreviousSiblings() and MoveAllChildren().

MozReview-Commit-ID: FJDdSqXIlqD

--HG--
extra : rebase_source : 54bded29dbbd9547339a2c6e1a1264e22fbdc740
2017-11-29 17:57:00 +09:00
..
crashtests Bug 1415231 - Add crash tests for a regression of bug 1406482 which has been fixed by bug 1415509 r=m_kato 2017-11-10 10:58:33 +09:00
tests Bug 1035091: Disable @-moz-document on author sheets on nightly and early beta. r=xidorn 2017-11-29 22:16:46 +01:00
ChangeAttributeTransaction.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
ChangeAttributeTransaction.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
ChangeStyleTransaction.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
ChangeStyleTransaction.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
CompositionTransaction.cpp Bug 1393355 - Move SetTextRangeStyle from nsISelectionPrivate to Selection. r=masayuki 2017-08-24 16:56:12 +09:00
CompositionTransaction.h Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
CreateElementTransaction.cpp Bug 1415445 - part 1: CreateElementTransaction should use EditorRawDOMPoint and RangeBoundary r=m_kato 2017-11-08 16:49:06 +09:00
CreateElementTransaction.h Bug 1419745 - part 3: CreateElementTransaction and SplitNodeTransaction should store DOM point with EditorDOMPoint rather than RangeBoundary r=m_kato 2017-11-28 17:13:15 +09:00
CSSEditUtils.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
CSSEditUtils.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
DeleteNodeTransaction.cpp Bug 1372859 - Remove SelAdj* method of nsIDOM* version from RangeUpdater. r=masayuki 2017-06-14 19:34:38 +09:00
DeleteNodeTransaction.h Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
DeleteRangeTransaction.cpp Bug 1415414 - Make DeleteRangeTransaction::CreateTxnsToDeleteBetween() and DeleteRangeTransaction::CreateTxnsToDeleteContent() use RawRangeBoundary as their arguments r=m_kato 2017-11-08 15:01:23 +09:00
DeleteRangeTransaction.h Bug 1415414 - Make DeleteRangeTransaction::CreateTxnsToDeleteBetween() and DeleteRangeTransaction::CreateTxnsToDeleteContent() use RawRangeBoundary as their arguments r=m_kato 2017-11-08 15:01:23 +09:00
DeleteTextTransaction.cpp Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
DeleteTextTransaction.h Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
EditActionListener.h
EditAggregateTransaction.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
EditAggregateTransaction.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
EditorBase.cpp Bug 1421504 - EditorBase should move children carefully r=m_kato 2017-11-29 17:57:00 +09:00
EditorBase.h Bug 1421504 - EditorBase should move children carefully r=m_kato 2017-11-29 17:57:00 +09:00
EditorCommands.cpp Bug 1319340 - part8: EditorCommands should use TextEditor instead of nsIEditor, nsIPlaintextEditor and nsIEditorMailSupport r=m_kato 2017-08-04 20:41:20 +09:00
EditorCommands.h
EditorController.cpp
EditorController.h
EditorDOMPoint.h Bug 1421504 - EditorBase should move children carefully r=m_kato 2017-11-29 17:57:00 +09:00
EditorEventListener.cpp Bug 1411612: Kill nsINode::eCONTENT. r=bz 2017-10-25 17:19:11 +02:00
EditorEventListener.h Bug 1344149 EditorEventListener shouldn't handle odd focus/blur events which may be created in chrome script r=smaug 2017-03-08 15:24:55 +09:00
EditorUtils.cpp Bug 1414713 - EditorUtils::IsDescendantOf() should take EditorDOMPoint and EditorRawDOMPoint as out param r=catalinb,m_kato 2017-11-06 17:01:33 +09:00
EditorUtils.h Bug 1413181 - part 13: HTMLEditRules::MaybeSplitAncestorsForInsert() should be able to return a DOM point in text node r=m_kato 2017-11-19 11:05:26 +09:00
EditorUtils.js
EditorUtils.manifest
EditTransactionBase.cpp
EditTransactionBase.h
HTMLAbsPositionEditor.cpp Bug 1380292 - Don't turn on object resizer, inline table editor and etc when element isn't into editor. r=masayuki 2017-09-09 10:49:02 -04:00
HTMLAnonymousNodeEditor.cpp Bug 1407924 - Avoid conversion from nsAtom to string if possible. r=masayuki 2017-10-12 16:28:28 +09:00
HTMLEditor.cpp Bug 1416080 - Part 1. Move all CreateBR methods to TextEditor. r=masayuki 2017-11-27 15:01:11 +09:00
HTMLEditor.h Bug 1416080 - Part 1. Move all CreateBR methods to TextEditor. r=masayuki 2017-11-27 15:01:11 +09:00
HTMLEditorDataTransfer.cpp Bug 1413181 - part 10: Redesign EditorBase::SplitNodeDeep() r=m_kato 2017-11-16 12:09:57 +09:00
HTMLEditorEventListener.cpp Bug 1391978 - Part 1. Replace nsISelection::GetRangeCount with Selection::RangeCount. r=masayuki 2017-08-28 14:52:25 +09:00
HTMLEditorEventListener.h Bug 1387317 - part2: EditorEventListener should stop using interface methods as far as possible r=m_kato 2017-08-08 11:25:36 +09:00
HTMLEditorObjectResizer.cpp Bug 1408767 - HTMLEditor::MouseMove: Remove two unused variables r=m_kato 2017-10-15 19:32:43 +02:00
HTMLEditorObjectResizerUtils.h Bug 1374207 - part3: Editor classes should use concrete classes instead of nsI*Editor r=m_kato 2017-06-22 15:02:59 +09:00
HTMLEditRules.cpp Bug 1408829 - Make spellCheckAfterEditorChange as noscript. r=masayuki 2017-11-29 18:00:11 +09:00
HTMLEditRules.h Bug 1413181 - part 12: Redesign and rename HTMLEditRules::SplitAsNeeded() r=m_kato 2017-11-17 16:03:11 +09:00
HTMLEditUtils.cpp Bug 1418002 - Remove HTMLContentElement, r=jessica 2017-11-30 10:57:15 +02:00
HTMLEditUtils.h Bug 1411687 - part 2: Rewrite the check to insert a <br> element in HTMLEditRules::WillInsertBreak() r=m_kato 2017-10-27 01:27:44 +09:00
HTMLInlineTableEditor.cpp Bug 1380292 - Don't turn on object resizer, inline table editor and etc when element isn't into editor. r=masayuki 2017-09-09 10:49:02 -04:00
HTMLStyleEditor.cpp Bug 1413181 - part 10: Redesign EditorBase::SplitNodeDeep() r=m_kato 2017-11-16 12:09:57 +09:00
HTMLTableEditor.cpp Bug 1415062 - part 2: Editor should use Selection::Collapse(const RawRangeBoundary&) as far as possible r=m_kato 2017-11-07 19:50:25 +09:00
HTMLURIRefObject.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
HTMLURIRefObject.h
InsertNodeTransaction.cpp Bug 1413253. Make sure to make it clear that we'd report a JS exception on the ErrorResult in InsertNodeTransaction::DoTransaction. r=peterv 2017-11-07 15:36:41 -05:00
InsertNodeTransaction.h Backed out changeset d59889304b3f (bug 1408125) for asserting in clipboard test editor/libeditor/tests/test_bug1306532.html. r=backout on a CLOSED TREE 2017-10-14 00:05:15 +02:00
InsertTextTransaction.cpp Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
InsertTextTransaction.h Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
InternetCiter.cpp
InternetCiter.h
JoinNodeTransaction.cpp Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
JoinNodeTransaction.h Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
ManualNAC.h Bug 1386110 - Use a smart pointer to reliably de-register NAC regardless of how it goes away. r=masayuki 2017-08-03 20:26:11 -07:00
moz.build Bug 1408544 - part 1: Reimplement EditorDOMPoint as a subclass of RangeBoundary r=catalinb,m_kato 2017-11-01 14:41:03 +09:00
nsIAbsorbingTransaction.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
nsIEditRules.h Bug 1360154 - Part 1. DocumentIsBody should return bool, not nsresult. r=masayuki 2017-05-11 14:03:26 +09:00
PlaceholderTransaction.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
PlaceholderTransaction.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
SelectionState.cpp Bug 1413181 - part 3: EditorBase::CreateTxnForSplitNode() and EditorBase::SplitNode() should take EditorRawDOMPoint to specify the start of right node r=m_kato 2017-11-12 11:30:30 +09:00
SelectionState.h Bug 1413181 - part 3: EditorBase::CreateTxnForSplitNode() and EditorBase::SplitNode() should take EditorRawDOMPoint to specify the start of right node r=m_kato 2017-11-12 11:30:30 +09:00
SplitNodeTransaction.cpp Bug 1413181 - part 2: SplitNodeTransaction should store start of existing right node with RangeBoundary r=m_kato 2017-11-12 09:27:19 +09:00
SplitNodeTransaction.h Bug 1419745 - part 3: CreateElementTransaction and SplitNodeTransaction should store DOM point with EditorDOMPoint rather than RangeBoundary r=m_kato 2017-11-28 17:13:15 +09:00
StyleSheetTransactions.cpp Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
StyleSheetTransactions.h Bug 1349138 Edit transactions should store their editor instance with strong reference r=smaug 2017-03-21 19:00:36 +09:00
TextEditor.cpp Bug 1416080 - Part 1. Move all CreateBR methods to TextEditor. r=masayuki 2017-11-27 15:01:11 +09:00
TextEditor.h Bug 1416080 - Part 1. Move all CreateBR methods to TextEditor. r=masayuki 2017-11-27 15:01:11 +09:00
TextEditorDataTransfer.cpp Bug 1391978 - Part 1. Replace nsISelection::GetRangeCount with Selection::RangeCount. r=masayuki 2017-08-28 14:52:25 +09:00
TextEditorTest.cpp Bug 1391978 - Part 9. Replace nsISelection::GetAnchorNode with Selection::GetAnchorNode. r=masayuki 2017-08-25 16:12:39 +09:00
TextEditorTest.h
TextEditRules.cpp Bug 1421561 - Use IgnoredErrorResult in TextEditRules::WillInsertText(); r=masayuki 2017-11-29 17:09:53 +08:00
TextEditRules.h Bug 1408829 - Make spellCheckAfterEditorChange as noscript. r=masayuki 2017-11-29 18:00:11 +09:00
TextEditRulesBidi.cpp
TextEditUtils.cpp
TextEditUtils.h
TypeInState.cpp Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
TypeInState.h Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro. 2017-10-03 09:05:19 +11:00
WSRunObject.cpp Bug 1415509 - part 3: WSRunObject::InsertText() should take |const EditorRawDOMPoint&| as input argument and |EditorRawDOMPoint*| as out argument instead of a set of container, child and offset of the child in the container as in/out argument r=m_kato 2017-11-09 13:24:06 +09:00
WSRunObject.h Bug 1415509 - part 3: WSRunObject::InsertText() should take |const EditorRawDOMPoint&| as input argument and |EditorRawDOMPoint*| as out argument instead of a set of container, child and offset of the child in the container as in/out argument r=m_kato 2017-11-09 13:24:06 +09:00