Commit Graph

100 Commits

Author SHA1 Message Date
Ms2ger
21e7bf16da Bug 718170 - Part a: Use nsINode in IsEmptyNodeImpl; r=ehsan 2012-01-25 08:50:05 +01:00
Ms2ger
2e0c12b87c Bug 716630 - Kill editor's warnings; r=ehsan 2012-01-11 09:22:16 +01:00
David Zbarsky
e96cf389ad Bug 682611 - Part 2: Remove nsIRange; r=smaug 2012-01-10 15:19:54 +01:00
David Zbarsky
27f2baf8e1 Bug 682611 - Part 1: Merge nsIDOMRange and nsIDOMNSRange; r=Ms2ger r=smaug 2012-01-10 15:19:54 +01:00
Ms2ger
693d1581f3 Bug 709523 - Part g: Remove nsHTMLEditRules::{Will,Did}DeleteRange; r=ehsan a=edmorley 2011-12-11 21:03:49 +01:00
Fabien Cazenave
67ba2ac03b Bug 684187 - Use dom::Element instead of nsIDOMElement for nsEditor::mRootElement; r=ehsan 2011-12-03 22:50:15 +01:00
Ehsan Akhgari
2a602a5685 Bug 690892 - Replace PR_TRUE/PR_FALSE with true/false on mozilla-central; rs=dbaron
Landing on a CLOSED TREE
2011-10-17 10:59:28 -04:00
Michael Wu
d8e503c38b Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones
--HG--
rename : tools/trace-malloc/bloatblame.c => tools/trace-malloc/bloatblame.cpp
2011-09-28 23:19:26 -07:00
Ehsan Akhgari
cc23586321 Bug 414178 - Do not allow to inject a list outside of the active editing host; r=roc 2011-09-13 11:39:40 -04:00
Fabien Cazenave
ec441b95e5 Bug 570144 - After pressing Enter, editable DIVs in list items are duplicated; r=ehsan 2011-09-12 15:25:38 -04:00
Fabien Cazenave
de80659037 Bug 290026 - Outdent of List does not work properly; r=ehsan 2011-09-02 12:21:33 -04:00
Fabien Cazenave
82c46e275a Bug 291780 - List outdent is not working properly; r=ehsan 2011-09-02 12:19:09 -04:00
Fabien Cazenave
e48e824329 Bug 677752 - [contentEditable] indent and justify* fail on editable nodes that have only one child; r=ehsan
Issue #1: indent/justify* can create non-valid fragments.
When applying a block-level formatting to a text node, Gecko creates a div or
blockquote block around the text node and sets the corresponding "align" or
"style" attribute. This patch checks that the active editing host can contain
such a block-level element.

Issue #2: indent/justify* can modify the active editing host.
On the first child of the editable element, the selection is extended outside of
the active editing host -- which causes a few issues for our test cases.
In this patch, this issue is "solved" by modifying
`nsHTMLEditRules::GetPromotedPoint' for block-level operations.


** About the tests **

Sorry for the long explanation but I prefer to be as sharp as possible when I
have to modify existing unit tests.

This patch raises 34 unit test "failures" which are improvements.
Two test files are concerned and have been modified accordingly:
  * test_htmleditor_keyevent_handling
  * test_richtext2.html

One test has been clarified (no real modification):
  * test_bug414526.html

Of course, a specific unit test has been added, see `test_bug677752.html'.


** editor/libeditor/html/tests/test_htmleditor_keyevent_handling.html **
Outdenting now works properly, which results in 4 `FAIL'.

  * 7372 ERROR TEST-UNEXPECTED-FAIL
      | non-tabbable HTML editor: Shift+Tab after Tab on UL
      - got "<ul><li id=\"target\">ul list item</li></ul>",
      expected "<ul><ul><li id=\"target\">ul list item</li></ul></ul>"

  * 7379 ERROR TEST-UNEXPECTED-FAIL
      | non-tabbable HTML editor: Shift+Tab on UL
      - got "ul list item",
      expected "<ul><li id=\"target\">ul list item</li></ul>"

  * 7415 ERROR TEST-UNEXPECTED-FAIL
      | non-tabbable HTML editor: Shift+Tab after Tab on OL -
      got "<ol><li id=\"target\">ol list item</li></ol>",
      expected "<ol><ol><li id=\"target\">ol list item</li></ol></ol>"

  * 7422 ERROR TEST-UNEXPECTED-FAIL
      | non-tabbable HTML editor: Shfit+Tab on OL
      - got "ol list item",
      expected "<ol><li id=\"target\">ol list item</li></ol>"


** editor/libeditor/html/tests/browserscope/test_richtext2.html **
The 15 tests that now pass result in 15 `FAIL' and 15 `UNEXPECTED_PASS'.
Here's an overview of what we had before the patch:

  * Section A - Apply Formatting Tests: +10 points
                    before patch: 21/31 (Selection:  9/31)
                     after patch: 28/31 (Selection: 12/31)

      FB:BQ_TEXT-1_SI    EXECUTION EXCEPTION
      FB:BQ_TEXT-1_SI    EXECUTION EXCEPTION
      FB:BQ_BR.BR-1_SM   EXECUTION EXCEPTION
      FB:BQ_BR.BR-1_SM   EXECUTION EXCEPTION
      IND_TEXT-1_SI      EXECUTION EXCEPTION
      IND_TEXT-1_SI      EXECUTION EXCEPTION
      JC_TEXT-1_SC       editing host is modified
      JF_TEXT-1_SC       editing host is modified
      JL_TEXT-1_SC       editing host is modified
      JR_TEXT-1_SC       editing host is modified

  * Section AC - Apply Formatting Tests, using styleWithCSS: +5 points
                    before patch:  7/18 (Selection:  5/18)
                     after patch: 12/18 (Selection:  5/18)

      IND_TEXT-1_SI      editing host is modified
      JC_TEXT-1_SC       editing host is modified
      JF_TEXT-1_SC       editing host is modified
      JL_TEXT-1_SC       editing host is modified
      JR_TEXT-1_SC       editing host is modified


** editor/libeditor/html/tests/test_bug414526.html **
This test has been clarified to get more explicit report messages -- the test
themselves haven't been changed. A `todo_is' test has been added.
This test is the one that shows that `IsNodeInActiveEditor' can't be modified,
and that limiting the range promotion for block-level operations is preferrable.
2011-08-23 15:10:14 -04:00
Fabien Cazenave
e60f67e68a Bug 680279 - Splitting Gmail rich-text list with Enter misplaces the caret; r=ehsan
The patch for bug 674861 has introduced a regression.
When a list is splitted, a new paragraph should inserted before the new list.
2011-08-19 18:14:04 -04:00
Fabien Cazenave
17c25f96ca Bug 674212 - Modifying text of a contenteditable DOM Node removes spellcheck underlinings; r=ehsan 2011-08-17 17:12:46 -04:00
Vidar Haarr
5869e7ff62 Bug 232691 - Replace nsString emptyString; with EmptyString() in nsHTMLEditRules; r=ehsan 2011-08-13 14:59:48 +02:00
Ms2ger
72dee98c7b Bug 677340 - Return already_AddRefed instead of nsCOMPtr from various functions in editor/; r=ehsan 2011-08-11 15:29:59 +02:00
Fabien Cazenave
d46ef85530 Bug 442186 - execCommand justify* fails on first line of contenteditable; r=ehsan
Given the way GetPromotedPoint / IsNodeInActiveEditor are designed, when the
selection is in the first child element of the active editing host the
selection is extended outside of editor node.

As a result, `GetNodesFromSelection' (which is called at the beginning of
`WillAlign') returns two nodes:
1. an empty text node, which is enclosed in a <div style="text-align: ***">;
2. the first child element, which is destroyed when it's a <div>;

Proposed solution:
#1 can be avoided by checking that the node is editable in `WillAlign';
#2 can be avoided by not dropping <div> blocks in `RemoveAlignment'.
This is an opportunity to simplify `RemoveAlignment' a bit.
2011-08-10 19:03:34 -04:00
Fabien Cazenave
5dd43c9b97 Bug 674861 - contentEditable lists should not be splittable; r=ehsan
In design mode, pressing [Return] twice in a list (ol, ul, dl) splits the list
and inserts a paragraph. When the list is the active editing host, it should not
be split.
2011-08-02 15:04:43 -04:00
Michael Wu
6a28121ce1 Bug 671417 - Incorrect use of PRBool when other types are more appropriate or vice versa, r=bz,ehsan,dwitte,joe,vlad,luke,mak,roc 2011-07-26 23:43:37 -07:00
Fabien Cazenave
9e280efb90 Bug 460740 - [contentEditable] invalid results when pressing Enter in a bunch of different cases; r=ehsan
In some situations, pressing Enter in a contentEditable node fails:
 * in an editable paragraph, list item or header, pressing Enter
   creates another editable block;
 * in an inline editable node, pressing Enter does nothing.

That's because nsHTMLEditRules::WillInsertBreak doesn't check for the active
editing host. This patch should fix it.
2011-07-26 17:38:23 -04:00
Fabien Cazenave
2c92600954 Bug 688599 - do not expand selection for deletion outside of the active editing host; r=ehsan
When a selection in an inline element is to be deleted, it is first expanded to
the parent block in order not to leave any empty inline element. This patch
ensures that the selection cannot be expanded outside of the contentEditable
element (active editing host).
2011-07-25 17:11:46 -04:00
Fabien Cazenave
81bff8a94d Bug 449243 - contentEditable: insert <p> instead of <br>; r=ehsan
In editable elements, create a paragraph instead of a <br> node
when [Return] is pressed:
 * once in a header node (<h[1..6]>);
 * twice in a list item node (<li>).
2011-07-22 12:19:17 -04:00
Ehsan Akhgari
a6b5feed16 Bug 671672 - Reduce a bunch of console spam in debug builds caused by the HTML editor; r=roc 2011-07-14 17:06:37 -04:00
Ehsan Akhgari
4a9dec68d7 Bug 414526 - Backspace at the beginning of a contenteditable element or delete at the end of one should not affect the rest of the contenteditable elements on the page; r=roc
The main fix here involves the introduction of the nsHTMLEditor::IsNodeInActiveEditor
API.  This API returns true if the current selection in the document falls
inside the active editable section.  The patch adds a bunch of checks using
this API to various places in the code to make sure that editing operations do
not escape their editing host.

There are also some unrelated fixes to range promotion code which fix the
bugs that have existed in that code before, but because of the lack of this
check were not uncovered before.

This patch also removes the nsTextEditUtils::InBody API which only made sense
in designMode documents, and was insufficient for contenteditable elements.
2011-07-14 11:25:07 -04:00
Simon Montagu
ae37ce037d Undefine caret bidi level during reflow instead of on text entry. Bug 664087, r=roc 2011-07-05 08:42:32 +03:00
Ehsan Akhgari
beba2dbb1d Bug 439808 - Make sure that deleting a selection works in inline contenteditable elements which have a non-editable parent block; r=roc
--HG--
extra : rebase_source : 74d3df996b904032696000daa532d217140d3b2d
2011-06-29 21:01:59 -04:00
Masayuki Nakano
db1e5b26fa Bug 664437 editor should use mozilla::Preferences r=ehsan 2011-06-17 09:59:29 +09:00
Jonas Sicking
17ec46a39a Bug 659053 Part 1: Merge nsIDOM3Node into nsIDOMNode. Also removes Node.getFeature. r=peterv 2011-06-14 00:56:48 -07:00
Dominic Fandrey
0ab2f46136 Bug 645398 - Substitute PR_(MAX|MIN|ABS|ROUNDUP) macro calls; r=roc 2011-06-02 14:56:50 +02:00
Ehsan Akhgari
319dc53b8e Bug 658516 - nsHTMLEditRules.cpp:5810:52: warning: comparison between signed and unsigned integer expressions. r=roc
--HG--
extra : rebase_source : 6772483c9ca0eb23444850db1f30f0144516a861
2011-05-25 10:10:45 +02:00
Craig Topper
4e38ca20a7 Bug 658143 - Part 1: Changes nsCOMPtr<nsFrameSelection> to nsRefPtr. r=roc 2011-05-18 20:10:49 -07:00
Ms2ger
63679730f9 Bug 657160 - Remove NS_NewHTMLEditRules; r=ehsan 2011-05-15 12:15:35 +02:00
Ed Morley
082d53f39b Bug 655756 - Remove final XP_MAC remnants; r=josh 2011-05-10 20:24:48 +02:00
Jonas Sicking
549cf0a0a2 Bug 643786. Don't fire DOMNodeRemoved when removing the editor created <br>. r=ehsan 2011-05-09 12:33:04 -07:00
Jonas Sicking
0e17979856 Bug 650493 Part 1: Simplify mutation events by firing all but DOMNodeRemoved off of script runners, and DOMNodeRemoved before starting any update batches or aquiring any state. r=smaug/peterv 2011-05-09 12:33:03 -07:00
Sebastian Kromp
d80897722a Bug 633750 - deCOM nsIHTMLEditRules and move methods to nsHTMLEditRules. r=ehsan 2011-05-07 10:04:56 +02:00
Ehsan Akhgari
db7da1c428 Bug 643786 - Fix a crash caused by the HTML editor being destroyed when the document modified handler is in progress [@ nsHTMLEditRules::~nsHTMLEditRules]; r=roc 2011-03-23 15:59:06 -04:00
Mats Palmgren
7958218e24 Bug 635636 - Don't return a value from void function. a=bustage 2011-02-21 21:43:54 +01:00
Mats Palmgren
b765f11bf5 Bug 635636 - Crash [@ nsHTMLEditRules::DocumentModifiedWorker] with navigated-away designMode document; r,a=ehsan 2011-02-21 15:34:16 -05:00
Ehsan Akhgari
ed92562d68 Bug 615015 - "ASSERTION: bad action nesting!"; r,a=roc
--HG--
extra : rebase_source : 3e972a7f5dad81b5cba1b8ee93c16798fdc809c2
2010-12-01 00:24:09 -05:00
Ehsan Akhgari
ef612c0f0a Bug 615450 - Prevent the reinitialization of the HTML editor while an editor operation is in progress on a document; r,a=roc
This should prevent crashes, update view count and edit action nesting count mismatches, and more!

--HG--
extra : rebase_source : af1397b3c8de19d936ca70690a6f7ed284cc5d00
2010-11-30 23:21:32 -05:00
Ehsan Akhgari
a09905d6a5 Bug 612447 - Part 3: Prevent the HTML editor from dying while we run a document modified handler from a script runner; r=bzbarsky a=blocking-beta8 2010-11-19 11:02:24 -05:00
Ehsan Akhgari
8376c423de Bug 611182 - Part 3: Handle dynamic changes to the editable documents and create/remove the bogus node if needed; r=bzbarsky a=blocking-beta8+ 2010-11-11 16:40:52 -05:00
Ehsan Akhgari
472326895e Bug 551704 - Part 2: Don't replace newline characters with BR nodes in preformatted editable fields; r=roc a=blocking-betaN+ 2010-11-06 18:49:26 -04:00
Ehsan Akhgari
e588665b2b Bug 551704 - Part 1: Don't initialize the selection needlessly if the editable area is not focused; r=roc a=blocking-betaN+ 2010-11-06 18:49:26 -04:00
Ms2ger
1dc17b150a Bug 605177 - Fix a number of build warnings in editor/; r=ehsan a=bsmedberg 2010-11-04 16:44:46 -04:00
Daniel Glazman
ac5d79b1f8 Bug 607584 - CR in a paragraph with an id attribute creates a second paragraph of same id; r=ehsan a=roc 2010-10-29 12:35:27 -04:00
Ehsan Akhgari
3f077eaff5 Bug 572598 - Part 6: Don't try to split a node which can't contain a list when inserting one; r=roc 2010-06-21 11:02:14 -04:00
Ehsan Akhgari
6caa9db6f3 Bug 572598 - Part 2: Make sure not to exceed the editor's root element when promoting ranges; r=roc 2010-06-18 16:53:16 -04:00