Commit Graph

76 Commits

Author SHA1 Message Date
Rail Aliiev
8a56fd9db2 Bug 616542 - Shorten file path length of mochitest; r=ted 2011-11-04 21:13:42 +00:00
Ehsan Akhgari
dbe53002d5 Backout changeset be42bc18185a (bug 612128) because of bug 688423 2011-10-25 22:32:55 -04:00
Ehsan Akhgari
317cb20a80 Bug 612128 - Prevent the editor from modifying nodes which are not under an editing host; r=roc,bzbarsky
This patch ensures that the NODE_IS_EDITABLE flag is only set on nodes living
under an editing host.  Things like text controls which used to have that flag
previously will not have it any more.  The flag would be set on their anonymous
div node instead.  Note that if text controls actually fall under an editing
host, they will get the NODE_IS_EDITABLE flag.

This patch also makes nsHTMLEditor::IsEditable return sane results (text nodes
are always considered to be editable).

--HG--
extra : rebase_source : 37317b4d95c2ea957be81420583a98a24f0864ac
2010-11-16 15:45:49 -05:00
Ehsan Akhgari
85e673bce7 Backout changeset a72195ce0eaa (bug 612128) becasue of Fennec regressions 2011-09-22 18:09:44 -04:00
Martijn Wargers
c3d7075c86 Bug 634626 - Move test_bug36682 to mochitest chrome, add layout.spellcheckDefault pref test; r=ehsan 2011-09-22 17:35:24 +01:00
Brian R. Bondy
785005832f Bug 598289 - Test case for CF_HTML parsing with StartHTML/EndHTML set to -1. r=ehsan 2011-09-21 13:22:54 -04:00
Ehsan Akhgari
ec2d83e852 Bug 612128 - Prevent the editor from modifying nodes which are not under an editing host; r=roc,bzbarsky
This patch ensures that the NODE_IS_EDITABLE flag is only set on nodes living
under an editing host.  Things like text controls which used to have that flag
previously will not have it any more.  The flag would be set on their anonymous
div node instead.  Note that if text controls actually fall under an editing
host, they will get the NODE_IS_EDITABLE flag.

This patch also makes nsHTMLEditor::IsEditable return sane results (text nodes
are always considered to be editable).
2010-11-16 15:45:49 -05:00
Ian Neil
3b5e70377b Test case for bug 552782; r=ehsan 2011-09-20 12:27:24 -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
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
4862d93606 Bug 676401 - The document.queryCommandEnabled API doesn't take the active editing host into account; r=ehsan
* adding an `isSelectionEditable' readonly attribute in <nsIEditor>;
 * modified all ::IsCommandEnabled methods in editor/ to take it into account:

./libeditor/base/nsEditorCommands.cpp (15 commands)
  nsUndoCommand                   'undo'
  nsRedoCommand                   'redo'
  nsClearUndoCommand              'clearUndo'
  nsCutCommand                    'cut'
  nsCutOrDeleteCommand            ?
  nsCopyCommand                   'copy'
  nsCopyOrDeleteCommand           ?
  nsPasteCommand                  'paste'
  nsPasteTransferableCommand      ?
  nsSwitchTextDirectionCommand    ?
  nsDeleteCommand                 'delete'
  nsSelectAllCommand              'selectAll'
  nsSelectionMoveCommands         ?
  nsInsertPlaintextCommand        ?
  nsPasteQuotationCommand         ?

./composer/src/nsComposerCommands.cpp (15 commands)
  nsBaseStateUpdatingCommand      ?
  nsPasteNoFormattingCommand      ?
  nsRemoveListCommand             ?
  nsIndentCommand                 'indent'
  nsOutdentCommand                'outdent'
  nsMultiStateCommand             ?
  nsHighlightColorStateCommand    'hiliteColor'
  nsAbsolutePositioningCommand    ?
  nsDecreaseZIndexCommand         ?
  nsIncreaseZIndexCommand         ?
  nsRemoveStylesCommand           'removeFormat'
  nsIncreaseFontSizeCommand       'increaseFontSize'
  nsDecreaseFontSizeCommand       'decreaseFontSize'
  nsInsertHTMLCommand             'insertHTML'
  nsInsertTagCommand              ?

./composer/src/nsComposerDocumentCommands.cpp (3 commands)
  nsSetDocumentOptionsCommand     ?
  nsSetDocumentStateCommand       ?
  nsDocumentStateCommand          n/a (unpatched)
2011-08-17 13:28:03 -04: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
Ian Neal
081ca4e9b3 Test for Bug 291780 - List outdent is not working properly r=ehsan 2011-08-10 00:14:58 +01:00
Ian Neal
49689844b3 Test for Bug 290026 - Outdent of List does not work properly r=ehsan 2011-08-10 00:14:53 +01: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
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
Jonathan Kamens
e4101fc489 Bug 489202 - selection moves to top when html containing meta, link, or style elements is pasted or inserted; r=ehsan 2011-07-26 13:59:50 -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
arno renevier
ba6b969048 Bug 417418 - do not treat context click as double click anymore in editor; r=ehsan 2011-07-18 14:42:56 -04:00
Ehsan Akhgari
13c7a908e4 Backout changeset 65e0d40a57b7 (bug 417418) because of unit test failure 2011-07-18 16:29:22 -04:00
arno renevier
89a10e6166 Bug 417418 - do not treat context click as double click anymore in editor; r=ehsan 2011-07-18 14:42:56 -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
Ehsan Akhgari
c6e514aa14 Bug 549262 - Enable the (shift-)space shortcut key for scrolling up/down in pages containing editable elements; r=roc
--HG--
extra : rebase_source : 99706dd2e678052b345b011ea76f17370ad1a227
2010-09-06 16:59:41 -04: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
Joel Maher
a184675917 Bug 664165 - move editor/libeditor/html/tests/test_contenteditable_text_input_handling.html to mochitest-chrome. r=masayuki, a=test-only 2011-06-19 11:56:44 -04:00
Ehsan Akhgari
8d74540d77 Test case for bug 635636; r=roc 2011-02-21 16:58:07 -05:00
Ehsan Akhgari
e4ad8f774b Bug 640321 - Register the mouse event handlers for the editor in the system group; r=roc 2011-03-16 15:34:30 -04:00
Mounir Lamouri
350253af3e Bug 629845 (1/2) - Don't make nsHTMLDocument::EditingStateChanged fails if BeginningOfDocument fails. r=ehsan a=blocking-final 2011-02-11 01:59:37 +01:00
Ehsan Akhgari
d48edb3f7d Bug 622371 - Only set the selection to the beginning of the editable document if the editor is being initialized by entering designMode; r=bzbarsky a=blocking-final+ 2011-01-06 17:13:51 -05:00
Ehsan Akhgari
b3f2d74515 Bug 620906 - Back out part of bug 289384 to make sure that scrollbars work in CKEditor fields again; r=roc a=blocking-final+ 2011-01-11 16:00:44 -05:00
Ehsan Akhgari
1935188b81 Bug 616590 - Prevent documents loaded in mail editors to set up their own editors using the designMode or contentEditable APIs; r=bzbarsky a=blocking-final+ 2010-12-06 14:27:14 -05:00
Ehsan Akhgari
d921d70f6f Bug 612447 - Don't Recreate an editor object attached to a document in a frame if that frame is restyled; r=bzbarsky a=blocking-beta8+ 2010-11-18 16:01:12 -05:00
Ehsan Akhgari
81e5001ae0 Bug 611182 - Backspace key does not work without typing something first (test cases); r=bzbarsky a=blocking-beta8+ 2010-11-11 14:09:09 -05:00
Ehsan Akhgari
bb6861f7b5 Bug 601881 - video and audio should never play automatically in editor; r=bzbarsky,cpearce a=bsmedberg
--HG--
rename : content/media/test/test_play_events.html => content/media/test/test_autoplay_contentEditable.html
2010-10-14 20:13:29 -04: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
311cff87c3 Bug 372345 - [Midas] text cursor overrides CSS mouse cursor styles for some elements; r=bzbarsky a=blocking-final+
--HG--
extra : rebase_source : 502e9561f1a91464b8de502eb44098ab126d3930
2010-10-29 12:30:15 -04:00
Ehsan Akhgari
fe769d8443 Bug 607584 - Part 3: HTML test case; r=roc a=test-only 2010-10-29 13:01:49 -04:00
Daniel Glazman
0e38cc4a77 Bug 607584 - Part 2: XUL test case; r=ehsan a=test-only 2010-10-29 12:36:21 -04:00
Ehsan Akhgari
16a0dc9a08 Bug 601881 - video and audio should never play automatically in editor; r,a=bzbarsky 2010-10-06 16:31:09 -04:00
Ehsan Akhgari
e30f04231f Bug 410986 - Part 2: unit test; r=roc a=NPOTB 2010-09-21 23:33:44 -04:00
Ehsan Akhgari
b7844b60fc Bug 599322 - Base href ignored for drag/drop or copy/paste in designMode; r=roc a=blocking-final,1.9.2.11,1.9.1.14 2010-09-24 15:02:21 -04:00
Ehsan Akhgari
37297d45dc Bug 597784 - The inserthtml command should not use a sanitizing fragment content sink; r=bzbarsky a=blocking-betaN,1.9.2.11,1.9.1.14 2010-09-27 13:21:34 -04:00
Ehsan Akhgari
c4d1fc059a Bug 592592 - Non-breaking spaces inserted when multiple spaces are typed, even in pre-wrap-styled text r,a=roc 2010-09-02 20:36:42 -04:00
Ehsan Akhgari
dfd8ce442d Back out bug 592592, bug 588999, bug 591706 and bug 592586 because of test failures 2010-09-07 19:23:29 -04:00
Ehsan Akhgari
48efe58c89 Bug 592592 - Non-breaking spaces inserted when multiple spaces are typed, even in pre-wrap-styled text r,a=roc 2010-09-02 20:36:42 -04:00
Masayuki Nakano
660981e020 Bug 389372 - Contenteditable node is still editable without focus; r=ehsan,masayuki,roc sr=jst a=blocking-2.0:betaN+ 2010-07-22 12:22:44 -04:00
Masayuki Nakano
d7540e477b backout the previous my check-ins 2010-07-22 11:11:34 +09:00
Masayuki Nakano
742e98c291 Bug 389372 Contenteditable node is still editable without focus r=ehsan+roc, sr=jst 2010-07-22 08:46:52 +09:00
Ehsan Akhgari
e2eb474a10 Bug 490879 - Pasting images into rich text editors creates temporary moz-screenshot.jpg; r+sr=roc
--HG--
extra : rebase_source : e8a5e10ed3067548366574d64406c33bee3b455e
2009-05-15 13:14:16 +04:30