Commit Graph

49 Commits

Author SHA1 Message Date
Astley Chen
d16bc1048c Bug 1347047 Part 2 - Remove caret timeout control from AccessibleCaretManager. r=TYLin
The feature is controlled by pref layout.accessiblecaret.timeout_ms, and has been disabled in bug 1268410.
It's time to remove relevant code from the tree.

MozReview-Commit-ID: LLu8RiQcTpm
2017-03-17 08:50:30 +08:00
Ting-Yu Lin
e84cf763d7 Bug 1273045 Part 2 - Update carets when scrolling in subframes without APZ. r=mtseng
Override OnScrollPositionChanged() in ScrollState because we want to update
carets during scrolling in subframes without APZ.

Due to the observation in bug 1273045 comment 8, we do not distinguish
PositionChangedResult::NotChanged and PositionChangedResult::Changed.
Instead, we always update caret even if its position is not changed.

To avoid excessive CaretStateChangedEvents are dispatched in
OnScrollPositionChanged(), we add IsScrollStarted to distinguish whether
OnScrollStart() is called or not.

MozReview-Commit-ID: KNi9Mct4dSk
2017-03-14 17:50:03 +08:00
Ting-Yu Lin
7577af727a Bug 1273045 Part 1 - Convert UpdateCaretsHint to use EnumSet. r=mtseng
Part 2 is going to add a new hint which will use with RespectOldAppearance.
Hence this patch.

Remove #include "mozilla/WeakPtr.h" and "nsWeakReference.h" because they're
not used in the header.

MozReview-Commit-ID: KiNv0M0v8iO
2017-03-14 15:25:16 +08:00
Ting-Yu Lin
004724aeeb Bug 1341588 Part 3 - Extend phone number selection only if it is already a phone number. r=mtseng
MozReview-Commit-ID: D25xl0oAD4o
2017-03-07 17:21:26 +08:00
Ting-Yu Lin
50da63b176 Bug 1341588 Part 2 - Add StringifiedSelection() to simplify code. r=mtseng
MozReview-Commit-ID: 1tRG8WY13ok
2017-03-07 17:09:39 +08:00
Ting-Yu Lin
65ed91ec8d Bug 1336388 - Use overlapping tilt mechanism in always tilt mode. r=mtseng
MozReview-Commit-ID: LwWnAbHiTBH
2017-02-08 15:51:28 +08:00
Phil Ringnalda
9a09bc8ce5 Backed out changeset 079ee7b41c3a (bug 1156160) for selection reftest failures
CLOSED TREE
2016-11-30 21:34:42 -08:00
Ting-Yu Lin
6bafa31645 Bug 1156160 - Update carets when document becomes visible. r=mtseng
When the user switches back to a tab which has the selection highlight on
the document, call UpdateCarets() to bring the carets back.

MozReview-Commit-ID: LxNoNRl4FHZ
2016-11-25 17:51:40 +08:00
Kartikaya Gupta
f4b14dcf26 Bug 1293483 - Keep the carets hidden when the user is using a mouse to modify the selection. r=TYLin
MozReview-Commit-ID: FJwODLk6XMS
2016-10-03 08:57:44 -04:00
Ting-Yu Lin
e7b43b14e8 Bug 1292904 Part 3 - Use only caret image for touch area if event is a mouse type. r=mtseng
That is, exclude the text overlay to fix the double clicking and triple
clicking on a word in editable text area.

MozReview-Commit-ID: 5bELcNSRo2A
2016-08-14 21:39:30 +08:00
Ting-Yu Lin
7298d7e978 Bug 1293950 - Update mozilla wiki link in AccessibleCaret headers. r=mtseng
Change only comments so DONTBUILD (NPOTB).

MozReview-Commit-ID: 3UOtYyOxg3
2016-08-10 15:46:27 +08:00
Kartikaya Gupta
c7f9770ada Bug 1255555 - When a frame reconstruction triggers caret elements to be cloned, ensure the dummy touch listeners are re-registered on the clones. r=tylin
MozReview-Commit-ID: 8txWmd64LC9
2016-07-11 08:16:39 -04:00
Ting-Yu Lin
44607fa2bf Bug 1249201 Part 2 - Show carets continuously when panning or zooming. r=mats,sebastian
Add a pref "layout.accessiblecaret.always_show_when_scrolling" defaults
to true on all platforms except b2g. When it is set to false, the carets
will be hidden during scrolling, which is the current behavior before
applying this change.

The pref "layout.accessiblecaret.extendedvisibility" was added for
Fennec to keep ActionBar open when carets temporarily hiding during
panning or zooming. Now we make carets always show by default, so the
pref can be removed. However, the floating toolbar still need to be
notified when the scrolling begins, so we dispatch "scroll" instead.

In gtest, the preference changes were in the middle of the test
function. To make the preference change clearer, I add new pref changes
or move the existing ones to the beginning of the test functions.

The 250ms transition effect added in ua.css is per request of UX
designer in bug 1249201 comment 12.

MozReview-Commit-ID: 8NGvDLPbtNY
2016-04-21 16:53:40 +08:00
Mark Capella
8550d2d954 Bug 1235508 - Re-implement fast Phone number selection on long-press, r=TYLin 2016-04-14 02:14:16 -04:00
Ting-Yu Lin
f90ec8a52b Bug 1168891 Part 2 - Allow one caret to be dragged across the other caret. r=mats
This behavior matches the Android convension and the built-in selection
on all desktop platforms.

MozReview-Commit-ID: 2kNm8UZnqH0
2016-04-11 17:57:29 +08:00
Ting-Yu Lin
0c4cb471c0 Bug 1168891 Part 1 - Refine two functions related to caret positioning. r=mats
FindFirstNodeWithFrame() and CompareRangeWithContentOffset() share a lot
of code duplication. I refactor and rename the two functions to improve
the readability.

MozReview-Commit-ID: CyetLHOGT23
2016-04-11 17:57:29 +08:00
Ting-Yu Lin
2f4bf6c9ae Bug 1251519 Part 5 - Use union rect of child frames for clamping. r=mats
This patch use the union of all child scrollable overflow frame rects to
clamp the caret dragging point.

MozReview-Commit-ID: GEF9BpQkQNd
2016-03-10 17:38:33 +08:00
Ting-Yu Lin
8a53f0b468 Bug 1097398 Part 2 - Add preferences to make carets always tilt. r=roc
This is to support Firefox Android L style carets assets that the two
carets always look like tilt.

This patch is derived from a WIP patch by Mark Capella
<markcapella@twcny.rr.com>

MozReview-Commit-ID: H3nKLz6HcpM
2016-02-16 16:55:28 +08:00
Ting-Yu Lin
23bd2e9abc Bug 1246918 - Handle PresShell gone after FlushLayout(). r=roc
After calling FlushLayout(), PresShell::Destroy() might be called and we
should consider PresShell and other resources will be no longer valid.

Before this patch, AccessibleCaretManager and AccessibleCaret(s) are
deallocated in PresShell::Destroy(). However FlushLayout() are all
invoked in AccessibleCaretManager, we need to keep manager alive to
clean up after PresShell::Destroy().

This patch makes AccessibleCaretManager live after PresShell::Destroy(),
and use IsTerminated() to check whether PreShell is vaild after each
FlushLayout() calls.

Note that event though AccessibleCaretEventHub will be unref in
PresShell::Destroy(), all the callers to AccessibleCaretEventHub's
public methods already add a ref to AccessibleCaretEventHub. So we don't
need to worry about AccessibleCaretEventHub and AccessibleCaretManager
die immediately after PresShell::Destroy().

MozReview-Commit-ID: DDpXZ7v3zyo
2016-02-15 15:12:35 +08:00
Ting-Yu Lin
5c2c766349 Bug 1246918 - Fix carets missing after scrolling down in selection mode on Fennec. r=roc
Fennec enables sCaretsExtendedVisibility which uses
Appearance::NormalNotShown instead of Appearance::None to keep actionbar
shown during scrolling. This breaks selection mode update when the
positions of the carets are not changed after scrolling.

To fix this, we need to implement appearance recovering for selection
mode scrolling like we did for cursor mode in bug 1212732, and make
UpdateCaretsForSelectionMode() respects UpdateCaretsHint.

MozReview-Commit-ID: LkfUIGKHL0h
2016-02-11 16:22:57 +08:00
Carsten "Tomcat" Book
cb9bcbbbb3 Backed out changeset bc3e37b63def (bug 1246918) for fix frequent android c1 test failures 2016-02-17 14:35:10 +01:00
Carsten "Tomcat" Book
4dbbf7e132 Backed out changeset 10e71da98b14 (bug 1246918) 2016-02-17 14:34:49 +01:00
Ting-Yu Lin
f458321cee Bug 1246918 - Handle PresShell gone after FlushLayout(). r=roc
After calling FlushLayout(), PresShell::Destroy() might be called and we
should consider PresShell and other resources will be no longer valid.

Before this patch, AccessibleCaretManager and AccessibleCaret(s) are
deallocated in PresShell::Destroy(). However FlushLayout() are all
invoked in AccessibleCaretManager, we need to keep manager alive to
clean up after PresShell::Destroy().

This patch makes AccessibleCaretManager live after PresShell::Destroy(),
and use IsTerminated() to check whether PreShell is vaild after each
FlushLayout() calls.

Note that event though AccessibleCaretEventHub will be unref in
PresShell::Destroy(), all the callers to AccessibleCaretEventHub's
public methods already add a ref to AccessibleCaretEventHub. So we don't
need to worry about AccessibleCaretEventHub and AccessibleCaretManager
die immediately after PresShell::Destroy().

MozReview-Commit-ID: DDpXZ7v3zyo
2016-02-15 15:12:35 +08:00
Ting-Yu Lin
23031ee499 Bug 1246918 - Fix carets missing after scrolling down in selection mode on Fennec. r=roc
Fennec enables sCaretsExtendedVisibility which uses
Appearance::NormalNotShown instead of Appearance::None to keep actionbar
shown during scrolling. This breaks selection mode update when the
positions of the carets are not changed after scrolling.

To fix this, we need to implement appearance recovering for selection
mode scrolling like we did for cursor mode in bug 1212732, and make
UpdateCaretsForSelectionMode() respects UpdateCaretsHint.

MozReview-Commit-ID: LkfUIGKHL0h
2016-02-11 16:22:57 +08:00
Ting-Yu Lin
2caaa62ca6 Bug 1246064 - Support long press to show AccessibleCaret on empty input for Fennec. r=roc 2016-02-08 16:08:46 +08:00
Ting-Yu Lin
f8b28dd69c Bug 1240917 - Do not show caret in empty input on Fennec. r=roc
Per request in bug 1240917 comment 15, we decided not to show caret when
single press on an empty input. This effectively reverts the work in Bug
1230582.
2016-02-02 14:32:31 +08:00
Mark Capella
6369e69ab9 Bug 1242349 - Provide unique AccessibleCaret pref for JS selection changes, r=TYLin 2016-01-26 09:27:36 -05:00
Ting-Yu Lin
8e5a5a65f0 Bug 1241008 - Add preference to show or hide selection bars. r=mtseng 2016-01-21 11:11:38 +08:00
Nicholas Nethercote
4fab88afad Bug 1232852 (part 3) - Remove unused parameters from some accessibility code. r=tbsaunde. 2015-12-15 21:24:06 -08:00
Ting-Yu Lin
3872095913 Bug 1230582 - Always show caret even if input is empty on Fennec. f=capella, r=roc 2015-12-21 01:01:00 +08:00
Mark Capella
9ada0e2340 Bug 1230613 - Long-press to trigger text selection should vibrate, r=snorp 2015-12-10 18:57:02 -05:00
Mark Capella
b60e4524b6 Bug 1215959 - (GeckoCaret2) Upgrade Core and AccessibleCaret, r=smaug 2015-12-01 15:25:06 -05:00
Ting-Yu Lin
809054ba07 Bug 1225701 - Update comments in AccessibleCaret files. r=mtseng
DONTBUILD NPOTB
2015-11-18 11:44:00 +08:00
Nathan Froyd
4e6d8f6705 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
2015-10-18 01:24:48 -04:00
Ting-Yu Lin
585f013f09 Bug 1212732 - Update caret in cursor mode on scroll-end if it was logically visible. r=roc
Currently, the caret in cursor mode is always hide after scrolling. I
think it's better to restore its appearance if it's logically visible
before scrolling. That is:

1) If the caret is logically visible (Normal or NormalNotShown) before
scrolling, update carets on scroll-end to show the caret again.
2) If the caret is hide due to timeout or blur, it should remain hidden
on scroll-end.
2015-10-08 15:18:03 +08:00
Ting-Yu Lin
eb9bcbd089 Bug 1200364 - Fix AccessibleCaret jumps when dragging. r=roc
TouchCaret does not have this issue since it clamps the dragging point
to the editable content boundary.

Fix this bug by porting TouchCaret::GetContentBoundary() to
AccessibleCaret. I apply the clamp logic to both cursor mode and
selection mode if the focus node is on an editable content, which makes
carets dragging in selection mode smoother than SelectionCarets.
2015-10-07 18:09:04 +08:00
Ting-Yu Lin
1db028ad20 Bug 1204872 - Prettify enum class printing. r=roc
Provide operator<< functions so that gtest can use them to print enum
classes.
2015-09-19 01:05:19 +08:00
Ting-Yu Lin
33d4a79163 Bug 1204872 - Make AccessibleCaretManager testable. r=roc
We need to extract statements that touch PresShell, access frame trees,
or call other utility functions into functions so that we could mock or
stub them in gtest.

Inline GetFocusedContent since it's only used once.
2015-09-19 01:05:19 +08:00
Ting-Yu Lin
780fbd9af0 Bug 1204872 - Add documentation and rename mCaretMode. r=roc
Rename mCaretMode to mLastUpdateCaretsMode to make it clear that this
variable track the caret mode since last update. This also avoid the
confusion that GetCaretMode() returns mCaretMode.
2015-09-19 01:05:18 +08:00
Ting-Yu Lin
fece1697ea Bug 1200194 - Remove unneeded AccessibleCaretManager::OnScrolling(). r=roc
This functions is for hiding caret in cursor mode on desktop browser
when receiving NS_WHEEL_WHEEL, which is never used on B2G in production.

On desktop browser, a proper wheel scroll cycle begins by NS_WHEEL_START
and ends by NS_WHEEL_STOP, which was covered by gtest. Move the three
marionette test for TouchCaret only.
2015-09-09 16:47:21 +08:00
Ting-Yu Lin
ef4300479e Bug 1200194 - Add UpdateCaretsHint to guide appearance changing. r=roc
This is the patch which fixed the bug.

When calling OnScrollPositionChanged in cursor mode, we want the
appearance of the caret to be preserved since the caret might be hidden
due to timeout. We should respect the old appearance of the caret.

Add a marionette test to ensure the caret does not appear due to
ScrollPositionChanged.
2015-09-09 16:47:20 +08:00
Ting-Yu Lin
b64b5bfe9e Bug 1197739 - Do not change focus too early unless the frame is selectable. r=roc
Split |ChangeFocus| into two separate functions: |GetFocusableFrame| and
|ChangeFocusToOrClearOldFocus|.

We should only change the focus to the focusable frame until
AccessibleCaretManager is going to:

1) Dispatch CaretStateChangedEvent on an empty editable field.
2) Select a word on a selectable frame.
2015-08-27 16:55:33 -04:00
Ting-Yu Lin
f173aa13ec Bug 1195672 - Make focus changing by long tap behaves like by single tap. f=mtseng, r=roc
We want the focus changing behavior by long tap as close as to the one
by single tap.

The only functional change is that we always clear old focus and
re-focus the window if a focusable frame cannot be found. This behavior
is the same as the single tap implemented in
EventStateManager::PostHandleEvent().

Besides, ChangeFocus now returns the new focusable frame instead of bool
which provides more information.
2015-08-19 15:54:10 +08:00
Bobby Holley
710865df63 Bug 1188696 - Hoist nsRefPtr.h into MFBT. r=froydnj 2015-07-29 10:44:59 -07:00
Birunthan Mohanathas
a29151dc87 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
Morris Tseng
e8c2c7f943 Bug 1155493 - Part 1: Add CaretStateChangedEvent and corresponding utility function. r=roc, sr=smaug 2015-05-19 20:59:00 -04:00
Ryan VanderMeulen
713536a68d Backed out 4 changesets (bug 1155493) for Android test_browserElement_inproc_CopyPaste.html timeouts/crashes.
Backed out changeset 3bd7adb9f591 (bug 1155493)
Backed out changeset 0380b1684e6b (bug 1155493)
Backed out changeset 58b7c1eaf3c8 (bug 1155493)
Backed out changeset 896beb5088a7 (bug 1155493)
2015-05-25 13:15:06 -04:00
Morris Tseng
13dfa9308a Bug 1155493 - Part 1: Add CaretStateChangedEvent and corresponding utility function. r=roc, sr=smaug 2015-05-19 20:59:00 -04:00
Ting-Yu Lin
5a03f1d806 Bug 1110039 - Part 2.3 - Add AccessibleCaretManager. r=roc
See AccessibleCaretManager.h for the class description.

AccessibleCaretManager uses two AccessibleCarets to unify the
functionality provided by TouchCaret and SelectionCarets. It has
"cursor" mode and "selection" mode, which corresponds to TouchCaret and
SelectionCarets, respectively.
2015-04-30 00:59:00 +02:00