Commit Graph

54 Commits

Author SHA1 Message Date
Astley Chen
4849179546 Bug 1355752 - Remove B2G wording in AccessibleCaret. r=TYLin
MozReview-Commit-ID: JOv2caZc8J0
2017-04-20 13:16:42 +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
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
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
Kartikaya Gupta
335eb7ee2f Bug 1195722 - On desktop, allow the context menu to pop up concurrently with text selection. r=tylin
On desktop, the context menu is shown when the user lifts their finger after
a long press, but only if the eMouseLongTap event is not cancelled. So by
not cancelling it, we allow both the text selection and the context menu.

On Android, the context menu takes priority over text selection, so this
has no effect (i.e. if the context menu is shown, then the AccessibleCaret
code never even gets the eMouseLongTap event). Also on Android nothing
else relies on the cancellation of the eMouseLongTap event, so this change
is a no-op.

MozReview-Commit-ID: peFzB2afha
2016-08-03 12:00:19 -04:00
Tom Tromey
1b5a2bdb96 Bug 1286877 - do not set c-basic-offset for python-mode; r=gps
This removes the unnecessary setting of c-basic-offset from all
python-mode files.

This was automatically generated using

    perl -pi -e 's/; *c-basic-offset: *[0-9]+//'

... on the affected files.

The bulk of these files are moz.build files but there a few others as
well.

MozReview-Commit-ID: 2pPf3DEiZqx
2016-07-14 10:16:42 -06:00
Chris Peterson
1e35dbdf75 Bug 1272513 - Part 2: Remove redundant -Wshadow CXXFLAGS from moz.build files. r=glandium 2016-05-14 00:54:55 -07: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
Masayuki Nakano
99eab530eb Bug 1259656 part.1 Rename WidgetEvent::refPoint to WidgetEvent::mRefPoint r=smaug
MozReview-Commit-ID: ESWM5ZyBpSR
2016-04-18 23:09:02 +09:00
Masayuki Nakano
93fc327cc4 Bug 1259668 Rename WidgetTouchEvent::touches to WidgetTouchEvent::mTouches r=smaug
MozReview-Commit-ID: FLbows8davI
2016-03-30 18:44:28 +09: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
1739c1849a Bug 1251915 - Ignore handling eTouchCancel events. r=roc
In my original design, I treat eTouchCancel to be like eTouchEnd for
ending a caret dragging procedure.

However when pointer events is enabled, it sents an eTouchCancel event
after the eTouchStart event whose primary usage is to be converted to
pointer events, which then cancels the normal caret dragging procedure.

Moreover, when pointer events is disabled, we don't get eTouchCancel
during a normal caret dragging scenario, so we don't really need to
handle eTouchCancel anyway.

MozReview-Commit-ID: GKju2Tp0q3Q
2016-02-29 15:51:44 +08:00
Ting-Yu Lin
1bcc00125a Bug 1248847 - Assert AccessibleCaretEventHub mRefCnt > 1 in all its entry points. r=mats
Also I removed the 'explicit' keywords from the constructor since they have no
argument so nothing can be implicited converted to them.

MozReview-Commit-ID: GrFcqO0Uf1o
2016-02-19 18:21:16 +08:00
Carsten "Tomcat" Book
b6ca4c24ee Backed out changeset a27cd3e26cc1 (bug 1248847) for bustage 2016-02-19 09:38:59 +01:00
Ting-Yu Lin
173b2f8472 Bug 1248847 - Assert AccessibleCaretEventHub mRefCnt > 1 in all its entry points. r=mats
Also I removed the 'explicit' keywords from the constructor since they have no
argument so nothing can be implicited converted to them.

MozReview-Commit-ID: GrFcqO0Uf1o
2016-02-18 18:38:44 +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
b51b671a52 Bug 1246477 - Fix carets not updated by scroll events in LongTapState. r=roc
This is a regression by "Bug 1121468 - Go to NoActionState after
receiving release on LongTapState."

When receiving a scroll event in LongTapState, i.e. apz starts, we
should call OnScrollStart() and move to the ScrollState.
2016-02-08 16:08:45 +08:00
Ting-Yu Lin
a75f4b4465 Bug 1121468 - Go to NoActionState after receiving release on LongTapState. r=roc
This makes the state change match the user action. No functionality
changes is expected.
2016-01-25 15:50:28 +08:00
Ting-Yu Lin
892fb82643 Bug 1206545 - Store nsIPresShell pointer in constructor instead of Init(). r=roc
When constructing AccessibleCaretEventHub, bypass and store the
nsIPresShell pointer. This is a preparation for later patches.

Also, remove 'virtual' for Init() and Terminate() since the mock object
in gtest does not need to override them.
2015-11-16 18:16:43 +08:00
Nicholas Nethercote
328ed06554 Bug 1222943 (part 1) - Change Touch::mRadius from nsIntPoint to LayoutDeviceIntPoint. r=kats.
This adds a three missing unit conversions for touch radii.
2015-11-09 21:37:31 -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
02531153a1 Bug 1211365 - Delete wheel event handling. r=mtseng
All desktop platforms support APZ now. eWheelOperationStart and
eWheelOperationEnd are superseded by AsyncPanZoomStarted and
AsyncPanZoomStopped respectively.
2015-10-05 16:52:29 +08:00
Ting-Yu Lin
b58a8bdeec Bug 1211365 - Add test case for scrolling in selection mode. r=mtseng 2015-10-05 16:52:29 +08:00
Ting-Yu Lin
27534620af Bug 1210315 - Use preference to control whether to use long tap injector. r=roc
In AccessibleCaretEventHub, it is not accurate to use APZ enabled to
determine whether to use long tap injector. On desktop browser, there's
no long tap events even if APZ is enabled. We should use a preference to
control that.

Since it's a fact the APZ on b2g has long tap events, we should use
preference to disable long tap injector so that when long tap events
stop dispatching to AccessibleCaretEventHub, we'll know immediately.

Delete SetUseAsyncPanZoom() usage in gtest since APZ is not related to
scrolling in AccessibleCaretEventHub.
2015-10-02 23:10:29 +08:00
Daniel Holbert
6b278aca2e Bug 1169974 part 2: Tell clang to ignore inconsistent-missing-override warnings for MOCK_METHOD2 macro from gtests. r=njn 2015-09-24 16:16:14 -07:00
Ting-Yu Lin
742821878e Bug 1196176 - Do not fire extra CaretStateChanged event when typing. r=mtseng
After HideCaret() is called via keyboard event,
OnScrollPositionChanged() still fire another CaretStateChanged event
even if the caret is hidden. We follow OnReflow() to update carets only
when carets are logically visible.

A test case:
1. Type a string on the rocketbar until the text is long enough to scroll.
2. Copy arbitrary string.
3. Tap on rocketbar to show caret, and move it to the end (within 15
   seconds timeout)
4. Type a character.

The text selection dialog should not show.
2015-09-22 17:39:36 +08:00
Ting-Yu Lin
e1d004b150 Bug 1196176 - Fix CaretStateChanged not dispatch on empty content. r=mtseng
We should dispatch CaretStateChanged event in OnReflow() in cursor mode
when the first caret's appearance is NormalNotShown. Otherwise the text
selection dialog won't update its position.
2015-09-22 17:39:36 +08:00
Ting-Yu Lin
587446f058 Bug 1196176 - Hide carets for mouse down reason. r=mtseng
SelectionCaret had been hiding carets upon receiving mouse down reason.
In this way, text selection dialog won't show, hide, and show again.
2015-09-22 17:39:36 +08:00
Ting-Yu Lin
a30c83e84b Bug 1196176 - No need to test mLastUpdateCaretMode. r=mtseng
I now think that mLastUpdateCaretMode is an implementation detail. Test
it will make test and implementation coupled.

It's better to call EXPECT_EQ directly in test functions so that the
line number in test result will be accurate when things go wrong.
2015-09-22 17:39:35 +08:00
Nicholas Nethercote
ee91ce5294 Bug 1169974 - Tolerate inconsistent-missing-override warnings for MOCK_METHOD2 macro from gtests. r=fitzgen. 2015-09-22 17:33:02 -07:00
Ting-Yu Lin
0a5588a884 Bug 1204872 - Add gtest for AccessibleCaretManager. r=roc
Add basic gtest to ensure AccessibleCaret and AccessibleCaretManager are
both testable. More tests to come.

Allow -Winconsistent-missing-override warning in gtest since MOCK_METHOD
does not have 'override' keyword. See bug 1169974.
2015-09-19 01:05:19 +08:00
Masayuki Nakano
c52e0f004e Bug 895274 part.243 Rename NS_TOUCH_END to eTouchEnd r=smaug 2015-09-15 00:14:35 +09:00
Masayuki Nakano
c9e937321c Bug 895274 part.242 Rename NS_TOUCH_MOVE to eTouchMove r=smaug 2015-09-15 00:14:35 +09:00
Masayuki Nakano
27a41ba675 Bug 895274 part.241 Rename NS_TOUCH_START to eTouchStart r=smaug 2015-09-15 00:14:34 +09:00
Masayuki Nakano
22630518dc Bug 895274 part.186 Rename NS_WHEEL_END to eWheelOperationEnd r=smaug 2015-09-11 01:59:55 +09:00
Masayuki Nakano
d3b8156939 Bug 895274 part.185 Rename NS_WHEEL_START to eWheelOperationStart r=smaug 2015-09-11 01:59:55 +09:00
Masayuki Nakano
417d87fd39 Bug 895274 part.184 Rename NS_WHEEL_WHEEL to eWheel r=smaug 2015-09-11 01:59:54 +09: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
Nicholas Nethercote
12fec02dfb Bug 1198334 (part 1) - Replace the opt-in FAIL_ON_WARNINGS with the opt-out ALLOW_COMPILER_WARNINGS. r=glandium.
The patch removes 455 occurrences of FAIL_ON_WARNINGS from moz.build files, and
adds 78 instances of ALLOW_COMPILER_WARNINGS. About half of those 78 are in
code we control and which should be removable with a little effort.
2015-08-27 20:44:53 -07:00
Masayuki Nakano
304639f462 Bug 895274 part.38 Rename NS_MOUSE_MOZLONGTAP to eMouseLongTap r=smaug 2015-08-29 08:58:33 +09:00
Masayuki Nakano
5efe61139d Bug 895274 part.27 Rename NS_MOUSE_BUTTON_DOWN to eMouseDown r=smaug 2015-08-29 08:58:30 +09:00
Masayuki Nakano
00ded62efd Bug 895274 part.26 Rename NS_MOUSE_BUTTON_UP to eMouseUp r=smaug 2015-08-29 08:58:30 +09:00
Masayuki Nakano
329427650a Bug 895274 part.25 Rename NS_MOUSE_MOVE to eMouseMove r=smaug 2015-08-29 08:58:29 +09:00