HTMLEditRules can access both mTextEditor and mHTMLEditor, but we should use mHTMLEditor only on HTMLEditRules for readability.
MozReview-Commit-ID: HfzwAD554XQ
--HG--
extra : rebase_source : 7d722915a41eb878e2cd2ff711ac4925bd91d1d8
Items in mActionListeners may be removed during a call of a method of another item. Therefore, all items should be copied to different array before each loop referring mActionListeners.
MozReview-Commit-ID: FA2xXdJ9SoR
--HG--
extra : rebase_source : 054a58f5a82df6911d42b17fdb3f11738ceab2af
GetIsDocumentEditable is implemnted in EditorBase, TextEditor, and HTMLEditor. This is virtual method, we won't use EditorBase::GetIsDocumentEditable. Also, TextEditor::GetIsDocumentEditable and HTMLEditor::GetIsDocumentEditable are same implementation. So we should merge this to EditorBase.
MozReview-Commit-ID: 62euqUaYAuY
--HG--
extra : rebase_source : 1a3025aeddc61d0ae3e0de334472ee8393893114
So, EditorEventListener should grab mEditorBase in smaller scope as far as possible. And each event listener method shouldn't access mEditorBase directly at calling its method since it might be changed to another instance.
MozReview-Commit-ID: IUCl5gbh4ut
--HG--
extra : rebase_source : 217d881923193a25db0649fc1f1a87bd43fa4d99
EditorEventListener doesn't check if mEditorBase is available even after it's removed from the editor. If it becomes nullptr, i.e., it's detached from editor, it shouldn't continue to handle event.
This patch changes some methods' nsIDOM*Event argument to WidgetEvent since it's simpler.
MozReview-Commit-ID: CI3U4pfVxtb
--HG--
extra : rebase_source : 7135c4615f6a1dd8bb4b6698261c75a9f8c70930
Before cleaning up EditorEventListener, we need to make it use Widget*Event at each event method.
MozReview-Commit-ID: 482HHN0bCVV
--HG--
extra : rebase_source : a2f504ca931ec98945f7317b972b21d765304c92
Part 3 fix of bug 1310912 is incorrect for not composition transaction. PlaceholderTransation is for saving and restoring current selection for undo. So we shouldn't use range updater to normal transaction.
Composition transaction can modify multiple nodes and it merges text node for ime into single text node. So if current selection is into IME text node, it might be failed to restore selection by UndoTransaction. So we need update selection by range updater to work UndoTransaction.
Also, CompositionTransaction::UndoTransaction will set selection after committed text. So at finally, selection will set correct position that composition transaction wants.
MozReview-Commit-ID: 1NcH32YoKPQ
--HG--
extra : rebase_source : 8a29ef3d4d4c64997416a8f3c7fd174766764ad3
EditorEventListener::MouseDown() may be called by HTMLEditorEventListener::MouseDown() too. In this case, mEditorBase may be nullptr. Therefore, EditorEventListener::MouseDown() should check if mEditorBase is still available before using it.
MozReview-Commit-ID: 1wAgPdt3db0
--HG--
extra : rebase_source : aa06dce861d93728c4302986fbea6096192460d9
IMEStateManager::OnClickInEditor() may cause anything because it may set input context. For example, it may cause opening VKB, changing focus or reflow. So, mEditorBase here might have been gone.
MozReview-Commit-ID: C0SVzb5SueS
--HG--
extra : rebase_source : a09c214ca3e9f15024060b208fa0161a458464a0
Except to nsIEditorStyleSheets and nsITableEditor, we use NS_DECL macro into HTMLEditor, so we should use macro for both.
MozReview-Commit-ID: I6v9mRXNci6
--HG--
extra : rebase_source : bf71cce0ca293a16ac437ba52871d8b926c715a5
Both methods don't override by TextEditor and HTMLEditor. It is unnecessary to use as virtual method.
MozReview-Commit-ID: 6FNO78RauML
--HG--
extra : rebase_source : fb74a9b83a889ab2be04529527704f6de4b666dd
Both methods don't override by HTMLEditor. It is unnecessary to use as virtual method.
MozReview-Commit-ID: CKqb0bxKEOr
--HG--
extra : rebase_source : 3a2127618693c339ad38995936acc0a3332b5f2e
We don't have no overload method for both methods. So we shouldn't use virtual.
And, other transaction methods return transaction object directly, we should change to it.
MozReview-Commit-ID: 7CXz4XeOobk
--HG--
extra : rebase_source : e208484decec42496e88bbee5ed7d19b1f6daf91
extra : amend_source : 1ebe4378f6c8133b874e573c10c368ae96a51d45
Other transaction classes use EditorBase directly, but these transaction classes use nsIEditor. To remove nsIDOMDocument XPCOM interface usage, I would like to use EditorBase directly.
MozReview-Commit-ID: 3alRd9Zj5aZ
--HG--
extra : rebase_source : ed8e917201a7b8b84551aa8494b7879202553238
TextEditor::InsertBR is called from HTMLEditor::TypedText only. So we should move it to HTMLEditor.
MozReview-Commit-ID: 4rPcayd9T5n
--HG--
extra : rebase_source : 975bb799b7cb71a55e45c5f4169d3e30a9aa5a27
Some uses nsIDOMCharacterData to get the attribute of text node. But, by using Text object, we don't need nsIDOMCharacter. So we should use Text object instead of nsIDOMCharacterData instead if possible.
MozReview-Commit-ID: 1cwTUcecFj3
--HG--
extra : rebase_source : 2b3745c1aa71ccaca7def3d10e9ad655b4987991
PopListItem still uses nsIDOM*. We should new binding API instead and it is unnecessary to use QI and refcounting if possible.
MozReview-Commit-ID: DJL105hNt6z
--HG--
extra : rebase_source : 40eaab3f8a13fdb7709d165f8374f96084121950
designMode is too strange. Parent of common ancestor of selection might be nullptr, so we should check whether nullptr.
MozReview-Commit-ID: Cy1k2Mpkws0
--HG--
extra : rebase_source : 104731f259d6c041972288e1e816d73cc6c93320
PopListItem still uses nsIDOM*. We should new binding API instead and it is unnecessary to use QI and refcounting if possible.
MozReview-Commit-ID: DJL105hNt6z
--HG--
extra : rebase_source : ca3944abde042aac769c64ad5caf8903e715b31d
designMode is too strange. Parent of common ancestor of selection might be nullptr, so we should check whether nullptr.
MozReview-Commit-ID: Cy1k2Mpkws0
--HG--
extra : rebase_source : 01201d52431bfd7961f3311daa89b50c61407e8b
The target node of HTMLEditRules::ReapplyCachedStyles() may be styled with its parent. When HTMLEditRules::ReapplyCachedStyles() is called, it shouldn't restore another style cache if it's already specified in current DOM tree.
MozReview-Commit-ID: DKCpQ8YyW7
--HG--
extra : rebase_source : 854b4cc6382f5357919bce1e106e71fe66b15444
Remove insertElement from TextEditRules due to unused. Also, comments into TextEditRules is out of date. We should update it using currect enum.
MozReview-Commit-ID: B1wczFWh2Ya
--HG--
extra : rebase_source : 910338b2f5d20316dcf11928e964346fa4aa8411
Now, nobody (including add-ons) uses nsIHTMLEditor::SetDocumentTitle(), so, we can remove it.
Additionally, mozilla::SetDocumentTitleTransaction is created only when nsIHMLEditor::SetDocumentTitle(), so, we can remove this class too.
MozReview-Commit-ID: HK7G9u7HUlh
--HG--
extra : rebase_source : da68cabbf929a684d26f6316fdc7f58b8e32ab02
IsTextNode is static method, so we should use explicitly static method call into EditRule.
MozReview-Commit-ID: EX2BbbN2vNJ
--HG--
extra : histedit_source : 4194477320ffad62da36b272239d1443bb6c88b6
Most codes into HTMLEditRules and TextEditRules don't use explicitly static method call such as EditorBase::GetStartNodeAndOffset. So we should use it instead of "editor->GetStartNodeAndOffset".
MozReview-Commit-ID: DGAEFK6AYzh
--HG--
extra : rebase_source : d1dafaca2dbe95d9b1c50c52245f29af75e0a9f2
extra : amend_source : c183380253a1cf5c1dbc1cf18eb70e26ca0cadeb
We can replace old nsIEditor API with nsIAtom version.
MozReview-Commit-ID: EMEANldtTo0
--HG--
extra : rebase_source : 2828270d42efe1786f88f13bf20c34bd56083d41