Commit graph

294 commits

Author SHA1 Message Date
Mirko Brodesser
193ee7189e Bug 1635709: part 1) Rename nsFrameSelection::SetCaretBidiLevel to SetCaretBidiLevelAndMaybeSchedulePaint. r=hsivonen
The old name was misleading.

Differential Revision: https://phabricator.services.mozilla.com/D74051
2020-05-06 15:26:07 +00:00
Botond Ballo
5cffd06241 Bug 1631568 - Have nsLayoutUtils::GetFrameForPoint() and GetFramesForArea() take a RelativeTo parameter. r=tnikkel
This removes the need for FrameForPointOptions::IsRelativeToLayoutViewport,
and makes sure each call site of these functions indicates whether the
input point/rect is in visual or layout coordinates.

Several call sites were passing in layout coordinates without setting the
IsRelativeToLayoutViewport flag, which this patch corrects.

Differential Revision: https://phabricator.services.mozilla.com/D71705
2020-05-05 15:24:12 +00:00
Mirko Brodesser
a060e2efd4 Bug 1634663: part 4) Declare callers of Selection::GetRangeAt const in layout code. r=masayuki
Depends on D73446

Differential Revision: https://phabricator.services.mozilla.com/D73447
2020-05-02 23:46:01 +00:00
Masayuki Nakano
11af44e544 Bug 1632726 - part 2: Remove some unused nsISelectionController methods r=smaug
Even in comm-central and BlueGriffon, `nsISelectionController::*ForDelete()`
are not used.  Therefore, we can remove them safely.

Differential Revision: https://phabricator.services.mozilla.com/D72296
2020-04-27 06:20:31 +00:00
Masayuki Nakano
adf7a304f3 Bug 1632726 - part 1: Create utility methods to compute delete range from collapsed selection in nsFrameSelection r=smaug
Currently, `EditorBase::ExtendSelectionForDelete()` depends on some
`nsISelectionController` methods to compute extended range for deletion
from collapsed selection.  They are implemented by
`nsFrameSelection::MoveCaret()` and `nsFrameSelection::TakeFocus()`.
Ideally, we should split these methods for computation part and performing
part.  However, they change selection with updating other selection state,
for example, table selection state and bidi information.  Therefore, it's
impossible to split them with simple code.  However, I need to change
`EditorBase::ExtendSelectionForDelete()` just return extended range.

Therefore, this patch creates `nsFrameSelection::PeekOffsetForCaretMove()`
which has the main path in `MoveCaret()` for the `EditorBase` method.

Then, `MoveCaret()` and new `nsFrameSelection::CreateRangeExtendedToSomewhere()`
share the computation code of expanding normal selection.

Finally, this patch wraps `nsFrameSelection::CreateRangeExtendedToSomewhere()`
with new public inline methods for `EditorBase`.

The following patch will remove no-user methods of `nsISelectionController`.

Differential Revision: https://phabricator.services.mozilla.com/D72295
2020-04-30 10:05:35 +00:00
Csoregi Natalia
b073baab86 Backed out 30 changesets (bug 1556556, bug 1631568) for multiple mochitest failures. CLOSED TREE
Backed out changeset edd529f7a9c5 (bug 1631568)
Backed out changeset 1cc0881e244b (bug 1631568)
Backed out changeset ed3c1e85d5e3 (bug 1556556)
Backed out changeset 38ffc6215bbf (bug 1556556)
Backed out changeset 03c2c25d8023 (bug 1556556)
Backed out changeset 9c717eb067b8 (bug 1556556)
Backed out changeset 98e26bc98b85 (bug 1556556)
Backed out changeset 05a6a581e755 (bug 1556556)
Backed out changeset 867946cf05bb (bug 1556556)
Backed out changeset 20d72a334530 (bug 1556556)
Backed out changeset 2c62e61d9054 (bug 1556556)
Backed out changeset 62a223d057d2 (bug 1556556)
Backed out changeset 2c5d55a1f0b1 (bug 1556556)
Backed out changeset 700447945b4e (bug 1556556)
Backed out changeset 93190ae4f5ff (bug 1556556)
Backed out changeset a7bd34d961bb (bug 1556556)
Backed out changeset fccd1d3c7189 (bug 1556556)
Backed out changeset 24056e47183d (bug 1556556)
Backed out changeset 204881474cc1 (bug 1556556)
Backed out changeset 387320881876 (bug 1556556)
Backed out changeset be8f5eb58460 (bug 1556556)
Backed out changeset 629c58a9166b (bug 1556556)
Backed out changeset 4312b2b5dda8 (bug 1556556)
Backed out changeset d11dbf6403a5 (bug 1556556)
Backed out changeset 95c54c023779 (bug 1556556)
Backed out changeset 80fcb7e71188 (bug 1556556)
Backed out changeset d75a4ecb0d47 (bug 1556556)
Backed out changeset 903c4de34e7a (bug 1556556)
Backed out changeset f15334a3e803 (bug 1556556)
Backed out changeset 9553e99137ea (bug 1556556)
2020-04-28 12:43:11 +03:00
Botond Ballo
2cb46cfa4b Bug 1631568 - Have nsLayoutUtils::GetFrameForPoint() and GetFramesForArea() take a RelativeTo parameter. r=tnikkel
This removes the need for FrameForPointOptions::IsRelativeToLayoutViewport,
and makes sure each call site of these functions indicates whether the
input point/rect is in visual or layout coordinates.

Several call sites were passing in layout coordinates without setting the
IsRelativeToLayoutViewport flag, which this patch corrects.

Differential Revision: https://phabricator.services.mozilla.com/D71705
2020-04-28 01:44:43 +00:00
Masayuki Nakano
6cbea10c99 Bug 1632724 - part 1: Move common methods for handling delete selection to EditorBase r=m_kato
`DeleteSelection*()` are members of `TextEditor`, but they are also used by
`HTMLEditor`.  Therefore, they and pref cache members for them should be
in `EditorBase` too.

Depends on D71911

Differential Revision: https://phabricator.services.mozilla.com/D72290
2020-04-24 14:55:09 +00:00
Kristen Wright
05a7022978 Bug 1626388 - Convert dom.select_events.textcontrols.enabled to static pref r=njn
Converts dom.select_events.textcontrols.enabled to a static pref.

Differential Revision: https://phabricator.services.mozilla.com/D69614

--HG--
extra : moz-landing-system : lando
2020-04-06 23:30:18 +00:00
Mirko Brodesser
e5aee55330 Bug 1626665: part 4) Reorder code in nsFrameSelection::MoveCaret to allow nsPeekOffsetStruct::mDirection to become const. r=hsivonen
`nsPeekOffsetStruct` contains a mixture or input and output members.
This simplifies reasoning about them.

Depends on D69573

Differential Revision: https://phabricator.services.mozilla.com/D69769

--HG--
extra : moz-landing-system : lando
2020-04-06 08:45:01 +00:00
Mirko Brodesser
e7cdb1cf10 Bug 1623858: part 16) Annotate nsFrameSelection::HandleTableSelection with [[nodiscard]]. r=hsivonen
Depends on D68575

Differential Revision: https://phabricator.services.mozilla.com/D68576

--HG--
extra : moz-landing-system : lando
2020-03-30 08:35:36 +00:00
Mirko Brodesser
4c2e63fddc Bug 1623858: part 15) Remove some conditions in nsFrameSelection::TakeFocus which are always true. r=hsivonen
Differential Revision: https://phabricator.services.mozilla.com/D68575

--HG--
extra : moz-landing-system : lando
2020-03-30 08:32:42 +00:00
Mirko Brodesser
803698911f Bug 1624633: part 1) Move Selection::mRanges to StyledRanges struct. r=hsivonen
This allows methods operating on the ranges to be moved to that struct.

To see where this leads to, consider the following reviews.

Differential Revision: https://phabricator.services.mozilla.com/D68217

--HG--
extra : moz-landing-system : lando
2020-03-27 11:21:25 +00:00
Mirko Brodesser
ad4d7454de Bug 1622752: annotate Selection::ScrollIntoView with MOZ_CAN_RUN_SCRIPT. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D67002

--HG--
extra : moz-landing-system : lando
2020-03-16 21:04:46 +00:00
Emilio Cobos Álvarez
04828e3a4a Bug 253870 - Make disabled form controls selectable. r=masayuki,MarcoZ
This rejiggers a bit the way selection focus is handled so that focusing a
disabled form control with the mouse handles selection properly, and hides the
document selection and so on.

This matches the behavior of other browsers as far as I can tell.

Given now readonly and disabled editors behave the same, we can simplify a bit
the surrounding editor code.

Differential Revision: https://phabricator.services.mozilla.com/D66464

--HG--
extra : moz-landing-system : lando
2020-03-19 13:18:16 +00:00
Mirko Brodesser
c602e0e0d7 Bug 1623333: part 4) Assert Selection's type is eNormal in relevant methods accessing mFrameSelection. r=smaug
Helps to determine which methods of `nsFrameSelection` are intended to
be called only for the `eNormal` Selection.

Driven by the idea that state of `nsFrameSelection` relevant only for
the `eNormal` Selection should later move to a `NormalSelection` class.

Differential Revision: https://phabricator.services.mozilla.com/D67445

--HG--
extra : moz-landing-system : lando
2020-03-19 11:08:58 +00:00
Mirko Brodesser
d252ed1175 Bug 1623333: part 2) Declare Selection::mSelectionType const. r=smaug
Simplifies reasoning about it.

Differential Revision: https://phabricator.services.mozilla.com/D67328

--HG--
extra : moz-landing-system : lando
2020-03-19 09:25:02 +00:00
Mirko Brodesser
f7f372d8a6 Bug 1621620: part 2) Declare nsFrameSelection::ConstrainFrameAndPointToAnchorSubtree const. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D66394

--HG--
extra : moz-landing-system : lando
2020-03-18 16:33:13 +00:00
Mirko Brodesser
86eec2f9fe Bug 1623040: split nsRange::SetSelection into RegisterSelection and UnregisterSelection. r=smaug
The name "SetSelection" was misleading, because it did more than a
setter.

Differential Revision: https://phabricator.services.mozilla.com/D67126

--HG--
extra : moz-landing-system : lando
2020-03-18 09:06:10 +00:00
Simon Giesecke
8aa47bcfb7 Bug 1613985 - Use default for equivalent-to-default constructors/destructors in layout. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D66016

--HG--
extra : moz-landing-system : lando
2020-03-17 09:38:32 +00:00
Mihai Alexandru Michis
58bc354025 Backed out changeset 9eeee9ec66d9 (bug 253870) for causing failures in browser_bug1261299.js
CLOSED TREE
2020-03-16 22:32:41 +02:00
Emilio Cobos Álvarez
9f28f89085 Bug 253870 - Make disabled form controls selectable. r=masayuki,MarcoZ
This rejiggers a bit the way selection focus is handled so that focusing a
disabled form control with the mouse handles selection properly, and hides the
document selection and so on.

This matches the behavior of other browsers as far as I can tell.

Given now readonly and disabled editors behave the same, we can simplify a bit
the surrounding editor code.

Differential Revision: https://phabricator.services.mozilla.com/D66464

--HG--
extra : moz-landing-system : lando
2020-03-16 17:41:07 +00:00
Mirko Brodesser
ec9cb4d8ef Bug 1622199: annotate Selection::AddRangeAndSelectFramesAndNotifyListeners with MOZ_CAN_RUN_SCRIPT. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D66759

--HG--
extra : moz-landing-system : lando
2020-03-13 15:46:13 +00:00
Henri Sivonen
7d98d5c9e0 Bug 1618219 - Use BrowsingContext for activeness check in nsFrameSelection.cpp. r=NeilDeakin
Differential Revision: https://phabricator.services.mozilla.com/D65956

--HG--
extra : moz-landing-system : lando
2020-03-11 15:56:04 +00:00
Mirko Brodesser
76ae1d169f Bug 1620952: part 9) Rename nsFrameSelection::GetBatching to IsBatching. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D66061

--HG--
extra : moz-landing-system : lando
2020-03-11 09:18:18 +00:00
Mirko Brodesser
1535e53831 Bug 1620952: part 7) Group batching members. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D66059

--HG--
extra : moz-landing-system : lando
2020-03-11 09:18:02 +00:00
Mirko Brodesser
c1d76e9941 Bug 1620952: part 6) Group mDesiredPos and mDesiredPosSet. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65961

--HG--
extra : moz-landing-system : lando
2020-03-11 09:17:55 +00:00
Mirko Brodesser
2ab206b6d4 Bug 1620952: part 5) Group limiter members in nsFrameSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65960

--HG--
extra : moz-landing-system : lando
2020-03-11 09:17:47 +00:00
Mirko Brodesser
9aa383b1f7 Bug 1620952: part 4) Group caret members in nsFrameSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65959

--HG--
extra : moz-landing-system : lando
2020-03-10 14:08:11 +00:00
Mirko Brodesser
b4e19dc9cb Bug 1620952: part 3) Group delayed mouse event members in nsFrameSelection. r=jfkthame
Simplifies analyzing and further refactoring `nsFrameSelection`.

Differential Revision: https://phabricator.services.mozilla.com/D65957

--HG--
extra : moz-landing-system : lando
2020-03-10 12:41:13 +00:00
Mirko Brodesser
b58f603d3f Bug 1620952: part 2) Remove nsFrameSelection::Init. r=jfkthame
Will allow to declare some members const.

Differential Revision: https://phabricator.services.mozilla.com/D65954

--HG--
extra : moz-landing-system : lando
2020-03-10 12:41:05 +00:00
Mirko Brodesser
f48facbc7d Bug 1619549: part 6) Factor out code from nsFrameSelection::HandleDrag to MaintainedRange::AdjustContentOffsets. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65297

--HG--
extra : moz-landing-system : lando
2020-03-09 14:19:39 +00:00
Mirko Brodesser
6679773961 Bug 1619549: part 5) Move core of nsFrameSelection::MaintainSelection to MaintainedRange. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65120

--HG--
extra : moz-landing-system : lando
2020-03-09 14:19:29 +00:00
Mirko Brodesser
4deab48718 Bug 1619549: part 4) Move nsFrameSelection::AdjustForMaintainedSelection to MaintainedRange. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65119

--HG--
extra : moz-landing-system : lando
2020-03-09 14:19:26 +00:00
Mirko Brodesser
410e3284f4 Bug 1619549: part 3) Use RefPtr in nsFrameSelection::HandleClick. r=jfkthame
Simplifies following simplifications.

Differential Revision: https://phabricator.services.mozilla.com/D65118

--HG--
extra : moz-landing-system : lando
2020-03-09 14:19:10 +00:00
Mirko Brodesser
b1ecc4e48d Bug 1619549: part 2) Add assertion to nsFrameSelection::HandleClick. r=jfkthame
Helps reasoning about it.

Differential Revision: https://phabricator.services.mozilla.com/D65117

--HG--
extra : moz-landing-system : lando
2020-03-09 14:19:02 +00:00
Mirko Brodesser
1dcf5265e1 Bug 1619549: part 1) Group mMaintainRange and mMaintainedAmount in MaintainedRange. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D65106

--HG--
extra : moz-landing-system : lando
2020-03-09 14:18:55 +00:00
Mirko Brodesser
3b935e0da5 Bug 1619617: part 2) Annotate UnselectCells with MOZ_CAN_RUN_SCRIPT. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D65512

--HG--
extra : moz-landing-system : lando
2020-03-06 12:03:30 +00:00
Mirko Brodesser
efbaffc13c Bug 1615581: part 19) Decouple UpdateSelectionCacheOnRepaintSelection from nsFrameSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63482

--HG--
extra : moz-landing-system : lando
2020-03-03 09:15:22 +00:00
Mirko Brodesser
2e40a7367b Bug 1615581: part 18) Move core of nsFrameSelection::HandleTableSelection to TableSelection::HandleSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63481

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:34 +00:00
Mirko Brodesser
4e70ce992b Bug 1615581: part 17) Correct style in nsFrameSelection::HandleTableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63480

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:36 +00:00
Mirko Brodesser
b0148d9b7a Bug 1615581: part 16) Move nsFrameSelection::SelectRowOrColumn to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63324

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:38 +00:00
Mirko Brodesser
88584c4608 Bug 1615581: part 15) Update style in nsFrameSelection::SelectRowOrColumn. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63323

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:17 +00:00
Mirko Brodesser
b2c626c5ff Bug 1615581: part 14) Move SelectBlockOfCells to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63307

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:19 +00:00
Mirko Brodesser
4b67e294f7 Bug 1615581: part 13) Move mDragSelectingCells to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63297

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:22 +00:00
Mirko Brodesser
e8f4f2644a Bug 1615581: part 12) Decouple AddCellsToSelection from nsFrameSelection. r=jfkthame
Simplifies reasoning about `nsFrameSelection` and allows to decouple
more code from it.

Differential Revision: https://phabricator.services.mozilla.com/D63296

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:24 +00:00
Mirko Brodesser
7ee453e1fb Bug 1615581: part 11) Use free function SelectCellElement in AddCellsToSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63295

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:26 +00:00
Mirko Brodesser
eb1d4d2a75 Bug 1615581: part 10) Update style in nsFrameSelection::AddCellsToSelection. r=jfkthame
Simplifies reviewing the following part.

Differential Revision: https://phabricator.services.mozilla.com/D63294

--HG--
extra : moz-landing-system : lando
2020-03-02 15:09:29 +00:00
Narcis Beleuzu
44ec37a8cf Backed out 10 changesets (bug 1615581) for bustages on nsFrameSelection.cpp . CLOSED TREE
Backed out changeset 47087b5b4e42 (bug 1615581)
Backed out changeset 1489a8cb97e9 (bug 1615581)
Backed out changeset 1f89d7b3668a (bug 1615581)
Backed out changeset ea9869a4fb04 (bug 1615581)
Backed out changeset 9678a5d6a970 (bug 1615581)
Backed out changeset 13fd32562d0c (bug 1615581)
Backed out changeset c3c657e53988 (bug 1615581)
Backed out changeset 5272f4d02c88 (bug 1615581)
Backed out changeset 83dbbfb4b4e8 (bug 1615581)
Backed out changeset 9aa0aef619ed (bug 1615581)
2020-03-02 17:05:00 +02:00
Mirko Brodesser
523f549231 Bug 1617165: part 2) Rename nsFrameSelection::PostReason and PopReason. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63668

--HG--
extra : moz-landing-system : lando
2020-03-02 13:48:24 +00:00
Mirko Brodesser
bbb9d9ba21 Bug 1615581: part 19) Decouple UpdateSelectionCacheOnRepaintSelection from nsFrameSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63482

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:56 +00:00
Mirko Brodesser
c5f6e249b8 Bug 1615581: part 18) Move core of nsFrameSelection::HandleTableSelection to TableSelection::HandleSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63481

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:54 +00:00
Mirko Brodesser
4a5e298cee Bug 1615581: part 17) Correct style in nsFrameSelection::HandleTableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63480

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:51 +00:00
Mirko Brodesser
9cb478e6df Bug 1615581: part 16) Move nsFrameSelection::SelectRowOrColumn to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63324

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:44 +00:00
Mirko Brodesser
6b59f98679 Bug 1615581: part 15) Update style in nsFrameSelection::SelectRowOrColumn. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63323

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:41 +00:00
Mirko Brodesser
795f2590f4 Bug 1615581: part 14) Move SelectBlockOfCells to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63307

--HG--
extra : moz-landing-system : lando
2020-03-02 10:59:37 +00:00
Mirko Brodesser
ee9cbbd1d4 Bug 1615581: part 13) Move mDragSelectingCells to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63297

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:37 +00:00
Mirko Brodesser
49b48fa2d9 Bug 1615581: part 12) Decouple AddCellsToSelection from nsFrameSelection. r=jfkthame
Simplifies reasoning about `nsFrameSelection` and allows to decouple
more code from it.

Differential Revision: https://phabricator.services.mozilla.com/D63296

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:34 +00:00
Mirko Brodesser
2e1d8cdbbf Bug 1615581: part 11) Use free function SelectCellElement in AddCellsToSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63295

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:30 +00:00
Mirko Brodesser
e71876a917 Bug 1615581: part 10) Update style in nsFrameSelection::AddCellsToSelection. r=jfkthame
Simplifies reviewing the following part.

Differential Revision: https://phabricator.services.mozilla.com/D63294

--HG--
extra : moz-landing-system : lando
2020-03-02 10:25:27 +00:00
Sylvestre Ledru
ca6530131a Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan,kvark
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D63787

--HG--
extra : moz-landing-system : lando
2020-02-24 15:33:38 +00:00
Mirko Brodesser
34837d9fc2 Bug 1615581: part 9) Decouple SelectCellElement core from nsFrameSelection. r=jfkthame
Allows to move `nsFrameSelection::AddCellsToSelection`, a caller of
`SelectCellElement, from `nsFrameSelection` to `TableSelection` in a
subsequent step.

Differential Revision: https://phabricator.services.mozilla.com/D63158

--HG--
extra : moz-landing-system : lando
2020-02-20 15:03:26 +00:00
Mirko Brodesser
7b16ca222e Bug 1615581: part 8) Decouple CreateAndAddRange from nsFrameSelection. r=jfkthame
Preparation to move `SelectCellElement` to `TableSelection`.

Differential Revision: https://phabricator.services.mozilla.com/D63157

--HG--
extra : moz-landing-system : lando
2020-02-20 15:03:19 +00:00
Mirko Brodesser
8308badf1c Bug 1615581: part 7) Move UnselectCells to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63063

--HG--
extra : moz-landing-system : lando
2020-02-20 14:06:30 +00:00
Mirko Brodesser
c308359bf2 Bug 1615581: part 6) Move GetFirstCellRange to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63061

--HG--
extra : moz-landing-system : lando
2020-02-18 12:52:08 +00:00
Mirko Brodesser
ea6f268216 Bug 1615581: part 5) Move GetNextCellRange to TableSelection. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D63060

--HG--
extra : moz-landing-system : lando
2020-02-18 12:48:44 +00:00
Mirko Brodesser
63edde2d24 Bug 1615581: part 4) Declare GetFirstCellNodeInRange's range argument const. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D62905

--HG--
extra : moz-landing-system : lando
2020-02-18 12:29:07 +00:00
Mirko Brodesser
ed3750ee94 Bug 1615581: part 3) Rename mSelectingTableCellMode to mMode. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D62904

--HG--
extra : moz-landing-system : lando
2020-02-18 12:28:59 +00:00
Mirko Brodesser
7471880b9b Bug 1615581: part 2) Group table-cell-selection related members in common struct. r=jfkthame
Simplifies reasoning about table-cell related code, because it's less
coupled with `nsFrameSelection`.

Differential Revision: https://phabricator.services.mozilla.com/D62903

--HG--
extra : moz-landing-system : lando
2020-02-18 12:28:52 +00:00
Mirko Brodesser
f170973369 Bug 1615581: part 1) Rename TableSelection to TableSelectionMode. r=jfkthame
See part 2) why this is necessary.

Differential Revision: https://phabricator.services.mozilla.com/D62902

--HG--
extra : moz-landing-system : lando
2020-02-18 12:28:45 +00:00
Mirko Brodesser
4688607b42 Bug 1615581: part 0) Correct style around TableSelection usage. r=jfkthame
Preparatory step for the following parts.

Differential Revision: https://phabricator.services.mozilla.com/D63058

--HG--
extra : moz-landing-system : lando
2020-02-18 12:28:32 +00:00
Mirko Brodesser
3d79d25cdf Bug 1615304: part 1) Move nsFrameSelection::DeleteFromDocument to Selection. r=smaug
Helps to clarify the role of `nsFrameSelection`.

Differential Revision: https://phabricator.services.mozilla.com/D62879

--HG--
extra : moz-landing-system : lando
2020-02-14 10:58:06 +00:00
Simon Giesecke
b50347f917 Bug 1611415 - Prefer using std::move over forget. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980

--HG--
extra : moz-landing-system : lando
2020-02-13 14:38:48 +00:00
shindli
91aa0518dd Backed out changeset 0c982bc69cb3 (bug 1611415) for causing build bustages in /builds/worker/workspace/build/src/obj-firefox/dist/include/nsCOMPtr CLOSED TREE 2020-02-12 20:13:29 +02:00
Simon Giesecke
f604a47fa5 Bug 1611415 - Applied FixItHints from mozilla-non-std-move. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980

--HG--
extra : moz-landing-system : lando
2020-02-12 17:24:41 +00:00
Mirko Brodesser
ea1f257885 Bug 1614636: simplify arguments of nsFrameSelection::HandleClick. r=jfkthame
Simplifies understanding its dependent methods.

Differential Revision: https://phabricator.services.mozilla.com/D62433

--HG--
extra : moz-landing-system : lando
2020-02-11 15:12:26 +00:00
Mirko Brodesser
4a2c7022b1 Bug 1613378: part 6) Remove copy&pasted IsValidSelectionPoint function. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D62039

--HG--
extra : moz-landing-system : lando
2020-02-11 10:50:57 +00:00
Brindusan Cristian
a68356b907 Backed out 5 changesets (bug 1613378) for mochitest failures at test_general.html. CLOSED TREE
Backed out changeset f38b806ee78b (bug 1613378)
Backed out changeset cee4bbabc4b5 (bug 1613378)
Backed out changeset e3a2ab6d7267 (bug 1613378)
Backed out changeset 6fe76439f1d3 (bug 1613378)
Backed out changeset f3baf3407cbe (bug 1613378)
2020-02-11 12:27:49 +02:00
Mirko Brodesser
dd99b9338c Bug 1613378: part 6) Remove copy&pasted IsValidSelectionPoint function. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D62039

--HG--
extra : moz-landing-system : lando
2020-02-10 13:25:03 +00:00
Mirko Brodesser
ce8bf8cde1 Bug 1613378: part 4) Declare some methods in nsFrameSelection static. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D62037

--HG--
extra : moz-landing-system : lando
2020-02-07 16:13:27 +00:00
Mirko Brodesser
6c8a08fecb Bug 1613378: part 2) Remove unnecessary dependency from nsFrameSelection::GetCellLayout to mPresShell and declare it static. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D61692

--HG--
extra : moz-landing-system : lando
2020-02-07 09:24:43 +00:00
Mirko Brodesser
a205cfcd91 Bug 1613071: rename RangeData to StyledRange and move it to separate file. r=smaug
Breaks the dependency from Selection.h. Allows reuse for Selection
across the Shadow DOM boundary, which will require styled ranges to be
stored in `DocumentOrShadowRoot` too.

Differential Revision: https://phabricator.services.mozilla.com/D61549

--HG--
extra : moz-landing-system : lando
2020-02-05 09:12:23 +00:00
Cosmin Sabou
8833c36c14 Backed out changeset 6c68992f760e (bug 1613071) for build bustages on XPathGenerator.cpp
CLOSED TREE
2020-02-04 16:40:28 +02:00
Mirko Brodesser
b6e8bf3ef9 Bug 1613071: rename RangeData to StyledRange and move it to separate file. r=smaug
Breaks the dependency from Selection.h. Allows reuse for Selection
across the Shadow DOM boundary, which will require styled ranges to be
stored in `DocumentOrShadowRoot` too.

Differential Revision: https://phabricator.services.mozilla.com/D61549

--HG--
extra : moz-landing-system : lando
2020-02-04 14:14:03 +00:00
Masayuki Nakano
450b71f763 Bug 1612085 - part 1: Hide constructor of nsRange r=smaug
`nsRange` instances are allocated a lot in the heap especially by editor and
spellchecker.  The allocation cost is too bad for benchmarks.  Therefore,
we should reuse released instances as far as possible.  For managing it in
static factory methods of `nsRange`, we need to hide `nsRange` constructor.

Differential Revision: https://phabricator.services.mozilla.com/D61237

--HG--
extra : moz-landing-system : lando
2020-01-30 13:23:35 +00:00
Kousuke Takaki
04bba6950f Bug 1602088 - Move nsIScrollableFrame::ScrollUnit to namespace scope. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D61140

--HG--
extra : source : 69fded25adc2ac25e302b49c1128f8926e1311a3
2020-01-30 09:13:19 +00:00
Cosmin Sabou
5a3d320cd0 Backed out changeset 69fded25adc2 (bug 1602088) for causing several box-shadow reftest failures.
CLOSED TREE
2020-01-30 13:23:10 +02:00
Kousuke Takaki
9681569b70 Bug 1602088 - Move nsIScrollableFrame::ScrollUnit to namespace scope. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D61140

--HG--
extra : moz-landing-system : lando
2020-01-30 09:13:19 +00:00
Mirko Brodesser
935aed6418 Bug 1600267: part 17) Call ComparePoints instead of ComparePoints_Deprecated in nsFrameSelection. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D58916

--HG--
extra : moz-landing-system : lando
2020-01-08 10:15:46 +00:00
Mirko Brodesser
b8bb35cc69 Bug 1600267: part 1) Rename nsContentUtils::ComparePoints to ComparePoints_Deprecated. r=smaug
In a follow-up commit a new `ComparePoints` method with cleaner
arguments and return value will be added.

Differential Revision: https://phabricator.services.mozilla.com/D55295

--HG--
extra : moz-landing-system : lando
2019-12-19 13:27:08 +00:00
Gabriele Svelto
69790bc62e Bug 1600545 - Remove useless inclusions of header files generated from IDL files in accessible/, browser/, caps/, chrome/, devtools/, docshell/, editor/, extensions/, gfx/, hal/, image/, intl/, ipc/, js/, layout/, and media/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55443

--HG--
extra : moz-landing-system : lando
2019-12-06 09:16:44 +00:00
Boris Zbarsky
75124bdd98 Bug 1517588. Use nsIPrincipal::IsSystemPrincipal instead of nsContentUtils::IsSystemPrincipal r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D53067

--HG--
extra : moz-landing-system : lando
2019-12-05 04:44:32 +00:00
Masayuki Nakano
a434f646f8 Bug 1577058 - part 2: Make nsFrameSelection::CommonPageMove() handle nsFrameSelection::ScrollSelectionIntoView() too r=smaug
Currently, `nsFrameSelection::CommonPageMove()` is called before every caller
calls `nsFrameSelection::ScrollSelectionIntoView()`.  However, when an editing
host has focus, the scroll target may be outside of it.  In such case, without
moving caret, user may want only to scroll the scrollable element.

Chrome behaves like so.  Chrome also can scroll outside scrollable element
of focused editing host.  However, it scrolls caret into view only when
caret is moved actually.  Therefore, it makes sense to follow this behavior.

This patch makes `nsFrameSelection::CommonPageMove()` also call
`nsFrameSelection::ScrollSelectionIntoView()`.  However, it newly takes
`SelectionIntoView` flag for making callers can choose the condition.  I.e.,
`ScrollSelectionIntoView()` should be called always, or only when selection
is actually changed, or shouldn't be called.

Differential Revision: https://phabricator.services.mozilla.com/D50178

--HG--
extra : moz-landing-system : lando
2019-10-28 10:03:37 +00:00
Masayuki Nakano
28c3b3ebfc Bug 1577058 - part 1: nsFrameSelection::CommonPageMove() should use page scroll amount if there is a scrollable element rather than height of click target r=smaug
`nsFrameSelection::CommonPageMove()` emulates click in selection limiter
when scrollable frame is outside of focused editing host.  However, the
clicked position should be considered with scrollable element's page
scroll amount rather than height of editing host since the height may be
much taller than the scrollable frame.

Differential Revision: https://phabricator.services.mozilla.com/D50177

--HG--
extra : moz-landing-system : lando
2019-10-28 10:03:13 +00:00
Cosmin Sabou
3c54e28fc8 Backed out 2 changesets (bug 1577058) for causing bug 1541915 to nearly permafail.
Backed out changeset c556c5228132 (bug 1577058)
Backed out changeset d00a7e091efd (bug 1577058)
2019-10-27 17:38:58 +02:00
Masayuki Nakano
7a894386f2 Bug 1577058 - part 2: Make nsFrameSelection::CommonPageMove() handle nsFrameSelection::ScrollSelectionIntoView() too r=smaug
Currently, `nsFrameSelection::CommonPageMove()` is called before every caller
calls `nsFrameSelection::ScrollSelectionIntoView()`.  However, when an editing
host has focus, the scroll target may be outside of it.  In such case, without
moving caret, user may want only to scroll the scrollable element.

Chrome behaves like so.  Chrome also can scroll outside scrollable element
of focused editing host.  However, it scrolls caret into view only when
caret is moved actually.  Therefore, it makes sense to follow this behavior.

This patch makes `nsFrameSelection::CommonPageMove()` also call
`nsFrameSelection::ScrollSelectionIntoView()`.  However, it newly takes
`SelectionIntoView` flag for making callers can choose the condition.  I.e.,
`ScrollSelectionIntoView()` should be called always, or only when selection
is actually changed, or shouldn't be called.

Differential Revision: https://phabricator.services.mozilla.com/D50178

--HG--
extra : moz-landing-system : lando
2019-10-27 01:44:55 +00:00
Masayuki Nakano
250257d0dd Bug 1577058 - part 1: nsFrameSelection::CommonPageMove() should use page scroll amount if there is a scrollable element rather than height of click target r=smaug
`nsFrameSelection::CommonPageMove()` emulates click in selection limiter
when scrollable frame is outside of focused editing host.  However, the
clicked position should be considered with scrollable element's page
scroll amount rather than height of editing host since the height may be
much taller than the scrollable frame.

Differential Revision: https://phabricator.services.mozilla.com/D50177

--HG--
extra : moz-landing-system : lando
2019-10-27 01:44:34 +00:00
Nicholas Nethercote
18fae65f38 Bug 1563139 - Remove StaticPrefs.h. r=glandium
This requires replacing inclusions of it with inclusions of more specific prefs
files.

The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h,
and is used in `Codegen.py` because doing something smarter is tricky and
suitable for a follow-up. As a result, any change to StaticPrefList.yaml will
still trigger recompilation of all the generated DOM bindings files, but that's
still a big improvement over trigger recompilation of every file that uses
static prefs.

Most of the changes in this commit are very boring. The only changes that are
not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml.

Differential Revision: https://phabricator.services.mozilla.com/D39138

--HG--
extra : moz-landing-system : lando
2019-07-26 01:10:23 +00:00
Emilio Cobos Álvarez
eb7d8bffd8 Bug 1567237 - Only use scroll range to select scrollable frames to scroll to, don't use scrollbar visibility. r=tnikkel
This is what other browsers do, and it does make sense to me, it's useless to
try to scroll a frame with no scroll range in a given direction.

I think all callers of this function should be treated like this, so this is
more like a RFC / feedback request than a patch per se.

The wheel handling code already checks scroll range, so there's no difference of
behavior in that case, if I'm reading the code right.

There are a few other functions that check the result of
GetPerceivedScrollingDirections(), but I think if we change this we should
change this consistently.

I also think that if we do this we should rename the method to something like
GetAvailableScrollingDirections() or such.

Anyhow, wdyt? I should also add a test for this if we go with this.

Differential Revision: https://phabricator.services.mozilla.com/D38991

--HG--
extra : moz-landing-system : lando
2019-07-24 22:33:57 +00:00
Coroiu Cristina
50837746c0 Backed out changeset 2fe42a3dda2c (bug 1567237) for causing leaks on a CLOSED TREE 2019-07-24 20:52:07 +03:00
Emilio Cobos Álvarez
06d6ff95a8 Bug 1567237 - Only use scroll range to select scrollable frames to scroll to, don't use scrollbar visibility. r=tnikkel
This is what other browsers do, and it does make sense to me, it's useless to
try to scroll a frame with no scroll range in a given direction.

I think all callers of this function should be treated like this, so this is
more like a RFC / feedback request than a patch per se.

The wheel handling code already checks scroll range, so there's no difference of
behavior in that case, if I'm reading the code right.

There are a few other functions that check the result of
GetPerceivedScrollingDirections(), but I think if we change this we should
change this consistently.

I also think that if we do this we should rename the method to something like
GetAvailableScrollingDirections() or such.

Anyhow, wdyt? I should also add a test for this if we go with this.

Differential Revision: https://phabricator.services.mozilla.com/D38991

--HG--
extra : moz-landing-system : lando
2019-07-24 13:17:11 +00:00
Narcis Beleuzu
2c7f6ec7b6 Backed out 3 changesets (bug 1567237) for ESlint and mochitest failures on test_scroll_space_no_range_overflow_scroll.html . CLOSED TREE
Backed out changeset 72699e27e033 (bug 1567237)
Backed out changeset 90048e3d6eb3 (bug 1567237)
Backed out changeset 5d602a56edc7 (bug 1567237)
2019-07-24 05:49:52 +03:00
Emilio Cobos Álvarez
eb563e1090 Bug 1567237 - Only use scroll range to select scrollable frames to scroll to, don't use scrollbar visibility. r=tnikkel
This is what other browsers do, and it does make sense to me, it's useless to
try to scroll a frame with no scroll range in a given direction.

I think all callers of this function should be treated like this, so this is
more like a RFC / feedback request than a patch per se.

The wheel handling code already checks scroll range, so there's no difference of
behavior in that case, if I'm reading the code right.

There are a few other functions that check the result of
GetPerceivedScrollingDirections(), but I think if we change this we should
change this consistently.

I also think that if we do this we should rename the method to something like
GetAvailableScrollingDirections() or such.

Anyhow, wdyt? I should also add a test for this if we go with this.

Differential Revision: https://phabricator.services.mozilla.com/D38991

--HG--
extra : moz-landing-system : lando
2019-07-23 22:04:31 +00:00
Mirko Brodesser
2f40f072ab Bug 1565584: move nsIContentUtils::ContentIsDescendantOf to nsINode::IsInclusiveDescendantOf. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D37880
2019-07-15 10:02:21 +02:00
Mirko Brodesser
6b67de025f Bug 1562876: rename Selection::RemoveRange to Selection::RemoveRangeAndUnselectFramesAndNotifyListeners. r=smaug
The name of the corresponding webidl interface of course remains unchanged.

Differential Revision: https://phabricator.services.mozilla.com/D36607
2019-07-03 13:26:14 +02:00
Mirko Brodesser
63b4627d28 Bug 1562876: rename Selection::AddRange to Selection::AddRangeAndSelectFramesAndNotifyListeners. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D36602
2019-07-03 13:26:13 +02:00
Peter Van der Beken
8b00dd9ff2 Bug 1490044 - Move all prefs used in WebIDL to StaticPrefs. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D33507

--HG--
extra : moz-landing-system : lando
2019-06-13 09:00:59 +00:00
Mirko Brodesser
0c5556605c Bug 1552490: rename nsCopySupport::HTMLCopy, change nsDocumentEncoder::IsVisible, add unit to buffer size name. r=hsivonen
Because it states more clearly what the functions and the constant are
about.

Differential Revision: https://phabricator.services.mozilla.com/D31615

--HG--
extra : moz-landing-system : lando
2019-05-20 07:43:43 +00:00
Masayuki Nakano
780b285e68 Bug 1543315 - part 15: Mark PresShell::ScrollFrameRectIntoView() as MOZ_CAN_RUN_SCRIPT r=smaug
Unfortunately, `EventChainVisitor` does not grab the `nsPresContext` with
`RefPtr` by itself.  Therefore, there is no guarantee of the lifetime without
checking the origin when its subclasses are instantiated.  This patch changes
it and subclasses to `MOZ_STACK_CLASS` since only `EventDispatcher::Dispatch()`
creates them in the stack with given `nsPresContext`.  Additionally, it's
already been marked as MOZ_CAN_RUN_SCRIPT_BOUNDARY`.  Therefore, the
`nsPresContext` instance has already been guaranteed its lifetime by the
caller.  For making this fact stronger, this patch marks their constructors
as `MOZ_CAN_RUN_SCRIPT`.  Therefore, nobody can create those instances without
guaranteeing the lifetime of `nsPresContext` and `dom::Event`.  Note that
it may look like that `mPresContext` of `EventChainPostVisitor` is not
guaranteed.  However, `EventChainPreVisitor` which gives `nsPresContext` to it
is also a stack only class.  So, it won't be deleted before
`EventChainPostVisitor` instance.

Differential Revision: https://phabricator.services.mozilla.com/D30010

--HG--
extra : moz-landing-system : lando
2019-05-06 13:57:46 +00:00
Masayuki Nakano
c842b7b133 Bug 253889 - part 4: Finally, get rid of nsIPresShell r=emilio
And also this cleans up some legacy comments of PresShell users.

Differential Revision: https://phabricator.services.mozilla.com/D29313

--HG--
extra : moz-landing-system : lando
2019-05-01 02:28:59 +00:00
Masayuki Nakano
f3bcf4c6d1 Bug 1547418 - Make CapturingContentInfo a private struct of PresShell and move APIs for it from nsIPresShell to PresShell r=smaug
`CapturingContentInfo` struct is used only in `PresShell.cpp` so that we can
make it a private struct of `PresShell` if we move all users of them,
i.e., API to access them, from `nsIPresShell` to `PresShell`.

Differential Revision: https://phabricator.services.mozilla.com/D29111

--HG--
extra : moz-landing-system : lando
2019-04-30 00:26:57 +00:00
Masayuki Nakano
bad5d5bfe9 Bug 1547416 - Move nsIPresShell::ScrollAxis to PresShellForwards.h r=smaug
`nsIPresShell::ScrollAxis` can be used anywhere and it's used by some
utils actually. So, it should be in `mozilla` namespace and perhaps,
 `PresShellForwards.h` is a good place to move it rather than creating
new header file.

Differential Revision: https://phabricator.services.mozilla.com/D29110

--HG--
extra : moz-landing-system : lando
2019-04-30 00:07:49 +00:00
Emilio Cobos Álvarez
11ea945833 Bug 1546697 - Use a consistent style for enum classes in layout. r=dholbert
Per the discussion in:

  https://groups.google.com/d/msg/mozilla.dev.platform/P79pwa9z5m8/iPYPAWPHCAAJ

They should be CamelCase, and that's what most of them already do. This converts
the rest, which are a few.

For the ones that already used `e` or `k` prefixes, I've mostly done:

 for file in $(rg Type::e layout | cut -d : -f 1 | sort | uniq); do sed -i 's#Type::e#Type::#g' $file; done

For the ones that used uppercase, I've removed the prefix if it was already in
the type name, and turn them into CamelCase.

Depends on D28680

Differential Revision: https://phabricator.services.mozilla.com/D28681

--HG--
extra : moz-landing-system : lando
2019-04-25 23:03:04 +00:00
Masayuki Nakano
3622509485 Bug 1545342 - part 2: Make some public enum of nsIPresShell move to mozilla namespace and defined as enum class in PresShellForwards.h r=smaug
This patch moves some `enum` in `nsIPresShell` which are in public scope into
`mozilla` namespace and change them as `enum class`es.

Unfortunately, only "where to scroll" enum is just defines constants of
percentages of scroll destination.  Therefore, this patch makes only them
as `static const`.

Differential Revision: https://phabricator.services.mozilla.com/D28606

--HG--
extra : moz-landing-system : lando
2019-04-25 05:04:15 +00:00
Masayuki Nakano
f5737567dd Bug 1544343 - part 3: Make layout use mozilla::PresShell instead of nsIPresShell as far as possible r=emilio
This patch changes remaining things under `layout/`.  However, there are some
places which still need to use `nsIPresShell`.  That will be fixed in a
follow up bug.

Differential Revision: https://phabricator.services.mozilla.com/D27477

--HG--
extra : moz-landing-system : lando
2019-04-16 07:25:10 +00:00
Masayuki Nakano
daafebb174 Bug 1540927 - part 1: Make nsFrameSelection treat mozilla::PresShell directly rather than via nsIPresShell r=smaug
This patch makes `nsFrameSelection` treat `mozilla::PresShell` directly and
rename `nsFrameSelection::GetShell()` to `nsFrameSelection::GetPresShell()
because of avoiding confusion between `PresShell` vs. `DocShell`.

Differential Revision: https://phabricator.services.mozilla.com/D25719

--HG--
extra : moz-landing-system : lando
2019-04-03 07:53:16 +00:00
Botond Ballo
573a6eaafa Bug 1538511 - Move nsIScrollableFrame::ScrollMode into a separate file. r=kats
This allows this enumeration to be used from nsIPresShell.h without introducing
a circular dependency.

Its new home in layout/base/ScrollTypes.h, included as mozilla/ScrollTypes.h.
Others similar enums can be added to that file if desired.

This patch also makes ScrollMode an enum class (as it's no longer nested
inside a class) and switches its enumerators to the |eName| naming convention.

Differential Revision: https://phabricator.services.mozilla.com/D24796

--HG--
extra : moz-landing-system : lando
2019-03-25 23:17:20 +00:00
Sylvestre Ledru
4aa92e3091 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D22514
2019-03-13 10:19:06 +01:00
Boris Zbarsky
5bf2e408e6 Bug 1534608. MOZ_CAN_RUN_SCRIPT should disallow non-stack refptr arguments. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D23217

--HG--
extra : moz-landing-system : lando
2019-03-13 00:30:11 +00:00
Samuel Thibault
fb05007f2c Bug 919508 - layout: Do not trim spaces when inspected from accessibility layer r=jfkthame
--HG--
extra : histedit_source : 3fbe469291ddca0344d6fd88dcadb6282f1ca846
2019-02-22 22:12:48 +01:00
Ehsan Akhgari
e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Masayuki Nakano
f8844f0d9b Bug 181137 - part 7: Get rid of nsIContentIterator interface r=smaug
Now, nobody requires nsIContentIterator interface.  So, we can get rid of it.

Unfortunately, there is no macro to keep the inherited class,
ContentSubtreeIterator, in the cycle collection to make it keep managing
ContentSubtreeIterator::mRange without nsISupports interface.  Therefore, this
patch moves it into ContentIteratorBase temporarily.  Anyway, the following
patch makes those classes not refcountable.  At that time, this issue will be
fixed.

Differential Revision: https://phabricator.services.mozilla.com/D15927

--HG--
extra : moz-landing-system : lando
2019-01-11 01:51:42 +00:00
Csoregi Natalia
13506c036a Backed out 8 changesets (bug 181137) for bustage on FragmentOrElement.cpp:1751. CLOSED TREE
Backed out changeset 99a977d519a0 (bug 181137)
Backed out changeset 65a4b245e851 (bug 181137)
Backed out changeset 5385d5fd9b8b (bug 181137)
Backed out changeset 83bec02c21d9 (bug 181137)
Backed out changeset b7ab59bf545e (bug 181137)
Backed out changeset b6fc7a332db7 (bug 181137)
Backed out changeset 654fdbad67db (bug 181137)
Backed out changeset 90a1ff49b6b1 (bug 181137)

--HG--
rename : dom/base/ContentIterator.h => dom/base/nsContentIterator.cpp
rename : editor/spellchecker/FilteredContentIterator.cpp => editor/spellchecker/nsFilteredContentIterator.cpp
rename : editor/spellchecker/FilteredContentIterator.h => editor/spellchecker/nsFilteredContentIterator.h
2019-01-10 11:42:27 +02:00
Masayuki Nakano
91a9670801 Bug 181137 - part 7: Get rid of nsIContentIterator interface r=smaug
Now, nobody requires nsIContentIterator interface.  So, we can get rid of it.

Unfortunately, there is no macro to keep the inherited class,
ContentSubtreeIterator, in the cycle collection to make it keep managing
ContentSubtreeIterator::mRange without nsISupports interface.  Therefore, this
patch moves it into ContentIteratorBase temporarily.  Anyway, the following
patch makes those classes not refcountable.  At that time, this issue will be
fixed.

Differential Revision: https://phabricator.services.mozilla.com/D15927

--HG--
extra : moz-landing-system : lando
2019-01-10 08:47:54 +00:00
Emilio Cobos Álvarez
d2ed260822 Bug 1517241 - Rename nsIDocument to mozilla::dom::Document. r=smaug
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.

Overall it's not a very interesting patch I think.

nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.

I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.

While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.
2019-01-03 17:48:33 +01:00
Emilio Cobos Álvarez
4591031b65 Bug 1513012 - Move overflow to use cbindgen. r=heycam
It's one of the most annoying / hacky mako bits we have.

Differential Revision: https://phabricator.services.mozilla.com/D14084
2018-12-11 03:07:08 +01:00
Daniel Holbert
7c3b31a25d Bug 1512112: Remove redundant includes from source files in layout. r=TYLin
All of the removed includes are redundant (i.e. they're #included elsewhere in
the same file).

In most cases, I'm removing the second (redundant) copy of the
#include, except when that copy makes more sense (i.e. if it's in better sorted
order, or if it's paired alongside a closely-associated header while the
earlier copy is not).

Here's the script that I used to generate candidates here -- I ran this in
every subdirectory of layout, on my linux machine (warning, this writes two
files to your /tmp directory):

for FILE in *.h *.cpp; do
  nonunique=$(grep \#include $FILE | grep -v List\.h | cut -f2 -d'"'  | cut -f2- -d'/'| cut -f2- -d'/' | sort | wc -l)
  unique=$(   grep \#include $FILE | grep -v List\.h | cut -f2 -d'"'  | cut -f2- -d'/'| cut -f2- -d'/' | sort | uniq | wc -l)
  if [[ "$unique" != "$nonunique" ]]; then
    echo "$FILE: $nonunique / $unique"
    grep \#include $FILE | cut -f2 -d'"'  | grep -v List\.h | cut -f2- -d'/'| cut -f2- -d'/' | sort  > /tmp/nonunique.txt
    grep \#include $FILE | cut -f2 -d'"'  | grep -v List\.h | cut -f2- -d'/'| cut -f2- -d'/' | sort | uniq  > /tmp/unique.txt
    diff /tmp/nonunique.txt /tmp/unique.txt
    echo
  fi
done

Depends on D13773

Differential Revision: https://phabricator.services.mozilla.com/D13774

--HG--
extra : moz-landing-system : lando
2018-12-05 18:55:59 +00:00
Cameron McCormack
1ea7c3efc9 Bug 1511854 - Part 2: Fix some more formatting oddities in layout/ after the clang-format. r=TYLin
Depends on D13686

Differential Revision: https://phabricator.services.mozilla.com/D13775

--HG--
extra : moz-landing-system : lando
2018-12-05 18:44:05 +00:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Masayuki Nakano
83f155f075 Bug 1498816 - part 1: Make nsFrameSelection::CommonPageMove() emulate click in current selection limiter r=smaug
nsFrameSelection::CommonPageMove() is called only by
nsTextInputSelectionImpl::PageMove() and PresShell::PageMove().  So, this is
the only implementation of (Shift+) PageDown and (Shift+) PageUp.

This scrolls down/up the specific frame.  However, this allows to scroll
outside of selection limiter, for example, even when an editing host is
focused, its parent scrollable element may be scrolled.  This is same behavior
as Blink so that we should keep this behavior.

However, it also emulates to click same position after scroll and this behavior
is different from Blink.  At this time, it does not check selection limiter and
then, nsFrameSelection::HandleClick() may reset selection limiter the scrolled
frame is a parent frame of the limiter.

Therefore, this patch makes it check if the scrolled frame is a parent of the
limiter, and if so, use result of GetFrameToPageSelect() to emulate a click
instead.  The result won't be a parent of the limiter because it is used when
handling Shift + PageDown and Shift + PageUp which are always handled in the
limiter.

Differential Revision: https://phabricator.services.mozilla.com/D13202

--HG--
extra : moz-landing-system : lando
2018-11-29 06:16:15 +00:00
Emilio Cobos Álvarez
9ed36d7ba6 Bug 1506547 - Align user-select behavior more with other UAs. r=mats
There's a few subtle behavior changes here, which I'll try to break down in the
commit message.

The biggest one is the EditableDescendantCount stuff going away. This
was added in bug 1181130, to prevent clicking on the non-editable div from
selecting the editable div inside. This is problematic for multiple reasons:

 * First, I don't think non-editable regions of an editable element should
   be user-select: all.

 * Second, it just doesn't work in Shadow DOM (the editable descendant count is
   not kept up-to-date when not in the uncomposed doc), so nested
   contenteditables behave differently inside vs. outside a Shadow Tree.

 * Third, I think it's user hostile to just entirely disable selection if you
   have a contenteditable descendant as a child of a user-select: all thing.

   WebKit behaves like this patch in the following test-case (though not Blink):

     https://crisal.io/tmp/user-select-all-contenteditable-descendant.html

   Edge doesn't seem to support user-select: all at all (no pun intended).

   But we don't allow to select anything at all which looks wrong.

 * Fourth, it's not tested at all (which explains how we broke it in Shadow DOM
   and not even notice...).

In any case I've verified that this doesn't regress the editor from that bug. If
this regresses anything we can fix it as outlined in the first bullet point
above, which should also make us more compatible with other UAs in that
test-case.

The other change is `all` not overriding everything else. So, something like:

  <div style="-webkit-user-select: all">All <div style="-webkit-user-select: none">None</div></div>

Totally ignores the -webkit-user-select: none declaration in Firefox before this
change. This doesn't match any other UA nor the spec, and this patch aligns us
with WebKit / Blink.

This in turn makes us not need -moz-text anymore, whose only purpose was to
avoid this.

This also fixes a variety of bugs uncovered by the previous changes, like the
SetIgnoreUserModify(false) call in editor being completely useless, since
presShell->SetCaretEnabled ended in nsCaret::SetVisible, which overrode it.

This in turn uncovered even more bugs, from bugs in the caret painting code,
like not checking -moz-user-modify on the right frame if you're the last frame
of a line, to even funnier bits where before this patch you show the caret but
can't write at all...

In any case, the new setup I came up with is that when you're editing (the
selection is focused on an editable node) moving the caret forces it to end up
in an editable node, thus jumping over non-editable ones.

This has the nice effect of not completely disabling selection of
-moz-user-select: all elements that have editable descendants (which was a very
ad-hoc hack for bug 1181130, and somewhat broken per the above), and also
not needing the -moz-user-select: all for non-editable bits in contenteditable.css
at all.

This also fixes issues with br-skipping like not being able to insert content in
the following test-case:

  <div contenteditable="true"><span contenteditable="false">xyz </span><br>editable</div>

If you start moving to the left from the second line, for example.

I think this yields way better behavior in all the relevant test-cases from bug
1181130 / bug 1109968 / bug 1132768, shouldn't cause any regression, and the
complexity is significantly reduced in some places.

There's still some other broken bits that this patch doesn't fix, but I'll file
follow-ups for those.

Differential Revision: https://phabricator.services.mozilla.com/D12687

--HG--
extra : moz-landing-system : lando
2018-11-26 09:21:37 +00:00
Brindusan Cristian
31f0c21cca Backed out changeset 1575904619b5 (bug 1506547) for mochitest failures on test_reftests_with_caret.html. 2018-11-26 03:03:14 +02:00
Emilio Cobos Álvarez
b74c31e4d9 Bug 1506547 - Align user-select behavior more with other UAs. r=mats
There's a few subtle behavior changes here, which I'll try to break down in the
commit message.

The biggest one is the EditableDescendantCount stuff going away. This
was added in bug 1181130, to prevent clicking on the non-editable div from
selecting the editable div inside. This is problematic for multiple reasons:

 * First, I don't think non-editable regions of an editable element should
   be user-select: all.

 * Second, it just doesn't work in Shadow DOM (the editable descendant count is
   not kept up-to-date when not in the uncomposed doc), so nested
   contenteditables behave differently inside vs. outside a Shadow Tree.

 * Third, I think it's user hostile to just entirely disable selection if you
   have a contenteditable descendant as a child of a user-select: all thing.

   WebKit behaves like this patch in the following test-case (though not Blink):

     https://crisal.io/tmp/user-select-all-contenteditable-descendant.html

   Edge doesn't seem to support user-select: all at all (no pun intended).

   But we don't allow to select anything at all which looks wrong.

 * Fourth, it's not tested at all (which explains how we broke it in Shadow DOM
   and not even notice...).

In any case I've verified that this doesn't regress the editor from that bug. If
this regresses anything we can fix it as outlined in the first bullet point
above, which should also make us more compatible with other UAs in that
test-case.

The other change is `all` not overriding everything else. So, something like:

  <div style="-webkit-user-select: all">All <div style="-webkit-user-select: none">None</div></div>

Totally ignores the -webkit-user-select: none declaration in Firefox before this
change. This doesn't match any other UA nor the spec, and this patch aligns us
with WebKit / Blink.

This in turn makes us not need -moz-text anymore, whose only purpose was to
avoid this.

This also fixes a variety of bugs uncovered by the previous changes, like the
SetIgnoreUserModify(false) call in editor being completely useless, since
presShell->SetCaretEnabled ended in nsCaret::SetVisible, which overrode it.

This in turn uncovered even more bugs, from bugs in the caret painting code,
like not checking -moz-user-modify on the right frame if you're the last frame
of a line, to even funnier bits where before this patch you show the caret but
can't write at all...

In any case, the new setup I came up with is that when you're editing (the
selection is focused on an editable node) moving the caret forces it to end up
in an editable node, thus jumping over non-editable ones.

This has the nice effect of not completely disabling selection of
-moz-user-select: all elements that have editable descendants (which was a very
ad-hoc hack for bug 1181130, and somewhat broken per the above), and also
not needing the -moz-user-select: all for non-editable bits in contenteditable.css
at all.

This also fixes issues with br-skipping like not being able to insert content in
the following test-case:

  <div contenteditable="true"><span contenteditable="false">xyz </span><br>editable</div>

If you start moving to the left from the second line, for example.

I think this yields way better behavior in all the relevant test-cases from bug
1181130 / bug 1109968 / bug 1132768, shouldn't cause any regression, and the
complexity is significantly reduced in some places.

There's still some other broken bits that this patch doesn't fix, but I'll file
follow-ups for those.

Differential Revision: https://phabricator.services.mozilla.com/D12687

--HG--
extra : moz-landing-system : lando
2018-11-25 20:01:07 +00:00
Masayuki Nakano
09c4ea6dd3 Bug 1482425 - PresShell::PageMove() should use different rules to look for a container element for aExtend value r=smaug
PresShell::PageMove() climbs up to parent document when there is no scrollable
parent in current document.  However, if aExtend is true, it should expand
Selection in the document itself.  Therefore, it needs different rules to
look for container of expanding Selection from scrollable element to scroll.

Additionally, old rules (i.e., before the fix of bug 1369072 which caused
this regression) were also buggy.  It used parent scrollable element or
root scrollable element simply.  Therefore, if found scrollable element is
ancestor of selection limiter, it didn't work as expected.

This patch creates nsFrameSelection::GetFrameToPageSelect() to retrieve
per-page selection container element with the following rules:
- look for a scrollable element in selection limiter.
- if there is no scrollable element, use selection limiter.
- if there is no selection limiter, use the root frame.

So, nsFrameSelection::CommonPageMove() should take nsIFrame rather than
nsIScrollableFrame since container of per-page selection may be used in
non-scrollable contenteditable element.  If it's called with non-scrollable
frame, it needs to compute the expanding range with the frame size.

Differential Revision: https://phabricator.services.mozilla.com/D8954

--HG--
extra : moz-landing-system : lando
2018-10-18 04:42:53 +00:00
Masayuki Nakano
9ab2669f86 Bug 1487659 - Make Selection treat SelectionChangeListener as a concrete class rather than nsISelectionListener r=smaug
SelectionChangeListener is an nsISelectionListener class.  This is added only
to Selection for "normal" and added by nsFrameSelection::Init() after
AccessibleCaretEventHub.  So, we can make Selection directly treat
SelectionChangeListener.

Differential Revision: https://phabricator.services.mozilla.com/D4757

--HG--
extra : moz-landing-system : lando
2018-08-31 21:22:57 +00:00
Masayuki Nakano
9c349ade9b Bug 1487591 - Make Selection treat AccessibleCaretEventHub as concrete class rather than nsISelectionListener r=smaug
AccessibleCaretEventHub is an nsISelectionListener of Selection whose type is
"normal".  This is added only when nsFrameSelection::Init() is called and
accessible caret is enabled.  Additionally, nsFrameSelection::Init() is
always called immediately after creating nsFrameSelection.

Therefore, when AccessibleCaretEventHub is installed to Selection, this is
always second selection listener and won't be installed multiple times.  So,
Selection can store pointer of AccessibleCaretEventHub directly only when
it's enabled and the Selection needs to notify it of selection change.

This patch makes Selection stores AccessibleCaretEventHub with RefPtr, then,
makes Selection::NotifySelectionListeners() call its OnSelectionChange()
immediately after AutoCopyListener.

Unfortunately, this patch includes making of MOZ_CAN_RUN_SCRIPT_BOUNDARY and
MOZ_CAN_RUN_SCRIPT a lot since some methods of AccessibleCaretEventHub are
marked as MOZ_CAN_RUN_SCRIPT and including AccessibleCaretEventHub.h into
Selection.h causes compile the compile errors.

Differential Revision: https://phabricator.services.mozilla.com/D4733

--HG--
extra : moz-landing-system : lando
2018-08-31 21:19:44 +00:00
Masayuki Nakano
be86e183fd Bug 1486370 - Change nsAutoCopyListener to a static class r=smaug
nsAutoCopyListener is a singleton class but refcountable and a selection
listener.  nsFrameSelection adds it to only normal Selection when it's on
macOS or it's enabled by the pref.  Additionally, it's always first selection
listener since it's added immediately after Selection instance is created.

So, we can make it a static class, and normal Selection instance should have
a bool to decide whether it should notify nsAutoCopyListener of its changes.
Then, we can save the cost of grabbing it with local RefPtr and the virtual
call.

Additionally, this patch renames nsAutoCopyListener to mozilla::AutoCopyListener
and optimizes constructor of nsFrameSelection (using bool var cache to retrieve
the pref, avoid retrieving the pref on macOS).

Differential Revision: https://phabricator.services.mozilla.com/D4504

--HG--
rename : layout/generic/nsAutoCopyListener.h => layout/generic/AutoCopyListener.h
extra : moz-landing-system : lando
2018-08-30 07:36:23 +00:00
Adrian Wielgosik
be0c1a4f55 Bug 1481645 - Remove some redundant uses of do_QueryInterface. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D2893

--HG--
extra : moz-landing-system : lando
2018-08-13 09:05:19 +00:00
Chris Peterson
2afd829d0f Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj
This patch is an automatic replacement of s/NS_NOTREACHED/MOZ_ASSERT_UNREACHABLE/. Reindenting long lines and whitespace fixups follow in patch 6b.

MozReview-Commit-ID: 5UQVHElSpCr

--HG--
extra : rebase_source : 4c1b2fc32b269342f07639266b64941e2270e9c4
extra : source : 907543f6eae716f23a6de52b1ffb1c82908d158a
2018-06-17 22:43:11 -07:00
Emilio Cobos Álvarez
fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Boris Zbarsky
9748db120d Bug 1455676 part 8. Remove nsIDOMNode usage from layout/. r=qdot 2018-05-29 22:58:48 -04:00
Adrian Wielgosik
f1457c6874 Bug 1460940 - Remove nsIDOMDocument uses in layout/. r=bz
MozReview-Commit-ID: KixJ5edlCjl

--HG--
extra : rebase_source : 677049bc7eb131dc86ed468eb8a6b06085f2c17d
2018-05-11 19:46:15 +02:00
Boris Zbarsky
1fb03996f4 Bug 1387143 part 29. Remove nsISelection. r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
a44e6132ff Bug 1387143 part 28. Remove nsISelection::AsSelection(). r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
f992e7ed0d Bug 1387143 part 22. Remove nsISelection isCollapsed/collapsed bits. r=mats 2018-05-08 13:52:39 -04:00
Boris Zbarsky
f7d68d6078 Bug 1387143 part 21. Remove nsISelection getters for anchor and focus points. r=mats
Instead of copying spec-duplicating comments from nsISelection.idl to
Selection.webidl, this just points the latter to the right spec.
2018-05-08 13:52:38 -04:00
Boris Zbarsky
abdd178705 Bug 1387143 part 7. Move the TABLESELECTION_* constants from nsISelectionPrivate to a TableSelection enum. r=mats 2018-05-08 13:52:36 -04:00
Boris Zbarsky
b23f25078d Bug 1387143 part 1. Stop using nsISelection in nsISelectionListener. r=mats 2018-05-08 13:52:35 -04:00
Chris Peterson
71422dcaa9 Bug 1457813 - Part 2: Replace non-asserting NS_PRECONDITIONs with MOZ_ASSERTs. r=froydnj
s/NS_PRECONDITION/MOZ_ASSERT/ and reindent

MozReview-Commit-ID: KuUsnVe2h8L

--HG--
extra : source : c14655ab3df2c9b1465dd8102b9d25683359a37b
2018-04-28 12:50:58 -07:00
Emilio Cobos Álvarez
081d926e7b Bug 1457026: Teach nsDocumentEncoder about display: contents. r=mats
MozReview-Commit-ID: 5F3qurRHMNM
2018-04-26 18:06:37 +02:00