One of the annoying things about sharing algorithms on the superclass here is that
certain members live on StyleSheet and others live on StyleSheetInfo (a situation
resulting from the split between CSSStyleSheet and CSSStyleSheetInner). This allows
us to write general algorithms on StyleSheet that touch members on StyleSheetInfo
without paying the price of virtual dispatch.
This patch use the union of all child scrollable overflow frame rects to
clamp the caret dragging point.
MozReview-Commit-ID: GEF9BpQkQNd
--HG--
extra : rebase_source : 3722e8a0f32a45439fed753b7d5f9a76add4553f
These tests are added per bug 1251519 comment 10.
test_move_cursor_to_front_by_dragging_caret_to_front_br_element() covers
example 1, and test_drag_caret_from_front_to_end_across_columns() covers
example 3. Example 4 is not easy to write in marionette test since it's
difficult to know whether an image is selected.
Both tests will fail if we clamp the dragging point by using only the
text frame rects as the patch attached in bug 1251519 comment 7.
MozReview-Commit-ID: CKZQKGI6YUw
--HG--
extra : rebase_source : 72f5c2a960c2659fe5015a3ab488d4baa1918059
nsLayoutUtils::IsRectVisibleInScrollFrames() was used only by
SelectionCarets which was removed in bug 1221459.
MozReview-Commit-ID: 4dQAq1umHY7
--HG--
extra : rebase_source : 9c35effc9ac44bb9de5df1e4ddfc0d32edcfb9c9
Bug 655877 Part 20 made this deliberately to let nsTextFrame
QueryFrame-able. https://hg.mozilla.org/mozilla-central/rev/d8c6025c0881
But other types like nsPlaceholderFrame or nsBulletFrame are also
implemented QureyFrame, which do not have this inheritance indirection.
I guess it was for historical reason, and can be removed safely.
MozReview-Commit-ID: CPeQvpKzEKh
--HG--
extra : rebase_source : 86e784648cab3982ff16b3d45a312b98cd963841
Rather than passing around a bool flag to indicate if we should be creating
an AnimationCollection when none is found, it would be a lot easier to read
if we simply introduce a separate method for this.
MozReview-Commit-ID: 6bg8jGoH5pL
By moving GetAnimationCollection to AnimationCollection itself, we can remove
a bunch of virtual methods on the animation managers, simplify call sites,
and provide better type safety by ensuring a correspondence between element
property names and concrete animation types.
One change in behavior, however, is that in doing this we can no longer
add any newly-created AnimationCollection to the corresponding manager's linked
list of collections inside GetAnimationCollection. Instead we take a bool
outparam to indicate if a new collection was created and leave managing the
linked list to the manager. This is just a temporary measure, however, since
by the end of this patch series will will eliminate this linked list altogether
along with this flag.
MozReview-Commit-ID: 1jsc4QcmVDg
This patch templatizes the type of Animation stored in an AnimationCollection.
This allows us to remove a number AsCSSAnimation() calls in nsAnimationManager.
This patch also removes the AnimationPtrArray typedef. In its place we
introduce OwningCSSAnimationPtrArray and OwningCSSTransitionPtrArray but we
don't use these as widely. There was some comment previously that the typedefs
in animation code make it hard to read, particularly when these typedefs don't
make it clear if the data type is an owning reference or not.
In doing this we need to templatize CommonAnimationManager as well and move the
implementation of its (few) methods to the header file. We may be able to
remove the need for templatizing CommonAnimationManager later in this patch
series depending on how we ultimately decide to handle the lifetime of
AnimationCollection objects.
CommonAnimationManager::GetAnimationCollection is a bit messy but this will be
significantly tidied up in subsequent patches in this series.
MozReview-Commit-ID: 3ywatY53pRR
- To avoid confusion, call the blinking cursor (nsCaret) "cursor" so that
AccessibleCaret can be called caret for short.
- Add second_caret_location() as a helper function, and use it in
selection mode tests.
MozReview-Commit-ID: IKN6KuR92HE
--HG--
extra : rebase_source : c247ad6b61bc1b1cc3c4d8784584e19d9ef5c1ea
* Inline some of the open_*_html methods since they're called only once.
* Save test running time by finding the elements needed in tests instead
of find all of the elements in open_*_html methods.
* Remove test_long_press_to_select_non_selectable_word() since it's
covered by test_focus_not_changed_by_long_press_on_non_selectable().
* Use hyphen for element ids.
* Replace "left" and "right" caret by "first" and "second" caret,
respectively.
MozReview-Commit-ID: Ey5m5zO3HYc
--HG--
extra : rebase_source : c94b84ced75560ce1167cda35ee94dd4cc81ee4d
Remove _test_touch_caret_hides_after_receiving_wheel_event() completely
since it was a test only for touch caret, which is a leftover in bug
1221459.
MozReview-Commit-ID: 4szwuG6t5SF
--HG--
extra : rebase_source : 85a201d76016da65f14cd2cc0a641c342e266904
I don't feel these tests are helpful. It's unlikely that someone will
accidentally turn on AccessibleCaret on desktop platforms without being
noticed. Remove these tests also reduces the test running time.
MozReview-Commit-ID: 33RQQSy77gZ
--HG--
extra : rebase_source : 5cd7fd77a48f07ee137d8140481ea6210070d139