Commit Graph
330 Commits
Author SHA1 Message Date
Nicholas Nethercote 72983a4704 Bug 1394583 - Remove default properties from nsIHTMLEditor. r=masayuki.
nsIHTMLEditor's addDefaultProperty(), removeDefaultProperty(),
removeAllDefaultProperties() methods are never used -- not from C++ code or
script, in either mozilla-central or comm-central.

So this patch removes them. This means that HMLTEditor::mDefaultStyles is never
used, so the patch removes it and all the code that manipulates it as well.
2017-08-25 16:59:17 +10:00
Nicholas Nethercote b946c0f846 Bug 1393642 - Remove nsIAtom/nsIAtomService usage from script in editor/. r=masayuki.
nsIHTMLEditor has several scriptable methods (addDefaultProperty(),
removeDefaultProperty(), etc.) that have nsIAtom parameters. We're in the
process of deCOMtaminating nsIAtom (bug 1392883) so these methods need to be
changed.

This patch does the following.

- It changes those methods to take an AString instead of an nsIAtom.

- For each existing method, it adds to HTMLEditor a new C++ method of the same
  name that takes an nsIAtom parameter.

- It updates TextEditorTest.cpp to use strings instead of atoms, in order to
  keep using the XPIDL methods.

- It updates test_bug1140105.html to pass strings instead of atoms to
  getInlineProperty(). This removes the use of nsIAtomService.
2017-08-25 15:40:45 +10:00
Masayuki Nakano 6b2c6e015e Bug 1387317 - part5: AutoPlaceHolderBatch should take EditorBase instead of nsIEditor r=m_kato
AutoPlaceHolderBatch can take EditorBase class and its inherited class, AutoEditBatch, can be removed if we implement other constructor which doesn't take transaction name.

Additionally, nsIEditor::(Begin|End)PlaceHolderTransaction() are referred only by AutoPlaceHolderBatch.  Therefore, they can be non-public methods and removed from nsIEditor interface.

Note that this patch also repalces "PlaceHolder" with "Placeholder" since it's a word.

MozReview-Commit-ID: 5dw3kcX3bOx
2017-08-14 14:56:39 +09:00
Masayuki Nakano d64aa3cb8c Bug 1387317 - part2: EditorEventListener should stop using interface methods as far as possible r=m_kato
MozReview-Commit-ID: EPQeBez2tJh
2017-08-08 11:25:36 +09:00
Ehsan Akhgari 432bb13af7 Bug 1387522 - Avoid using nsINode::GetChildAt() in HTMLStyleEditor.cpp; r=masayuki
This method will become a lot slower when bug 651120 lands.
2017-08-14 12:02:33 -04:00
Sebastian Hengst 771e5387cf Backed out changeset d511913b5284 (bug 1387522) for failing mochitest editor/libeditor/tests/test_bug767684.html. r=backout 2017-08-13 20:21:26 +02:00
Ehsan Akhgari 59b72975ae Bug 1387522 - Avoid using nsINode::GetChildAt() in HTMLStyleEditor.cpp; r=masayuki
This method will become a lot slower when bug 651120 lands.
2017-08-13 13:22:17 -04:00
Ehsan Akhgari 64452163ee Bug 1385514 - Part 2: Replace 'spaz' with 'change' in the editor code 2017-07-31 11:20:38 -04:00
Masayuki Nakano e600000538 Bug 1377978 - Make nsRange use uint32_t to offset r=smaug
DOM Standard defines that offset of Range is unsigned long.  However, nsRange uses int32_t to them.

This patch makes nsRange use uint32_t instead.  However, this patch does NOT allow to set over INT32_MAX as offset values since a lot of users of nsRange cannot treat the values as over INT32_MAX because a lot of internal APIs take int32_t as offsets.

For easier to search such points, this patch adds static_cast<int32_t> to uint32_t variables when they are used for int32_t arguments.

And note that nsContentUtils::ComparePoints() behaves odd.  It accepts negative offset and compares such value with valid offset simply.  This patch still uses int32_t offset variables in nsRange::CompareNodeToRange() even though it may be negative value if nsINode::IndexOf() returns -1 because the caller of it depends on this behavior.

MozReview-Commit-ID: 8RbOgA86JuT
2017-07-19 22:49:52 +09:00
Masayuki Nakano f4a5a8a21e Bug 1377989 - part2: Rename nsRange::GetEndParent() to nsRange::GetEndContainer() r=smaug
MozReview-Commit-ID: K4qPjtZ62yO
2017-07-11 21:11:37 +09:00
Masayuki Nakano 7015ac1e62 Bug 1377989 - part1: Rename nsRange::GetStartParent() to nsRange::GetStartContainer() r=smaug
Web standards use "Container" instead of "Parent".  So, nsRange shouldn't use "Parent" for its members and methods.

MozReview-Commit-ID: Ho6N0diuWtE
2017-07-11 20:53:04 +09:00
Makoto Kato cee5580cc3 Bug 1375131 - Part 3. Use stack class to save ranges before using on loop. r=masayuki
We have a possible loop like this bug.  So we should use stack class for loop.

MozReview-Commit-ID: LQb9w8LEtbx
2017-06-23 16:46:54 +09:00
Masayuki Nakano a248c7645b Bug 1374207 - part3: Editor classes should use concrete classes instead of nsI*Editor r=m_kato
HTMLEditor inherits some interface classes.  Therefore, CachedWeakPtr is confused at ambiguous conversion from HTMLEditor to nsISupports.  Therefore, this patch adds second parameter to the template class.

MozReview-Commit-ID: KGSYJHfp1L5
2017-06-22 15:02:59 +09:00
Masayuki Nakano 61876e44c2 Bug 1367683 Optimize initializing nsRange r=smaug
nsRange::DoSetRange() adds/remove its root to/from mutation observer, initializes common ancestor, registers itself to the common ancestor, unregisters itself from old common ancestor, and notifies selection listeners of selection change.

However, those runtime cost is expensive but on the other hand, a lot of callers set both start and end of the range and that causes calling DoSetRange() twice.

This patch renames Set() to SetStartAndEnd() for easier to understand the meaning and make it call DoSetRange() only once.

MozReview-Commit-ID: FRV55tuBAgg
2017-05-30 13:18:25 +09:00
Makoto Kato 741f0bfc71 Bug 1342417 - ClearStyle should check that SplitStyleAbovePoint returns node. r=masayuki
SplitStyleAbovePoint can return null for split node, but we don't check it.
Also, this crash occurs on paste operation, so I think that there is 100% reproduce test.  But I cannot find it.

MozReview-Commit-ID: 69OlPTc0I9h
2017-05-25 17:15:54 +09:00
David Major cb5ae7a6d9 Bug 1344629 - Part 8: Make nsTLiteralString inherit from nsTStringRepr. r=dbaron
This is the patch that all the others have been leading up to: by inheriting from nsTStringRepr, nsTLiteralString loses its destructor (previously suppplied by nsTSubstring).

I included an AsString() cast as an escape hatch for a few pieces of code that couldn't easily accommodate the new hierarchy, but I'm pretty pleased with how little it was necessary.

MozReview-Commit-ID: 2zGkaw1sMUp
2017-03-14 15:26:36 +13:00
Iris Hsiao 22d2818760 Backed out 12 changesets (bug 1344629) for stylo build bustage
Backed out changeset cf4273d3ac30 (bug 1344629)
Backed out changeset a96390e044e0 (bug 1344629)
Backed out changeset d9b330f9bc24 (bug 1344629)
Backed out changeset 2b460fe020af (bug 1344629)
Backed out changeset 0ada91b0452e (bug 1344629)
Backed out changeset 083304fcd6bd (bug 1344629)
Backed out changeset 53d7d1ce2c97 (bug 1344629)
Backed out changeset 55eee7078ae4 (bug 1344629)
Backed out changeset 7d3c06b3eca9 (bug 1344629)
Backed out changeset e5df14c3db61 (bug 1344629)
Backed out changeset 636095ff2815 (bug 1344629)
Backed out changeset 0be052ad24c1 (bug 1344629)
2017-03-14 11:52:24 +08:00
David Major 4840f0d2a7 Bug 1344629 - Part 8: Make nsTLiteralString inherit from nsTStringRepr. r=dbaron
This is the patch that all the others have been leading up to: by inheriting from nsTStringRepr, nsTLiteralString loses its destructor (previously suppplied by nsTSubstring).

I included an AsString() cast as an escape hatch for a few pieces of code that couldn't easily accommodate the new hierarchy, but I'm pretty pleased with how little it was necessary.

MozReview-Commit-ID: 2zGkaw1sMUp
2017-03-14 15:26:36 +13:00
Makoto Kato 71d1712a25 Bug 833889 - Part 1. Remove CSS properties even if it is default value. r=masayuki
When selected nodes are <span style="font-weight: normal;">A</span>, toggle bold inserts new span element into parent node like <span style="font-weight: bold;"><span style="font-weight: normal;">A</span><span>.  So bold isn't applied correctly.

IsCSSEquivalentToHTMLInlineStyleSet might return false even if style is applied.  Because it returns true that style isn't default value.  Since "font-weight: normal" is default property, it isn't removed.

So when style is already applied even if it is default value, we should remove it.

MozReview-Commit-ID: LgImkHRp9Ff
2017-02-23 17:10:27 +09:00
Makoto Kato 820f5efcdb Bug 1324996 - Part 2. Use nsIAtom to change attirbute if possible. r=masayuki
We can replace old nsIEditor API with nsIAtom version.

MozReview-Commit-ID: EMEANldtTo0
2016-12-20 20:53:00 +09:00
Masayuki Nakano e8e68353a3 Bug 564411 Move all methods/attributes of nsIEditorIMESupport to nsIEditor r=smaug
Doing QI from nsIEditor to nsIEditorIMESupport doesn't make sense because editor should always support all methods and attributes of nsIEditorIMESupport (it does NOT mean that all nsIEditor implementation need to support IME).

This patch moves all of them to nsIEditor for avoiding redundant QIs.

MozReview-Commit-ID: DzIKuGHG4iy
2016-12-20 21:47:31 +09:00
Makoto Kato e52a81720b Bug 1317704 - Part 1. Hold current ranges into RemoveInlineProperty. r=masayuki
Since current selection ranges might be modified by SplitStyleAboveRange,  this crash occurs into RemoveInlinePropertyImpl.  So we need hold current selection range for loop.

MozReview-Commit-ID: JuXn9XlwCp6
2016-12-15 15:01:53 +09:00
Makoto Kato 207e7d4433 Bug 1323138 - CSSEditUtils should use atom for CSS property if possible. r=masayuki
There is a lot of string compare when using CSS property name.  We should use nsGkAtoms instead.

MozReview-Commit-ID: JvpWRTkM8U
2016-12-12 00:03:36 -10:00
Masayuki Nakano 70065b8279 Bug 1311240 Fix odd "{" and "}" of control statements in editor for conforming to our coding rules r=smaug
Currently, editor code uses following style (or similar style) in a lot of places:

if (foo)
{

}
else
{

}

This patch fixes this as conforming to our coding rules, i.e., it becomes:

if (foo) {

} else {

}

Additionally, this fixes other odd control statements in the files which include above issue because it's difficult to find following issues with searching the files:

* if (foo) bar;
* if (foo) { bar; }
* if (foo)
    bar;

Finally, if it becomes much simpler than current code, this patch rewrites existing code with "early return style". But this case is only a few places because this is risky.

MozReview-Commit-ID: 2Gs26goWXrF
2016-10-24 11:27:45 +09:00
Masayuki Nakano 381c9c05ee Bug 1310618 Replace nsresult variables |res| with |rv| under editor/ r=Ehsan
In our coding rules, variable names of nsresult should be rv.  Indeed, when you see |rv| in the code, you must assume that its type if nsresult.

However, a lot of code under editor/ uses |res| for the variables of nsresult.  Let's replace |res| with |rv|.

And this patch improves following points:

1. When |rv| is set in both |if| and |else| block and they are check outside of them, this moves the check into each |if| and |else| block because even if the failure is notified with warning, you cannot see which case was performed and failed.  This change makes it clear.

2. When |return rv;| returns non-error code because |rv| is checked with NS_ENSURE_SUCCESS() immediately before, setting replacing it with |return NS_OK;| is clearer.

3. Move declaration of |nsresult rv| into smaller scope as far as possible.  This prevents setting rv to unexpected value and easier to check its value at reading the code.

MozReview-Commit-ID: 9MAqj7sFey3
2016-10-19 18:09:33 +09:00
Michael Layzell b73afbd34b Bug 1018486 - Part 2: Changes in editor/, r=masayuki
MozReview-Commit-ID: JA7UCVXEd8j
2016-09-07 10:50:37 -04:00
Masayuki Nakano f55cf1ebb4 Bug 1260651 part.61 Replace "etc" with "etc." r=mccr8
MozReview-Commit-ID: JFgd0t2bqzu
2016-07-08 14:15:21 +09:00
Masayuki Nakano 349d5d7916 Bug 1260651 part.60 editor/libeditor should export some headers which are required by other modules and other modules shouldn't use local include for them r=mccr8
MozReview-Commit-ID: FZSExwkHH2B
2016-07-08 14:03:31 +09:00
Masayuki Nakano 5307069dfd Bug 1260651 part.59 Rename nsEditor to mozilla::EditorBase (and also their file names) r=mccr8
This patch also renames:

EditorInputEventDispatcher -> mozilla::EditorInputEventDispatcher

And some variable names are renamed from aEditor or mEditor to aEditorBase or mEditorBase for making their types clearer.

MozReview-Commit-ID: 2FCXWpLMn8e
2016-07-08 13:10:13 +09:00
Masayuki Nakano 58f2b7d302 Bug 1260651 part.56 Rename nsHTMLEditor to mozilla::HTMLEditor and related stuff r=mccr8
This patch renames classes/structs as:

nsHTMLEditor -> mozilla::HTMLEditor
nsHTMLEditor::BlobReader -> mozilla::HTMLEditor::BlobReader
SetSelectionAfterTableEdit -> mozilla::AutoSelectionSetterAfterTableEdit

nsHTMLEditor.h -> HTMLEditor.h (exposed as mozilla/editor/HTMLEditor.h)
nsHTMLAbsPosition.cpp -> HTMLAbsPositionEditor.cpp
nsHTMLAnonymousUtils.cpp -> HTMLAnonymousNodeEditor.cpp
nsHTMLDataTransfer.cpp -> HTMLEditorDataTransfer.cpp
nsHTMLEditorStyle.cpp -> HTMLStyleEditor.cpp
nsHTMLInlineTableEditor.cpp -> HTMLInlineTableEditor.cpp
nsHTMLObjectResizer.cpp -> HTMLEditorObjectResizer.cpp
nsTableEditor.cpp -> HTMLTableEditor.cpp

These new file names are clearer names which related to HTMLEditor than old names.

MozReview-Commit-ID: DTWaoFvy0DF
2016-07-09 11:42:33 +09:00