Граф коммитов

138 Коммитов

Автор SHA1 Сообщение Дата
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
Andi-Bogdan Postelnicu 5e3e0d4498 Bug 1453795 - Layout - Initialize member fields in classes/ structures. r=dbaron 2018-07-12 09:42:14 +03: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 93af0eea13 Bug 1455674 part 14. Remove use of nsIDOMElement in layout. r=qdot 2018-04-26 23:37:33 -04:00
Sebastian Hengst 0819f35e51 Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
Tristan Bourvon a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Ting-Yu Lin 264402226f Bug 1417376 Part 3 - Pass nsPoint parameters by const references instead of values. r=mats
It's good to save some copy constructor calls.

MozReview-Commit-ID: 6TveqwkOvc0

--HG--
extra : rebase_source : 02e678f985c074f6c972cf8478e233aa5e4607db
2017-11-15 17:55:36 +08:00
Ting-Yu Lin 7326c2887e Bug 1417376 Part 2 - Pass nsPoint parameters by const references instead of references. r=mats
MozReview-Commit-ID: 6TveqwkOvc0

--HG--
extra : rebase_source : d4674181a6198279bedbfc2efe4e0b1715c91d51
2017-11-15 18:26:10 +08:00
Jeremy Chen fa080f402c Bug 1387176 - switch nsFrameSelection to use per-member defaults. r=TYLin
Many members of nsFrameSelection are uninitialized, which could cause some
potential issues. In this patch, we use per-member defaults for nsFrameSelection,
and make sure we initialize all the members properly.

MozReview-Commit-ID: H9MMlSZoinh

--HG--
extra : rebase_source : c68ac4f61a687fd981363efa924fdbb2e0804b10
2017-11-17 17:03:15 +08:00
Jeremy Chen c4bc4498fd Bug 1387176 - move member initialization from the constructor to class definition for nsFrameSelection. r=TYLin
In this patch, we move the member assignments in nsFrameSelection's constructor
to nsFrameSelection's class definition. This is a pre-patch for switching
nsFrameSelection to use per-member defaults. With this patch, all the uninitialized
members can be tracked easily.

MozReview-Commit-ID: 1HhTDlV73QN

--HG--
extra : rebase_source : f97f7a46ba70e1f36f4812591d73b64061cf0c9e
2017-11-17 16:18:40 +08:00
Daniel Holbert 680815cd6e Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK

--HG--
extra : rebase_source : 3356d4b80ff6213935192e87cdbc9103fec6084c
2017-10-27 10:33:53 -07:00
Masayuki Nakano 3bd4299525 Bug 1393348 - part2: nsISelectionController::SELECTION_* should be sequential integer values r=smaug
nsISelectionController::SELECTION_* are declared as bit-mask.  However, no
methods of nsISelectionController treat them as bit-mask and these
values need a switch statement in nsFrameSelection to convert SelectionType to
array index of nsFrameSelection::mDOMSelections because it's too big to create
an array to do it.  Additionally, this conversion appears profile of
attachment 8848015.

So, now, we should declare these values as sequential integer values.

However, only nsTextFrame uses these values as bit-mask.  Therefore, this patch
adds new type, SelectionTypeMask and creates new inline method,
ToSelectionTypeMask(SelectionType), to retrieve mask value for a SelectionType.

MozReview-Commit-ID: 5Za8mA6iu4

--HG--
extra : rebase_source : 86617c1f5fa23166458f4353cb834f9e7c5b131b
2017-08-24 19:14:04 +09:00
Ehsan Akhgari 22c17c93c9 Bug 1386472 - Only register the AccessibleCaretEventHub when the accessible caret is enabled; r=bzbarsky 2017-08-03 23:06:15 -04:00
Masayuki Nakano e756fe8300 Bug 1377989 - part7: Rename aParent, aParentNode and aNode related to nsRange to aContainer r=smaug
MozReview-Commit-ID: K7Lu0U0pdC8

--HG--
extra : rebase_source : 324de9d2927231414395799c0f002889321b7d1e
2017-07-11 23:33:04 +09:00
Sylvestre Ledru 4e9cf83ee8 Bug 1378712 - Remove all trailing whitespaces r=Ehsan
MozReview-Commit-ID: Kdz2xtTF9EG

--HG--
extra : rebase_source : 7235b3802f25bab29a8c6ba40a181a722f3df0ce
2017-07-06 14:00:35 +02:00
Timothy Guan-tin Chien 1d08bd439b Bug 1360500 - Allow custom colors on find selection type selections. r=jaws,masayuki,smaug
This patch implements chrome-only Selection#setColors and
Selection#resetColors methods, and use it to set the background color of
the preferences search highlight.

MozReview-Commit-ID: 2U92aBCAyeh

--HG--
extra : rebase_source : b07af1f37309d8184584b298a720cd5c1382929a
2017-05-10 10:48:50 -04:00
Mats Palmgren 2681077713 Bug 1345247 - Devirtualize nsFrameSelection. r=dholbert
MozReview-Commit-ID: 5bz0XTYKvSy
2017-03-10 14:52:08 +01:00
Ting-Yu Lin f1d19f16fb Bug 1332105 Part 1 - Convert SelectionDetails and related functions to use UniquePtr. r=dholbert
For the non-owning pointer usage like iterating SelectionDetails's linked
list, it's sufficient to use SelectionDetails*.

MozReview-Commit-ID: 7PCFhD6Iz8j

--HG--
extra : rebase_source : 2d26edd513a402384e26719b3c0b5362d7a4ebb8
2017-01-20 17:39:57 +08:00
Ehsan Akhgari 13850f4183 Bug 1309628 - Hide support for dispatching selection events on the contents of text controls behind a pref; r=mystor
This patch adds a pref to control whether we dispatch the selection
events for changes in the contents of input and textarea text controls.
The spec for this feature hasn't been written yet, and we need to exclude
this part of the selection API from the part we want to ship.
2016-10-13 16:52:07 -04:00
Michael Layzell 7f30ef3465 Bug 1231923 - Enable selection events for documents with the System Principal, r=ehsan
MozReview-Commit-ID: J9UoI9Pdu48
2016-10-13 13:07:17 -04:00
Jimmy Wang a2bf6b970a Bug 1261299 - Update the selection cache on repaint to handle when a pre-existing selection becomes active aka the current selection. r=smaug
MozReview-Commit-ID: HrTQnHd12rg

--HG--
extra : rebase_source : bd727de70576a39da3cd3fab1754330c41add768
2016-07-27 16:05:37 -04:00
Masayuki Nakano 581b9986bb Bug 1278014 part.3 Define 2 constants for number of SelectionType and number of SelectionType except "none" r=smaug
This patch defines two constants kSelectionTypeCount and kPresentSelectionTypeCount.  The former is same as nsISelectionController::NUM_SELECTIONTYPES.  The latter is kSelectionTypeCount - 1 for excluding SELECTION_NONE.  The latter is useful in some loops which handle all selection types except SELECTION_NONE.

Note that this patch fixes a bug of nsFrameSelection.  That doesn't treat SELECTION_NONE as a selection (see the definition of index), however, it defines redundant item and doesn't use it actually.  Additionally, it computes invalid selection type in each loop.  Therefore, without this patch, debug build hits MOZ_ASSERT() in ToSelectionType(RawSelectionType).

Note that these constants are defined as anonymous enum because we cannot define as const (or static) even with extern.  If we'd try to do it, it caused link error or not available in nsFrameSelection.cpp as constant value since they were not initialized if they were initialized in nsSelection.cpp.  Therefore, these constants are defined as enum items but using "k" prefix.

MozReview-Commit-ID: H6sH7NBEXlE

--HG--
extra : rebase_source : fd517d5fc2e2d5dc2f96313e2802fd1719817af7
2016-06-11 11:12:26 +09:00
Masayuki Nakano 00591135a4 Bug 1278014 part.2 Define mozilla::SelectionType as an enum class and use it instead of RawSelectionType as far as possible r=smaug
This patch defines mozilla::SelectionType as an enum class.  This is safer than nsISelectionController::SELECTION_* since setting illegal value to its variable is checked at build time.  So, as far as possible, this should be used everywhere (but of course, this isn't available in scriptable interfaces).

And also this implements some useful methods for managing SelectionType and RawSelectionType which are implemented in layout/nsSelection.cpp because nsISelectionController is implemented by both PresShell and nsTextEditorState.  Therefore, implementing one of them may make hard to find them.  On the other hand, nsSelection.cpp is a better file name to look for them.

Note that this patch creates mozilla::Selection::RawType() for binding.  Native code should keep using Selection::Type() but the binding code needs to use RawType() due to impossible to convert from SelectionType to RawSelectionType without explicit cast.

MozReview-Commit-ID: 81vX7A0hHQN

--HG--
extra : rebase_source : d9f88e217c713c60d1c2578ce6421c73ccba8650
2016-06-11 11:06:37 +09:00
Masayuki Nakano 17f667a2e2 Bug 1278014 part.1 Rename SelectionType in nsISelectionController.idl to mozilla::RawSelectionType r=smaug
mozilla::SelectionType will be an enum class. Therefore, we need to rename SelectionType with a word "raw" since it's a type for raw nsISelectionController::SELECTION_*.

MozReview-Commit-ID: K8SO0bbpv0Y

--HG--
extra : rebase_source : 56e3ac852657ef4795d718d2da09b16903c2e66c
2016-06-07 22:42:06 +09:00
Botond Ballo 45d03919dc Bug 1238137 - Telemetry pings for main thread scrolling to bring the caret into view after moving it in response to keyboard input. r=ehsan
--HG--
extra : commitid : 6E0SPxaKbMl
extra : rebase_source : ca82cafc8b462318ffc5030319546731d9e7a540
extra : histedit_source : 63c1e103a3aaf2ce340b1b4f2276763c16ac2237
2016-02-03 20:36:24 -05:00
Mark Capella e7b070ed41 Bug 1215959 - (GeckoCaret2) Upgrade Core and AccessibleCaret, r=smaug 2015-12-01 15:25:06 -05:00
Simon Montagu 3457b582d2 Bug 1216096: restore previous RTL caret behaviour by backout of bug 1164963, bug 1177505, and bug 1180417. r=jfkthame 2015-11-10 04:42:23 -08:00
Nathan Froyd 01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Michael Layzell fe31896607 Bug 571294 - Part 1: Implement selection events behind the dom.select_events.enabled pref, r=smaug 2015-09-12 17:56:44 -04:00
Birunthan Mohanathas a8939590de Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Ted Clancy b1d966b6e0 Bug 1164693 - Part 1: Directional caret should point in caret direction in bidi paragraphs. r=smontagu 2015-06-05 21:44:54 -04:00
Andrea Marchesini 085da9302a Bug 1156632 - Remove unused forward class declarations - patch 5 - rdf, parser, layout and something else, r=ehsan 2015-04-22 08:29:22 +02:00
Ehsan Akhgari 51fd5c3de1 Bug 956530 - Clear the delayed caret data when clicking on a selected part of a text control if the focus event handler selects the control; r=roc 2015-04-14 08:29:11 -04:00
Ehsan Akhgari 883849ee32 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Mats Palmgren 04fed0b7a5 Bug 1129078 - part 4, Add AutoPrepareFocusRange stack objects on paths to TakeFocus that sets up mAnchorFocusRange (and possibly removes mIsGenerated ranges) based on what operation the user is performing. r=smaug 2015-02-21 04:27:59 +00:00
Wes Kocher 88f34ca973 Backed out 8 changesets (bug 1129078, bug 1128722) for mochitest-5 failures
Backed out changeset f7eff607655a (bug 1128722)
Backed out changeset 801b3abc0de8 (bug 1128722)
Backed out changeset 275d27c2dba0 (bug 1129078)
Backed out changeset 9830ab1a2028 (bug 1129078)
Backed out changeset ce5cb876af9a (bug 1129078)
Backed out changeset c199ff86c77f (bug 1129078)
Backed out changeset 38b1b039f14d (bug 1129078)
Backed out changeset c8a99ee97313 (bug 1129078)
2015-02-20 12:24:25 -08:00
Mats Palmgren fc4bb2216e Bug 1129078 - part 4, Add AutoPrepareFocusRange stack objects on paths to TakeFocus that sets up mAnchorFocusRange (and possibly removes mIsGenerated ranges) based on what operation the user is performing. r=smaug 2015-02-20 17:34:21 +00:00
Ehsan Akhgari 4d42b88e0b Bug 989012 - Part 1: Stop after passing over a non-selectable frame if one is found during the frame traversal; r=roc
The caret movement code already handles unselectable text frames if we
happen to land in the middle of one in nsTextFrame::PeekOffsetCharacter/Word.
However, when performing frame traversal to find the next frame to jump
to, we don't remember if we skipped over an unselectable frame, which causes
us to jump one offset too much when the caret is on the boundary of
selectable and unselectable content.  The test cases demonstrate the
scenario.  Note that an <img alt=foo> is implemented by adding a
generated content to the inline frame representing it, so as far as
the caret movement code is concerned, both test cases are treated similarly.

Note that we need to do this only when moving the selection, and not
when extending it.  We are adding an aExtend argument to
nsPeekOffsetStruct's constructor in order to be able to special case
that.
2015-01-27 23:11:26 -05:00
Ehsan Akhgari fa44e7387c Backed out 2 changesets (bug 989012) because of test failure on Linux32 opt mochitest-a11y on a CLOSED TREE
Backed out changeset 9698f6f3f72e (bug 989012)
Backed out changeset 22fb05349a10 (bug 989012)
2015-01-27 16:40:30 -05:00
Ehsan Akhgari 084e7e0b3c Bug 989012 - Part 1: Stop after passing over a non-selectable frame if one is found during the frame traversal; r=roc
The caret movement code already handles unselectable text frames if we
happen to land in the middle of one in nsTextFrame::PeekOffsetCharacter/Word.
However, when performing frame traversal to find the next frame to jump
to, we don't remember if we skipped over an unselectable frame, which causes
us to jump one offset too much when the caret is on the boundary of
selectable and unselectable content.  The test cases demonstrate the
scenario.  Note that an <img alt=foo> is implemented by adding a
generated content to the inline frame representing it, so as far as
the caret movement code is concerned, both test cases are treated similarly.

Note that we need to do this only when moving the selection, and not
when extending it.  We are adding an aExtend argument to
nsPeekOffsetStruct's constructor in order to be able to special case
that.
2015-01-27 15:35:32 -05:00
Simon Montagu abb9d80805 Bug 1067796: make SelectionLanguageChange cache the language direction on mFrameSelection and return early if the language hasn't changed, r=roc 2015-01-09 11:39:38 +02:00
Jonathan Kew 74d961eaf3 Bug 1077515 - part 6 - Create a new nsISelectionController::PhysicalMove command. r=roc 2014-11-22 14:39:03 +00:00
Jonathan Kew 9a00763a7b Bug 1077515 - part 3 - Change desiredX (nscoord) to desiredPos (nsPoint) in nsPeekOffsetStruct, to support maintaining either vertical or horizontal position on inter-line moves. r=roc 2014-11-22 14:39:03 +00:00
Jonathan Kew d4bd3503ab Bug 1077515 - part 1 - Eliminate use of keyCode parameters and values in nsFrameSelection. r=roc 2014-11-22 14:39:02 +00:00
Simon Montagu aafee71bb6 Bug 1100071 patch 1: change uint8_t to nsBidiLevel in a few more places, r=dholbert 2014-11-20 12:45:22 +02:00
Morris Tseng 27ecf9f1b4 Bug 1062735 - Part 1: Remove GetHintForPosition. r=roc 2014-09-28 23:48:00 +02:00
Mats Palmgren 1ae9903d62 Bug 739396, part 1 - Split a range (that are to be added to the Selection as a result of a user action) into multiple ranges that excludes any non-selectable (-moz-user-select:none) sub-trees. 2014-09-10 17:07:36 +00:00
Ryan VanderMeulen 0e562f96b9 Backed out 3 changesets (bug 739396) for Mulet perma-fail on a CLOSED TREE.
Backed out changeset 299911e6983b (bug 739396)
Backed out changeset de11af3e0964 (bug 739396)
Backed out changeset e274cb276cc5 (bug 739396)
2014-09-10 12:21:58 -04:00
Mats Palmgren 4530d16e45 Bug 739396, part 1 - Split a range (that are to be added to the Selection as a result of a user action) into multiple ranges that excludes any non-selectable (-moz-user-select:none) sub-trees. 2014-09-10 13:07:43 +00:00
Robert O'Callahan 2489dc1f01 Bug 1048752. Part 16: Move nsFrameSelection::HINT to CaretAssociationHint.h. r=tn
This patch started an attempt to remove nsFrameSelection.h from nsCaret.h
and metastasized into a rather large refactoring patch that removed it
from some other header files as well, and changed nsFrameSelection::HINT
into a global-scope enum with better names. I also converted bools
into CaretAssociationHint in a few places where that was appropriate,
but there are still some more places (GetChildFrameContainingOffset)
where bools need to be converted. I figured this patch was big enough already.

--HG--
extra : rebase_source : cc618ef60e707e1360644340a2648de389383da0
2014-08-06 17:19:27 +12:00