When adding an range via `Selection::AddItem()` and only when it's caused by
user's operation, the range may be split at non-selectable content. This is
done in `nsRange::ExcludeNonSelectableNodes()` but it modifies the given range
as the first range. Then, [`Selection::AddRangeInternal()` calls
`Selection::SelectFrames()` with the range which may have been modified by
`nsRange::ExcludeNonSelectableNodes()`](https://searchfox.org/mozilla-central/rev/358f816f63da072145c593e9e2ac36b7250ecd25/dom/base/Selection.cpp#2030,2049).
Therefore, only the frames between first child of `<body>` element and
previous element of first non-selectable content are painted as selection
after user does "Select All".
[`Selection::Extend()` calls `Selection::SelectFrames()` by itself for all
existing ranges](https://searchfox.org/mozilla-central/rev/358f816f63da072145c593e9e2ac36b7250ecd25/dom/base/Selection.cpp#2718-2724). Therefore, this patch creates new method and makes both
`Selection::Extend()` and `Selection::SetStartAndEndInternal()` call it only
when the result is not only one range.
Differential Revision: https://phabricator.services.mozilla.com/D24871
--HG--
extra : moz-landing-system : lando
An explanation of the Mozilla Source Code Directory Structure and links to
project pages with documentation can be found at:
https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure
For information on how to build Mozilla from the source code, see:
https://developer.mozilla.org/en/docs/Build_Documentation
To have your bug fix / feature added to Mozilla, you should create a patch and
submit it to Bugzilla (https://bugzilla.mozilla.org). Instructions are at:
https://developer.mozilla.org/en/docs/Creating_a_patch
https://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree
If you have a question about developing Mozilla, and can't find the solution
on https://developer.mozilla.org, you can try asking your question in a
mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups
are accessible on Google Groups, or news.mozilla.org with a NNTP reader.]
Nightly development builds can be downloaded from:
https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/
- or -
https://www.mozilla.org/firefox/channel/desktop/#nightly
Keep in mind that nightly builds, which are used by Mozilla developers for
testing, may be buggy.