Commit Graph

25 Commits

Author SHA1 Message Date
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
8d354bddf7 Bug 1199161 - Add selectedTextContent to CaretStateChangedEvent. r=kanru, sr=smaug
The old SelectionStateChangedEvent dispatched by SelectionChanged had
this field, but it has not being ported to CaretStateChangedEvent. We
should include selected text in the event so that Gaia could have a
chance to enhance user experience.
2015-09-16 17:58:14 +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
4134b085f4 Bug 1200194 - Tweak formatting and debug logging. r=roc
No logic change is involved.
2015-09-09 16:47:20 +08:00
Ting-Yu Lin
350e5d9219 Bug 1200194 - Fix AccessibleCaret is out of scrollport in cursor mode. r=roc
The comment reads "No need to consider whether the caret's position is
out of scrollport", which is untrue.

For example, the position of nsCaret might be shifted by typing and be
covered by other elements. So we need to set the appearance of first
caret to NormalNotShown when it becomes invisible.
2015-09-09 16:47:20 +08:00
Ting-Yu Lin
a56b2e5e55 Bug 1200194 - Expose nsCaret::GetFrameAndOffset for reuse. r=roc
This function can be reused by AccessibleCaret.
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
b0a1a8d95e Bug 1195672 - Revise the logic of long tap on empty content. f=mtseng, r=roc
The only logic change is that we now call UpdateCaret() before
dispatching CaretStateChangedEvent.

This resolves a bug that the text selection dialog flashes when long
tapping on an empty content.
2015-08-19 15:54:10 +08:00
Ting-Yu Lin
3622df5772 Bug 1195672 - Move the check that frame is selectable into SelectWord. f=mtseng, r=roc
There's a bug that when a frame is focusable but not selectable, we
won't focus on it because we call IsSelectable() before ChangeFocus().

By moving the check into SelectWord(), we'll have a chance to focus on
it.

This resolves a issue that when long press to select a word on a new
opened app, the selection highlight is gray instead of blue.
2015-08-19 15:54:10 +08: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
Ting-Yu Lin
a4558553b7 Bug 1194063 - Always launch caret timer in cursor mode. r=mtseng
If the timer is not launched when the content is empty, the first caret
will always has Appearance::NormalNotShown, which is not consistent with
the behavior when the caret is shown when the content is not empty.

After this patch, Gaia will always receive an update event after 3
seconds timeout. Hence fixed a bug that the shortcut text dialog does
not hide after 3 seconds timeout.
2015-08-17 21:20:00 +08:00
Jeremy Chen
26a399abba Bug 1181418 - Send selectionEditable info to app_text_selection_dialog. r=tlin, r=kanru, sr=smaug 2015-07-31 04:34:00 +08:00
Ting-Yu Lin
2432467eae Bug 1174600 - Fix first AccessibleCarets jumps to top of the screen when dragging. r=mtseng
When the second AccessibleCaret is out of scrollport, its logical
position becomes (0, 0). Therefore we should adjust the dragging point
for first AccessibleCaret only if dragDownBoundaryY > 0.
2015-06-14 22:40:00 +08:00
Ting-Yu Lin
1627cb1c94 Bug 1170084 - Dispatch CaretStateChangedEvent via AsyncEventDispatcher. r=mtseng
We should not dispatch an event if it is not safe to run script since
the event handlers might be implemented by Javascript.
To fix this, we always use AsyncEventDispatcher to dispatch the event.
2015-06-05 15:03:47 +08:00
Ting-Yu Lin
6bf7ab6406 Bug 1169151 - Update carets after long tapping on empty input. r=mtseng
This fixed AccessibleCarets remain on the screen when long tapping on an
empty input.
2015-05-28 02:33:00 +08:00
Morris Tseng
389e122903 Bug 1155493 - Part 3: Dispatch event when carets are updated, pressed, released, tap, longpressonemptycontent, hidden. r=roc 2015-05-13 20:10:00 -04: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
e8a090218f Bug 1155493 - Part 3: Dispatch event when carets are updated, pressed, released, tap, longpressonemptycontent, hidden. r=roc 2015-05-13 20:10:00 -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
Eric Rahm
6fa2b13ee0 Bug 1164620 - Part 1: Remove instances of #ifdef PR_LOGGING in various places. r=froydnj
PR_LOGGING is now always defined, we can remove #ifdefs checking for it.
2015-05-14 10:13:24 -07: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