History log of /frameworks/base/core/java/android/widget/Editor.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
038f7a8b09db95a375a9eab49fa89ab8b2e40b81 04-Jun-2018 Clara Bayarri <clarabayarri@google.com> Fix repeated calls into reportExtractedText

As part of adding the hint text feature in
I357dd5c74b61d149cf8612d1f52c7118ec70c696 I refactored
the code inside reportExtractedText to avoid nesting but lost one
of the condition checks in the process. Since onDraw calls into
this method on each frame, the missing check was causing calls to be
made into the IME even when no content or selection changes have
happened.

Test: CtsWidgetTestCases:.TextViewTest
Bug: 73613936
Change-Id: If56e3f1d45e64dccd052e4cff4d742f0cbecc07c
/frameworks/base/core/java/android/widget/Editor.java
29cb76849c94bdbd95439e372360a51720c6b067 11-Apr-2018 Abodunrinwa Toki <toki@google.com> FloatingActionMode.setOutsideTouchable

Make floating toolbar outside-touchable for link action mode in
non-selectable TextView.
This allows the user to be able to dismiss the toolbar by tapping
outside of the toolbar.

Bug: 78099871
Bug: 73156794
Bug: 78298142
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit CtsViewTestCases:android.view.cts.ActionModeTest
Change-Id: I8e3b460d0b1baee48d4f9cb3f92e73926eeee231
/frameworks/base/core/java/android/widget/Editor.java
993890fbf4ae46122df8716251ac33e2a651e60b 20-Apr-2018 Abodunrinwa Toki <toki@google.com> Merge "Fix non-unique PendingIntent issue with TCImpl." into pi-dev
904a931cfc5f2ffd6fd0c0fb03718abca37b5ee5 18-Apr-2018 Abodunrinwa Toki <toki@google.com> Fix non-unique PendingIntent issue with TCImpl.

As per the referenced bug, we're running into issues where apps are
being fired with stale intents. The reason is because we need intents we
fire to be unique by Intent.filterEquals. Some of the intents we
generate put unique data in the intent extra which is not considered by
filterEquals. The solution here is to create PendingIntents with unique
request codes (using classifiedText.hashCode()).
See more info about this in
https://developer.android.com/reference/android/app/PendingIntent.html

Bug: 77930684
Test: manually tested broken scenarios. See referenced bug
Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Test: bit CtsViewTestCases:android.view.textclassifier.cts.TextClassificationManagerTest
Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Change-Id: Ib7275f94ca5ada51e4ba191742d4b614df12e1ea
/frameworks/base/core/java/android/widget/Editor.java
aeed443b5bf9ee23b123a9d52cc77cd7bb0b4069 12-Apr-2018 Mihai Popa <popam@google.com> Merge "[Magnifier-39] Hide both handles on overlap" into pi-dev
4e51877f5cbdb4a92568dce50c2bdc381cfbe861 27-Mar-2018 Clara Bayarri <clarabayarri@google.com> Fix crash when modifying Selection

The root of this bug was in the fact that Selection.removeSelection
removes two spans, the start index and end index of the selection.
Each span removal triggers Editor#onSpanRemoved, which in turn tries
to set a selection. This meant that if we started with selection
(100, 120), then removeSpan(start) was called, so we had (-1, 120),
then the onSpanRemoved code tried to set a selection so set it to
(120, 120), then removeSpan(end) was called, ending up in (120, -1).

There are two stages to this fix
1. A lot of our code assumes that when either start or end selection
are larger than -1, both are valid. Therefore when we have one of them
out of sync, we crash. Fixed this assumption in all the places I found

2. We didn't have a mechanism to use FLAG_INTERMEDIATE when removing
spans, only when adding them, so this CL adds a remove with flags. This
allows us to not trigger onSpanRemoved when only one of the selection
indexes is removed.
Because this is an added method to an interface, the default just
calls the existing method. The new method is implemented in
SpannableStringInternal and SpannableStringBuilder to read
FLAG_INTERMEDIATE and avoid sending a spans changed event.
Selection.removeSelection then uses FLAG_INTERMEDIATE when removing
the first of the two selection spans.

Note that 2. would be enough to fix the current bug, but we want to
avoid other implementations of Spannable from crashing in the wild.
In general, it seems like a good idea to verify both selection indexes
are valid whenever they are used.

Bug: 72101848
Test: atest FrameworksCoreTests:SpannableStringBuilderTest
Test: atest FrameworksCoreTests:SpannableStringTest
Test: atest CtsWidgetTestCases:TextViewTest
Test: atest CtsWidgetTestCases:EditTextTest
Test: atest android.text.cts.SelectionTest (note new test as well)
Test: atest android.view.inputmethod.cts.BaseInputConnectionTest
Test: atest android.text.DynamicLayoutTest
Change-Id: I0d647fad152d0bef0f2115a46c3d17ebd8642281
/frameworks/base/core/java/android/widget/Editor.java
63ee7f1610025fa14d8e6e2f1049823ba37f8c53 05-Apr-2018 Mihai Popa <popam@google.com> [Magnifier-39] Hide both handles on overlap

In general, since text insertion/selection handles are implemented as
PopupWindows, if they get to overlap the magnifier they are going to be
rendered above it. Therefore, we are trying to avoid this case.

Before this CL, we were only hiding the grabbed handle, when this would
overlap the magnifier. Since the magnifier would usually be displayed a
certain offset above the grabbed handle, this could only possibly happen
when there was not enough space for the magnifier above in the current
surface.

However, this is not enough, as in the case of selection, the other
handle could as well overlap the magnifier in certain cases. This CL
intersects the magnifier rectangle with the rectangles of both handles
and detects whether these should hidden or not.

Bug: 76459199
Test: atest FrameworksCoreTests:android.widget.TextViewActivityTest
Test: atest FrameworksCoreTests:android.widget.TextViewTest
Change-Id: I22519979eead276dbcf273f7c1a54d654fa251bc
/frameworks/base/core/java/android/widget/Editor.java
b1b423a46f187c978ba7d7b7572890ea8e75ba56 27-Mar-2018 Mihai Popa <popam@google.com> [Magnifier-37] Hide handle when overlaps magnifier

In most cases, the magnifier will be displayed above the current line,
so it will not overlap with the handle being dragged. However, when
there is not enough space in the current surface for the magnifier to be
displayed above the current line, the handle can overlap with the
magnifier. Since the handle is implemented as a different window, we
cannot really control the z ordering between them, and we noticed that
the handle will be rendered over the magnifier, which looks bad. This CL
better handles this situation, by hiding the handle when it would
overlap with the magnifier.

Bug: 76459199
Test: manual testing
Test: atest FrameworksCoreTests:android.widget.TextViewActivityTest
Test: atest FrameworksCoreTests:android.widget.TextViewTest
Change-Id: Id5a17fd964360df6094f9e2680e5bcca886c4d2d
/frameworks/base/core/java/android/widget/Editor.java
08a75e0ee7c659c99b3c3bd19d7cf050a75eaa67 28-Mar-2018 Jan Althaus <jalt@google.com> Merge "Change TextClassification to use RemoteActions" into pi-dev
20d346eafec9404fb6f5b8eeb9a18ad794b4ca9a 23-Mar-2018 Jan Althaus <jalt@google.com> Change TextClassification to use RemoteActions

Behavioural changes:
- Every action now as an icon, and instead hints via RemoteAction whether
the icon should be shown or not.
- Icons are now taken from the app default, not the activity.
(That way, we can construct a lightweight resource backed Icon)
- Legacy intents are no longer parceled for security reasons.
(TextClassificatio wasn't parcelable in O)
- TextClassifications built with the new API will always return null for
getIntent, but provide a getOnClickListener.
- Accessibility descriptions are now provided for action mode items.

Testing changes:
- Removed URI checks from TCM test because PendingIntent hides this info.

Bug: 73950205
Test: atest FrameworksCoreTests:TextClassificationManagerTest
Test: atest FrameworksCoreTests:TextClassificationTest
Test: atest CtsViewTestCases:TextClassificationManagerTest
Test: atest CtsViewTestCases:TextClassifierValueObjectsTest
Test: atest CtsWidgetTestCases:TextViewTest
Test: atest CtsWidgetTestCases:EditTextTest
Change-Id: I6706d2c342a8bbb9de0146a48c8b8aac9d9c7d83
/frameworks/base/core/java/android/widget/Editor.java
894469ce0eaa705739e885f4a1b007f73f714e01 21-Mar-2018 Mihai Popa <popam@google.com> [Magnifier-35] Do not show when text is large

There is no point in displaying the magnifier when the text is large
enough. In this CL we are using the font metrics of the TextView to
decide whether the magnifier should be displayed or not.

Bug: 70608551
Test: manual testing
Change-Id: Icb2fb4412b6b930dfb3322e51fd0139152cf9d39
/frameworks/base/core/java/android/widget/Editor.java
520969191b37ddfca441b8065543fd0dee7dd74e 22-Mar-2018 Abodunrinwa Toki <toki@google.com> Fix random SmartLinkify-related TextView bugs.

1. Preserve selection when the TC times out. (See: SelectionActionModeHelper)

2. Fix highlight/toolbar flicker when tapping on a smart link.
- Highlight flicker happening because we reset the selection while in
the process of starting a link action mode.
i.e. onLinkDown: show highlight
onLinkUp: start the link action mode asynchronously
onLinkUp: reset the selection to an insertion cursor*
onLinkActionModeStarted: reset the highlight
*Fix: Don't reset selection while starting a link action mode.
- Toolbar flicker happening because the toolbar positions itself over
the current selection. The way link highlights have traditionally
been done is to set the selection to the links bounds*
*Fix: Hide the toolbar for a few milliseconds when changing
selection for smoother transition.

3. Fix Paste menu overriding link action mode toolbar after a recent
"Copy" action. The Paste menu appearing is a feature. Whenever the
user inserts a cursor after just copying some text, we show the Paste
menu as a way to make it easy for the user to select the text.
Because of the problem described in (2) above, changing the selection
to an insertion triggers the Paste menu feature. Fixing (2) fixes
this.

4. Fix IME popping up on non-selectable + focusable TextViews.
See: imm.showSoftInput(...) in Editor. And see comment in the code
around that. We should only pop up the IME for editable text.

Fixes: 73872461
Fixes: 75985239
Fixes: 76011461

Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Change-Id: If9ddb7f4e6d4db480ba4a495a22f7f2924ab937e
/frameworks/base/core/java/android/widget/Editor.java
3872238081a35cb4df6d574f2b0605e10eccf041 07-Mar-2018 Mihai Popa <popam@google.com> [Magnifier-33] Add animation on line jump

This CL adds a simple motion animation when the magnifier jumps between
lines.

Bug: 74381647
Test: manual testing
Test: atest FrameworksCoreTests:android.widget.TextViewActivityTest
Test: atest CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I27caba47b18e694f93739866d6fd69569cb89184
(cherry picked from commit 8175edc7555febe2fd9792a13abb346577b02c95)
Merged-In: I27caba47b18e694f93739866d6fd69569cb89184
/frameworks/base/core/java/android/widget/Editor.java
27e4dfbc2c2237d4526405b2f8aa739a9a3d1bbf 07-Mar-2018 Mihai Popa <popam@google.com> [Magnifier-32] Do not magnify outside selection

Currently, for selection, if we move one handle towards the other, the
moving handle will stop when the selection becomes 1 character long.
However, the magnifier would continue to follow the finger after this,
no longer being helpful for the selection.

This CL fixes this, by replicating what happens when the magnifier
reaches the end of the line also for the case when it reaches the other
handle.

Bug: 72314536
Test: manual testing (both English and Arabic)
Test: atest FrameworksCoreTests:android.widget.TextViewActivityTest
Test: atest CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I5bde622421c7fb8ecce0ea00f0d8d2af7aa72cf4
(cherry picked from commit 2d6b40b82151aec9ff13478cd5fb58f4ab3fcb7a)
Merged-In: I5bde622421c7fb8ecce0ea00f0d8d2af7aa72cf4
/frameworks/base/core/java/android/widget/Editor.java
e301746a0e393bdb1a8042e36c368fb03c49ae71 07-Mar-2018 Mihai Popa <popam@google.com> [Magnifier-31] Do not magnify outside current line

Currently, after the cursor is reaching the end of a line, the magnifier
keeps following the finger even if the cursor cannot move anymore.

This CL limits the movement of the magnifier, ensuring it stays between
the bounds of the text line. Also, when the finger gets too far from the
end of the line, we dismiss the magnifier. We consider it went too far
when the cursor is not visible anymore inside the magnifier.

Bug: 72314536
Test: manual testing (both English and Arabic)
Test: atest FrameworksCoreTests:android.widget.TextViewActivityTest
Test: atest CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I8dafba1fc8e7b8e482526e818831ece2ee20ac27
(cherry picked from commit dfc752bc745ca272234be41f2b54d49eccece84d)
Merged-In: I8dafba1fc8e7b8e482526e818831ece2ee20ac27
/frameworks/base/core/java/android/widget/Editor.java
27db81baf8f87a03635d85a9077a1c081d8bce57 01-Mar-2018 Richard Ledley <rledley@google.com> Don't use highlighting in non-selectable text. Also fixes potential discrepancy in indexes for Linkified entities.

Test: atest CtsWidgetTestCases:TextViewTest FrameworksCoreTests:android.widget.TextViewActivityTest CtsViewTestCases:android.view.textclassifier.cts.TextClassificationManagerTest FrameworksCoreTests:android.view.textclassifier.TextLinksTest

Change-Id: Ib479afa9af2b921e6a217a34322a766561867b79
(cherry picked from commit bda1d9e740f2a1db186baedc41524cd2d56d145a)
/frameworks/base/core/java/android/widget/Editor.java
db8fc314d2ac9a2ce3209fe9e842c985e6f57d06 26-Feb-2018 Abodunrinwa Toki <toki@google.com> Associate TCconstants with the TCM instead of TCImpl

Also updates flags list.

Bug: 72946306
Bug: 72946123
Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationConstantsTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Change-Id: I8af9d3d1da01836fbadcbbf6ce7c1c0db7456a05
/frameworks/base/core/java/android/widget/Editor.java
a4e39c4f596ebcc3769afdc358d78386c9f6f63b 20-Feb-2018 Mihai Popa <popam@google.com> [Magnifier-23] Fix invisible cursor in magnifier

Previously, if the magnifier was triggered when the cursor was invisible
between blinks, the cursor would remain invisible until its position
first changed as a result of user dragging. This CL fixes this, by
forcing the cursor to become visible when the magnifier is triggered.

Test: manual testing
Test: atest CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: atest FrameworksCoreTests:android.widget.TextViewActivityTest
Bug: 72314929
Bug: 63531115
Change-Id: I95dd0c2474f1cd1695ff3083e062ee38867b8a0c
/frameworks/base/core/java/android/widget/Editor.java
2f19b92c756c539e16bbd730f117acfcdf98b4ce 12-Feb-2018 Abodunrinwa Toki <toki@google.com> TextClassifier: Support service intents.

Previously, the TextClassifier only supported Activity intents.

Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Change-Id: Ic488e2f6241eb91a6cd6e16d9f84a49a679164dc
/frameworks/base/core/java/android/widget/Editor.java
fdbc5ee7630d7454f0f18addadcd51493f10998a 09-Feb-2018 Siyamed Sinir <siyamed@google.com> Fix Editor ActionMode content rectangle

We have made a mistake in a previous change and change the single cursor
selection bounds in a wrong way.

Test: atest CtsWidgetTestCases:TextViewTest
Bug: 72244890
Change-Id: Ie597ff5a9f82e04d673534e35c49da513132cd5b
/frameworks/base/core/java/android/widget/Editor.java
db96b0349543d79209a68e6f0bc2b14c103a09f5 06-Feb-2018 Richard Ledley <rledley@google.com> Merge "Remove selection on nonselectable text (which would be there if a user tapped Linkified text) if a TextView loses focus."
5f2f820c81633beaddc32692b70e480737cdc5c1 05-Feb-2018 Richard Ledley <rledley@google.com> Remove selection on nonselectable text (which would be there if a user tapped Linkified text) if a TextView loses focus.

Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest

Bug: 67629726
Change-Id: Ifc3039f0c814c422b2d727f837ca9c88abc2ebe8
/frameworks/base/core/java/android/widget/Editor.java
80620c52b96936bbd605cdffc71bed5bb01e2067 02-Feb-2018 Jan Althaus <jalt@google.com> Updating smart text selection animation

Now animates the highlight itself as opposed to an outline.

Bug: 70540865
Test: Manually tested it with single and multi-line - ltr and rtl
Change-Id: I8afee259c9952fcff0b713bca62c82a1022f2b0d
/frameworks/base/core/java/android/widget/Editor.java
20f29fdaca3d94f689ac034bd7a78b68f7de05a5 18-Jan-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fix extra space in Suggestions Popup"
b0538e6dac081673f3618411c44d88b4bf8bf93d 16-Jan-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "[Magnifier - 14] Follow finger instead of cursor"
1d1ed0cd6ecf40675a10ecc13f4f33c34598cd2f 12-Jan-2018 Mihai Popa <popam@google.com> [Magnifier - 14] Follow finger instead of cursor

This CL makes the magnifier follow the finger rather than the cursor in
text editing. Hence, the magnifier's movement becomes horizontally
smooth, rather than only jumping at the same time with the cursor.
Vertically it remains stable relative to the current line.

Bug: 70508649
Test: bit CtsWidgetTestCases:android.widget.cts.MagnifierTest
Change-Id: I7e06a7064f0a413379b30c5e2d11ee85d2ad3720
/frameworks/base/core/java/android/widget/Editor.java
0d9fbb9bd15fb1c6eae171d316a2de65aaffeb48 28-Nov-2017 Jan Althaus <jalt@google.com> Making TextClassifier helper objects parcelable

- EntityConfidence is no longer generic because it doesn't mix well with
being Parcelable.
- Deprecated OnClick listeners in TextClassification as they can't be
parceled. (Outright removed the secondary listeners that were not part
of any release)
- Classes that were present in previous releases have their parceling
factored out into ParcelableWrapper helper classes for backwards
compatibility.

Bug: 67609167
Test: Added
Change-Id: I820ca4abc6b80f90007ab4424bc5df2a14f797b0
/frameworks/base/core/java/android/widget/Editor.java
724eff9a3da8cea2d0356186982caa8dd8da33fd 21-Dec-2017 Richard Ledley <rledley@google.com> Make Linkify links clickable in nonselectable text.

Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest\#testToolbarAppearsAfterLinkClickedNonselectable
Bug: b/67629726

Change-Id: I94452116453fff1a36f5d567b3a686e92e97a34f
/frameworks/base/core/java/android/widget/Editor.java
26b8722de6fcab8a3b127450bae1534a61918178 30-Nov-2017 Richard Ledley <rledley@google.com> Show Floating Toolbar when tapping a selectable TextLink in TextView.

Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest\#testToolbarAppearsAfterLinkClicked
Bug: b/67629726
Change-Id: Ied7a1903a308db37d0eb288c8e611da8229f381a
/frameworks/base/core/java/android/widget/Editor.java
ce8db9911494225fcd99711d7df85a130de5a6ce 14-Dec-2017 Jeff Sharkey <jsharkey@android.com> Add more IntDef prefixes for auto-documenting.

Test: builds, boots
Bug: 70177949
Exempt-From-Owner-Approval: annotation-only changes
Change-Id: I76dde6054e06f52240bd4b1a0f196dcb74623608
/frameworks/base/core/java/android/widget/Editor.java
ddd156bed51ec1f46f9e18e170afa3d55bd68e71 12-Dec-2017 Siyamed Sinir <siyamed@google.com> Merge "Fix an incorrect display position of error popup in RTL layout" am: b7941c50a0 am: 0863cf4e40
am: 8fc08cc0f6

Change-Id: I96476450550e726c3ac6c07e39afcd175cfee043
b7941c50a0953b380c65fa152c9c7da954d3d238 12-Dec-2017 Siyamed Sinir <siyamed@google.com> Merge "Fix an incorrect display position of error popup in RTL layout"
008f387e8344f9f98149856cd737086c14752f4d 27-Nov-2017 Abodunrinwa Toki <toki@google.com> Add a signature to TextSelection and TextClassification

A signature is a tag that a TextClassifier may use to identify an
object it returned for a given query. This is useful for logging
purposes.

This cl also removes:
- TextClassification.getLogType() and related logging.
This is already covered by selection event logging.
- TextClassification.getVersionInfo(),
TextSelection.getVersionInfo()/getSourceClassifier().
These are now featured in the signature.

TODO: Write a container class that generates and parses signatures.

Bug: 69791269
Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I294f7e4d16c98c6512d56d08d488b204c1f91d47
/frameworks/base/core/java/android/widget/Editor.java
ba3856266cff7e6865eb23ec0828b2a0aee2c79f 29-Nov-2017 Abodunrinwa Toki <toki@google.com> Primary/Secondary actions in TextClassification.

Bug: 68846316
Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I84c652cb953f1af9b1c4077fa2a13ae23689c48b
/frameworks/base/core/java/android/widget/Editor.java
d6644dcfeaa0aa3ddb32cffb6b329078da5f193d 21-Nov-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 10] Make it public

* moves the Magnifier from com.android.internal.widget to
android.widget
* removes useless public getters; useless for now because we have
no magnifier configuration but the hardcoded one

Bug: 67839742
Bug: 63531115
Test: bit CtsWidgetTestCases:android.widget.cts.MagnifierTest
Change-Id: Ie6f474c4c781038650007a15937d61c650ee5fdd
/frameworks/base/core/java/android/widget/Editor.java
f1f320c81e2d60dc8822df907c9a44df2a3d718f 20-Nov-2017 Andrei Stingaceanu <stg@google.com> Merge "[Magnifier - 8] SurfaceView support and invalidate revival"
41589fa83dd06d2b2acf14107719b24fa42d8f29 02-Nov-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 8] SurfaceView support and invalidate revival

It turns out that the auto-invalidate at a defined time,
practically polling, is not a safe way to update content
and also has more chances of producing poor quality so
temporary bring back update() and keep it hidden as the
plan is to have direct update listeners from the graphics
stack in the near future. This solution works well for
TextView, WebView and Chrome.

Added support for SurfaceView (used by Chrome).

Editor adds an onDrawListener to the TextView's tree observer
which posts to Magnifier update. This makes sure the
absolutely everytime anything changes in the view hierarchy
update() will be posted (after the actual drawing).

Bug: 63531115
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: If1b858d793c7cc338d23a850051022768a3f1e40
/frameworks/base/core/java/android/widget/Editor.java
a0c8c1cfc81e33435687a3bc030621e3d4fe5f95 13-Nov-2017 Hidehiko Tsuchiya <hidehiko.xa.tsuchiya@sonymobile.com> Fix an incorrect display position of error popup in RTL layout

Symptom:
The display position of error popup is incorrect in RTL layout such as
Arabic language.

Root cause:
In LTR layout, a popup window is anchored to the bottom-left corner of
the anchor view. But in RTL layout, it's anchored to the bottom-right.
showError calculates a position for RTL by itself and it gets a wrong
result.

Solution:
Set the base alignment of the error popup to the bottom-left even though
it's in RTL.

Bug: 69402857
Change-Id: Iae099984e6c47feca078658ddc44ab905995fe0d
/frameworks/base/core/java/android/widget/Editor.java
0d872c0f2ef5465df273d3dace47deb5e688941f 14-Nov-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Show selection handles even when toolbar is empty."
deb2f49f2ca57226e1e49a623718a1e0f1c083fe 06-Nov-2017 Abodunrinwa Toki <toki@google.com> Show selection handles even when toolbar is empty.

Bug: 64245206
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Change-Id: I2e985b12865bc3786f25b88bf6738048cc0e05a4
/frameworks/base/core/java/android/widget/Editor.java
c28be38ee2d5b2c6d1e43e9557b255776008bbf9 07-Nov-2017 Abodunrinwa Toki <toki@google.com> Fix the list of PROCESS_TEXT items in the toolbar.

Bug introduced in I56c71450c850e1d8cd80d54d4e17a6390823485f
Bug: 66939160
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit CtsViewTestCases:android.view.textclassifier.cts.TextClassificationManagerTest

Change-Id: I8e9aee8791e2c6ba341015fa3a1c997004e7066a
/frameworks/base/core/java/android/widget/Editor.java
5a6a5417ec5fe2a9f18577abc6e6906e8377b066 25-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "TextView: Support multiple textAssist menu items."
3049d8c1c0d9cee17ca1f55d2caa749deb93e337 17-Oct-2017 Abodunrinwa Toki <toki@google.com> TextView: Support multiple textAssist menu items.

Bug: 68049162
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I831e6933b584a2999f159dc2d80113ea9ba717f8
/frameworks/base/core/java/android/widget/Editor.java
d27c36b870fe5334b9a9a8c2b610f38e5487ec4a 24-Oct-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 6] Simplify API and configuration

* removed "scale" from the show(...) API
* made the zoom scale a dimension => the widget is
fully self-configured
* fixed the magnifier not always scaling the content
to the full pop-up window size

Bug: 63531115
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: Ibf5c571970c8f6bd3cdbc6d46fbe57d08291783c
/frameworks/base/core/java/android/widget/Editor.java
1eb19a3b87836af92fc989c1afa56ad4febd716b 23-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "[Magnifier - 5] Auto invalidate and misc"
ca189fe0fa28a3304bc49de7acc2115ff2b93973 19-Oct-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 5] Auto invalidate and misc

* due to having to make the API public, drop the
invalidate_by_client strategy in favor of self invalidation
by polling
* in Magnifier#show(...) stop sending screen coordinates in favor
of view coordinates
* UI/UX:
** width from 200dp to 164dp
** fixed the shadow depth (elevation)
** fixed the rounded corners (2dp)

Bug: 63531115
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: I6451767b0a618c0c4ea396ba3ee3144523dadc57
/frameworks/base/core/java/android/widget/Editor.java
a18447dd4bda74c6500c4705b9eb54af63deaf3b 20-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "FloatingToolbar updates"
15af561efd47a2948a65894d6a916d9656b13f7b 13-Oct-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 3] Reduce number of calls to PixelCopy

* Magnifier#show() takes snapshots of the content and displays
them in the Magnifier bitmap
* calling show(...) consecutive times with the same arguments is
a no-op if already showing (to cater with the miriad of motion
events produced by touch which end up calling show(...))
* introduced Magnifier#invalidate(...) which, if currently
showing, forces updating the content using the last configuration
* clamped the start horizontal value of the Rect which delimits the
content to show in order to avoid distorting the rendering of the
magnifier content
* fixed invalidating the magnifier (invalidate() does not
automatically call invalidate(RectF) !)

Bug: 63531115
Bug: 67296158
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: I8e53dfb6582d541922fe05b60311658fb07ca880
/frameworks/base/core/java/android/widget/Editor.java
9c881f227b2a136193a0a9236100075363a76f68 16-Oct-2017 Abodunrinwa Toki <toki@google.com> FloatingToolbar updates

- Replace SHOW_AS_OVERFLOW_ALWAYS with SHOW_AS_ACTION_NEVER
- MenuItem ordering
- Allow textAssist items in overflow to show text with images
- MenuItem label text now standard case (not allcaps)

Bug: 62447250
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I07fa06f433a34adfad20b371417c95ce76422456
/frameworks/base/core/java/android/widget/Editor.java
451f947ffa8af1fa2913af0848b52e826e30414b 13-Oct-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 4] Batch of tweaks

* magnifier zoom from 1.5 to 1.25
* max scale from 10 to 4
* magnifier shows over the text if there is no more space above
instead of showing underneath the cursor
* paused the blink while showing the magnifier and resumed when
dismissing

Bug: 63531115
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: Ief3e0b7dc9e287e7dd1a9102548b1861598b69c4
/frameworks/base/core/java/android/widget/Editor.java
060b3d7b5c75dcf28da793c93f2fa7de6765e85e 04-Oct-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 2] Turn magnifier ON

Flip the flag for turning ON the magnifier attached
to Editor's handles.

Bug: 66657373
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: I644c2b834a0c630e5a84a0b948b8667ea988eea6
/frameworks/base/core/java/android/widget/Editor.java
6c591dd3c3c1bf0f9868da7cc13cdc8b87791bc8 04-Oct-2017 Andrei Stingaceanu <stg@google.com> Merge "[Magnifier - 1] Initial implementation and wiring"
e06eebf48096838bf3143042950ea191db8d7c06 03-Oct-2017 Roozbeh Pournader <roozbeh@google.com> Rename mCursorDrawble to mDrawableForCursor

To go around app bugs caused by assuming that mCursorDrawable is an
array. The apps try to manipulate mCursorDrawable by using
reflection, but crash since they access it incorrectly after it
changed from an array to a single Drawable in
I249befaf70630bef435c8db9039e8aacf233bf7c.

Bug: 66988832
Test: mmm -j frameworks/base
Change-Id: I04fc930d786dd4c74b560d7a25d17353f49ea25b
/frameworks/base/core/java/android/widget/Editor.java
d2eadfa4b1d6f1ff05f7f4ee3538f7b41d73f70b 22-Sep-2017 Andrei Stingaceanu <stg@google.com> [Magnifier - 1] Initial implementation and wiring

* implementation of a magnifier which can be attached to any view
* important APIs:
** show(float centerXOnScreen, float centerYOnScreen, float scale)
** dismiss()
* smart offset => shows below if there is no space above
* controlled by boolean flag (easy to turn off)
* attached the magnifier to Editor's handles
* vertically snaps to the middle of the line containing the
selection
* horizontally snaps to the offset of the character where
the selection starts/ends

Bug: 66657373
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: manual test that shows the magnifier working
Change-Id: I1d4616b8bb1210d869ac47dca137ea9636355250
/frameworks/base/core/java/android/widget/Editor.java
019389a638417ba516d4eb85239966c9d19b7796 14-Sep-2017 Jan Althaus <jalt@google.com> New metrics fields for selection logs

Changes that affect logging:
- Switched to new category/actions/fields that are used exclusively by
selection logging.
- Action types are now logged in the tron type (the information that was
previously in the field could be derived from other fields).
- Entity types are now logged in the tron sub type.
- Delta time from previous event is now zero for first event (was time
since epoch).
- The smart select model version is now written for all events after
smart select has run. (i.e. better support for analysis based on
terminal events alone)
- Restoring the logging removed in ag/2901629.

Internal only changes:
- Made debug statement conditional on DEBUG_LOG_ENABLED.
- Reduced logging tag length to fit into 23char limit.

Bug: 64914512
Test: Manually tested that logs are correct. Will follow up with automated tests.
Merged-In: If12daa2f206fb42be53587decbe2c4abfd689f41
Change-Id: Iec0f6cf1f9f2efdc8518133cf8551cd96b095ad8
/frameworks/base/core/java/android/widget/Editor.java
a2dfc3cc68f0c348f641f5ac895220745c7b3588 15-Sep-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "New metrics fields for selection logs"
d8c5e7fc414f63b555f4f8ed7aec7b2f3220a388 24-Jul-2017 Clara Bayarri <clarabayarri@google.com> Fix hint text updates in Extracted text mode

Updates to the hint on a TextView were not notified to the
ExtractEditText, so there was no way it could know to update.
This change pipes through the hint value when the extracted
mode becomes visible and informs it of changes.

The Editor#reportExtractedText method has been refactored to
be more readable. Note that checks on whether the content
changed are done in the two places in the code that already
called this method, and we explicitely don't want to check
contents when there is a hint change.

Bug: 63980155
Bug: 65691495
Test: bit CtsWidgetTestCases:.TextViewTest
Change-Id: I357dd5c74b61d149cf8612d1f52c7118ec70c696
/frameworks/base/core/java/android/widget/Editor.java
786a39dfa5605498c481d7b1f1f4cf376fd5238e 15-Sep-2017 Jan Althaus <jalt@google.com> New metrics fields for selection logs

Changes that affect logging:
- Switched to new category/actions/fields that are used exclusively by
selection logging.
- Action types are now logged in the tron type (the information that was
previously in the field could be derived from other fields).
- Entity types are now logged in the tron sub type.
- Delta time from previous event is now zero for first event (was time
since epoch).
- The smart select model version is now written for all events after
smart select has run. (i.e. better support for analysis based on
terminal events alone)
- Restoring the logging removed in ag/2901629.

Internal only changes:
- Made debug statement conditional on DEBUG_LOG_ENABLED.
- Reduced logging tag length to fit into 23char limit.

Bug: 64914512
Test: Manually tested that logs are correct. Will follow up with automated tests.
Change-Id: If12daa2f206fb42be53587decbe2c4abfd689f41
/frameworks/base/core/java/android/widget/Editor.java
89bda32771d896a6c19c98d4aa41271cb9b0da43 06-Sep-2017 Abodunrinwa Toki <toki@google.com> Log the "change selected text" gesture.

This logs when the selected text is changed e.g. by typing on
the hard or soft keyboard.

Bug: 64914512
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Merged-In: I82b3b2157856c607d08a82c0a3d9fb938af4c06a
Change-Id: I82b3b2157856c607d08a82c0a3d9fb938af4c06a
/frameworks/base/core/java/android/widget/Editor.java
78940eb8591a77c4d9b1872cd760aac87e681ece 12-Sep-2017 Abodunrinwa Toki <toki@google.com> Log the "change selected text" gesture.

This logs when the selected text is changed e.g. by typing on
the hard or soft keyboard.

Bug: 64914512
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I82b3b2157856c607d08a82c0a3d9fb938af4c06a
/frameworks/base/core/java/android/widget/Editor.java
5ab7bb242e8b24c1952cba16cc629b7174344937 05-Sep-2017 Petar Å egina <psegina@google.com> Draw SmartSelectSprite in TextView

Instead of the SmartSelectSprite drawing its contents into a View's
ViewOverlay, the SmartSelectSprite can now be drawn on any Canvas. In
order to perform the smart select animation, it is now the TextView that
performs the actual drawing.

Since the TextView can adjust the canvas for its padding and offset,
there is no more need to manually transform the selection rectangles, so
that part can be removed.

Test: manual - verify smart select animation still works
Change-Id: Ibaccf59fd44d5701e6f37d6b4fa97f2b05fd77cc
/frameworks/base/core/java/android/widget/Editor.java
7c5df649d7e09b28b68b29fff86fdee1cf4f5673 05-Sep-2017 Abodunrinwa Toki <toki@google.com> Merge "Delete old TEXT_SELECTION_MENU_ITEM_ASSIST logs." into oc-mr1-dev am: f28b8a8de3
am: 48063322b4

Change-Id: I23f8204732f1f166aacf10d5d147bd3f21025c6b
fadd4288df075891d59222a269c613e08d333bf1 05-Sep-2017 Abodunrinwa Toki <toki@google.com> Delete old TEXT_SELECTION_MENU_ITEM_ASSIST logs.

This field is now being used for new smart selection logging.
See: Icc9d5b542140bdb01b2ad4211048bd83eae2ce83

Bug: 64914512
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit CtsAccessibilityServiceTestCases:android.accessibilityservice.cts.AccessibilityTextTraversalTest
Change-Id: If1ce8ca038b089500cd7adb9a146330abe909407
/frameworks/base/core/java/android/widget/Editor.java
5ddd3ed8556b9bd5a991d97da84fb78a456f6363 31-Aug-2017 Abodunrinwa Toki <toki@google.com> TextView text selection interaction logging.

TODO: Log typing over selection

Bug: 64914512
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit CtsAccessibilityServiceTestCases:android.accessibilityservice.cts.AccessibilityTextTraversalTest

Merged-In: Icc9d5b542140bdb01b2ad4211048bd83eae2ce83
Change-Id: Icc9d5b542140bdb01b2ad4211048bd83eae2ce83
/frameworks/base/core/java/android/widget/Editor.java
57ec6ea1bb6b4014f97f1b83781bd7b69ac2f95c 04-Sep-2017 Abodunrinwa Toki <toki@google.com> TextView text selection interaction logging.

TODO: Log typing over selection

Bug: 64914512
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit
CtsAccessibilityServiceTestCases:android.accessibilityservice.cts.AccessibilityTextTraversalTest

Change-Id: Icc9d5b542140bdb01b2ad4211048bd83eae2ce83
/frameworks/base/core/java/android/widget/Editor.java
2be7eff3a4f22abee8d500f91fed93b4ebeb8723 24-Aug-2017 Roozbeh Pournader <roozbeh@google.com> Merge "Use fallback-based line spacing in TextView etc"
5caf5a690f7db72912120c310d4002b69f7ead50 23-Aug-2017 Roozbeh Pournader <roozbeh@google.com> Use fallback-based line spacing in TextView etc

In TextView and Switch, version-gate the use of
setUseLineSpacingFromFallbacks() to apps targeting Android P and
later for backward compatibility.

In internal widgets, ImageFloatingTextView and SubtitleView, always
turn it on, since there is no backward compatibility concerns.

Bug: 28963299
Test: bit CtsWidgetTestCases:android.widget.cts.CheckedTextViewTest
Test: bit CtsWidgetTestCases:android.widget.cts.EditTextTest
Test: bit CtsWidgetTestCases:android.widget.cts.SwitchTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.widget.TextViewTest
Change-Id: Icfe4e71ba26bbc6755ba12ddab72e6bf20b3ce25
/frameworks/base/core/java/android/widget/Editor.java
91df3f9e7c95d43d645e158b7d8fd34acc3385d3 15-Aug-2017 Petar Å egina <psegina@google.com> Expand the animation from the user's last touch point

The Smart Select animation now expands from the spot the user last
lifted their finger.

In order to achieve this, the last up event coordinates need to be
tracked in Editor.

Since it's possible to trigger Smart Select by having the second of the
two taps outside any of the rectangles, the touch point gets moved into
the nearest rectangle and the animation starts from that point.

Test: manual - try out Smart Select by touching different words at
different points
Test: manual - try to trigger Smart Select with a double tap where the
second tap is outside of the word
Test: bit FrameworksCoreTests:android.widget.SelectionActionModeHelperTest
Test: bit CtsViewTestCases:android.view.textclassifier.cts.TextClassificationManagerTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit CtsAccessibilityServiceTestCases:android.accessibilityservice.cts.AccessibilityTextTraversalTest
Change-Id: I96844e8307554b010b476673820f98dae09c0cc3
/frameworks/base/core/java/android/widget/Editor.java
d762f3220168a22897c22295f31f7cfcd6b376f3 10-Aug-2017 Abodunrinwa Toki <toki@google.com> Merge "Fix failing Framework TextView tests."
4a056a5895e09b5e5e1950672077730313332b1b 05-Aug-2017 Abodunrinwa Toki <toki@google.com> Fix failing Framework TextView tests.

. Fix TextViewActivityTest.testToolbarAndInsertionHandle
. Suppress TextViewActivityMouseTest

Bug: 29591177
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Test: bit FrameworksCoreTests:android.widget.TextViewActivityMouseTest
Change-Id: I51edcf4d7e4f179a8b02316cc1cb6314b209baad
/frameworks/base/core/java/android/widget/Editor.java
8b7053dd455958761e03082ead98b22c52020a98 02-Aug-2017 Siyamed Sinir <siyamed@google.com> Merge "Fix EditText cursor when line spacing is set"
9c13307c386a05ae288c965843c6edf47cbaa14f 27-Jul-2017 Roozbeh Pournader <roozbeh@google.com> Remove secondary bidi cursor

The double bidi cursor is not user friendly. Almost no native speaker
of bidi languages likes the double cursor.

Now we always show one cursor.

Change-Id: I249befaf70630bef435c8db9039e8aacf233bf7c
Fixes: 63542996
Test: Manual (no more double cursors, bidi editing feels OK)
Test: bit CtsTextTestCases:*
Test: bit CtsWidgetTestCases:android.widget.cts.EditTextTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.text.
Test: bit FrameworksCoreTests:android.widget.EditorCursorTest
Test: bit FrameworksCoreTests:android.widget.TextViewTest
/frameworks/base/core/java/android/widget/Editor.java
a60b59d1cc2d2d2938beb0bd34e1abbab7d65cbb 26-Jul-2017 Siyamed Sinir <siyamed@google.com> Fix EditText cursor when line spacing is set

Test: bit FrameworksCoreTests:android.widget.TextViewTest
Test: bit FrameworksCoreTests:android.widget.EditorCursorTest
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit CtsWidgetTestCases:android.widget.cts.EditTextTest

Bug: 30870806
Change-Id: I54f014b06af328c3e9a9c4ddb5a3348a26e290c2
/frameworks/base/core/java/android/widget/Editor.java
ce3b05abc0291015d31c76ec57cb5b5a163acb7a 19-Jul-2017 Siyamed Sinir <siyamed@google.com> Handle long text for share/cut/copy operations.

When TextView or EditText contains text that is larger than the
total parcelable limit, some of the FloatingToolbar operations would
crash.

This CL changes the behavior as follows:
- Show a toast message if cut or copy operation fails because it cannot
set the primary clip.
- Trim the text for share and process_text actions
- A simple app with an EditText and a long text in it, would not open
since Autofill value was being sent over IPC. Trimmed the text that is
sent for Autofill feature.
- Trim the value send to accessibility services

Test: bit CtsWidgetTestCases:.TextViewTest
Test: bit FrameworksCoreTests:android.widget.TextViewTest
Test: bit FrameworksCoreTests:android.text.TextUtilsTest
Test: Manual sample app test

Bug: 8013261
Change-Id: Ia0df6b4eb4c13071a1bf75cedac7241c7239663c
/frameworks/base/core/java/android/widget/Editor.java
428e523f4773b4e108f94f3b740dfee0ab267a10 18-Jul-2017 Clara Bayarri <clarabayarri@google.com> Fix extra space in Suggestions Popup

There was extra space shown when there are no suggestions to show
in the material theme.

Bug: 27559349
Test: manually tested UI
Change-Id: I861fe1f4c534f8c9af6b886b9f6c844e7431db2f
/frameworks/base/core/java/android/widget/Editor.java
4a7aeb3cb007fc2ebde028e4e6f6b75d273bf07e 13-Jul-2017 Abodunrinwa Toki <toki@google.com> Avoid FloatingToolbar flickers

by:
1. Restricting 'moving hide' -- where we hide the toolbar if the
toolbar is moving.
2. Hide the toolbar when transitioning to 'select all' -- where the
toolbar is refreshed.

Bug: 32910217
Bug: 30418276
Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
bit CtsWidgetTestCases:android.widget.cts.TextViewTest

Change-Id: I1f44ee765d74bbcf08e6e7cd635f76d1e8f6305b
/frameworks/base/core/java/android/widget/Editor.java
1d263b8a38cd2468ff271aef83b15f9d74490625 01-Jul-2017 Abodunrinwa Toki <toki@google.com> Merge "No smart text assist for unprovisioned device." into oc-dr1-dev am: bda6275cf6
am: 925eb60a2c

Change-Id: Ib08b1a455c69ec499488d89df6c2419c368ca27c
9796a1bd00da81bf90d97ec29ee8b31d277bd953 28-Jun-2017 Abodunrinwa Toki <toki@google.com> No smart text assist for unprovisioned device.

Test: bit CtsViewTestCases:android.view.textclassifier.cts.TextClassificationManagerTest
bit FrameworksCoreTests:android.widget.TextViewActivityTest
bit FrameworksCoreTests:android.widget.TextViewActivityMoutseTest
Bug: 62745625
Change-Id: I360250a5c2a92d09c8d8f559b51c74f490f70c2c
/frameworks/base/core/java/android/widget/Editor.java
555bcac6b207a7d7d7440395d231f43c9bad1ca6 26-Jun-2017 Felipe Leme <felipeal@google.com> Make the android.R.string.autofill public.

Fixes: 62444792
Test: manual verification with app that uses it the string
Test: CtsAutoFillServiceTestCases pass

Change-Id: Ic859a7a80ab25f6e240a308715b7c50708c497f3
/frameworks/base/core/java/android/widget/Editor.java
c9cd9db4bb67b4e3a89e44a21c42f742940069da 20-Jun-2017 Yohei Yukawa <yukawa@google.com> Use TEXT_HANDLE_MOVE in TextView behind the flag

This CL enables TextView to trigger
HapticFeedbackConstants.TEXT_HANDLE_MOVE on devices that explicitly
enable this feature with resource overlay. This CL should have no
behavior change and no performance impact by default.

Since the use case of HapticFeedbackConstants.TEXT_HANDLE_MOVE is
when the user is manually moving the text insertion/selection handle
on the touch screen, it is intentional that text handle move
triggered by hardware keyboard, mouse, TextView APIs, IME APIs, and
any other internal API calls do not trigger the haptic feedback
even if the feature is enabled with resource overlay.

Bug: 62454887
Test: Manually done as follows.
* Not triggered on cursor move by mouse
* Not triggered on cursor move by hardware keyboard
* Not triggered on cursor move by IME
* Triggered on cursor move by touch screen
Change-Id: I5e78aafb065378ca88ba39ec507b121c8baa3631
/frameworks/base/core/java/android/widget/Editor.java
532f3c989ec02bc63ed0e88095a2f7588af72be4 16-Jun-2017 Siyamed Sinir <siyamed@google.com> Fix crash during TextView.onCreateContextMenu

Test: bit CtsWidgetTestCases:TextViewTest

Bug:62450393
Change-Id: I162c28d253ca197eba9c4c148c76179c2880daa5
/frameworks/base/core/java/android/widget/Editor.java
484c2e2fbec02209337bb86fc99b8b253bc06f99 08-Jun-2017 Siyamed Sinir <siyamed@google.com> Force Autofill in FloatingToolbar overflow menu

Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
bit CtsWidgetTestCases:android.widget.cts.EditTextTest

Bug: 62271937
Change-Id: Ib3447281f3bd1abc811a25fc55ad55e34e155bbb
/frameworks/base/core/java/android/widget/Editor.java
1c1626ec7615e7842568afca62af90ec2658f7b3 02-Jun-2017 Felipe Leme <felipeal@google.com> Don't show AUTOFILL menu when text is selected.

Fixes: 62271937
Test: manual verification
Test: existing CtsAutoFillServiceTestCases tests pass

Change-Id: I80902cb38633e41f50044f413b1b86904a60261e
/frameworks/base/core/java/android/widget/Editor.java
4ce651e92d8f0a1ec0c5a6ba30c2a8b2b0a90f55 12-May-2017 Abodunrinwa Toki <toki@google.com> TextView: Invalidate selection action mode on "select all".

Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: I0b5ebb8d6f1af1a9938151f758a2feedb14fcb9f
Fixes: 38244876
/frameworks/base/core/java/android/widget/Editor.java
1d77557517918258cbf4264e647a138d1b9b648f 08-May-2017 Abodunrinwa Toki <toki@google.com> TRON: Count smart selection events.

Logs:
- Smart selection occured
- TextView menu item activated on smart selection
- Smart selection reset
- Smart selection modified

Test: Manually checked logging happens as per go/tron-howto and verified
nothing is broken in related classes by running:
bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
bit FrameworksCoreTests:android.widget.TextViewActivityTest

Bug: 32572232
Change-Id: Ia9081d92ae9aea50d863455be770eecd0c73be1a
/frameworks/base/core/java/android/widget/Editor.java
66c162730190db1079987ff456c7f1c0d522a20e 03-May-2017 Abodunrinwa Toki <toki@google.com> Only classify text when the toolbar is shown.

classifyText() is used to generate a menu item in the selection toolbar
to handle the selected text. In this cl we avoid calling classifyText()
when the selection is changing but instead call it when we are about to
show the toolbar.

Previously, we depended on invalidateActionModeAsync() to classify text
after a call to startActionMode(). Now that we've introduced
invalidateActionMode() we need to be able to tell
startSelectionActionMode() that we also want the text to be classified,
hence the introduction of an input parameter, "adjustSelection", to
startSelectionActionModeAysnc().

Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Bug: 34966796
Change-Id: I5b9fc9e8ab443f024f8ca461df5a4bcc6485d26b
/frameworks/base/core/java/android/widget/Editor.java
3cb61255abad0d9426e80261f0c38b02937f33fb 02-May-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Support resetting "smart selection" to any word in the selection." into oc-dev
8dd3a744a67bd0ff83629d7023f3cb0634b9a490 02-May-2017 Abodunrinwa Toki <toki@google.com> Support resetting "smart selection" to any word in the selection.

Test: See topic
Bug: 34779207
Change-Id: I75a9b991571f750b362047baa13675250e929223
/frameworks/base/core/java/android/widget/Editor.java
ea6cb1215e97232bf96da02e35b6b8e938572eaa 28-Apr-2017 Abodunrinwa Toki <toki@google.com> Add "Paste as plain text" in TextView's toolbar.

Test: bit FrameworksCoreTests:android.widget.TextViewActivityTest
Bug: 36179795
Change-Id: Iee0502678adcfb9de58c107b9247a528718b2c40
/frameworks/base/core/java/android/widget/Editor.java
e0b57893c68a685d287664df28467694a39e4432 28-Apr-2017 Abodunrinwa Toki <toki@google.com> TextClassifier: API rename

getTextClassificationResult() -> classifyText()
TextClassificationResult -> TextClassification

Test: bit FrameworksCoreTests:android.view.textclassifier.TextClassificationManagerTest
Bug: 37769880
Change-Id: I2d926e89058babf06bcff390bee3a45e965984e8
/frameworks/base/core/java/android/widget/Editor.java
54523413f8897c7149a47c5786ab796e0ab0aed1 27-Apr-2017 Svet Ganov <svetoslavganov@google.com> Force autofill on overflow only if empty

Test: manual

bug:37244196

Change-Id: I0953546492ade815617d30f698e92282a1172302
/frameworks/base/core/java/android/widget/Editor.java
54486c16bac3b31dc04074d2377fe8c63a2e4a0f 19-Apr-2017 Abodunrinwa Toki <toki@google.com> TRON: Log "textAssist" actions.

- Logs when the assist menu item appears in the text selection menu.
- Logs when the assist menu item is selected.
- Logs the the type of the assist menu item that was presented.

Test: Manually tested by looking at the logs. See: go/tron-howto
Bug: 32572232
Change-Id: Ibbbf59423b3f510ab6f2f072962a556c3d6e2f65
/frameworks/base/core/java/android/widget/Editor.java
6eecdc934c6050d67a639116cde600c09e5b76bd 11-Apr-2017 Abodunrinwa Toki <toki@google.com> FloatingToolbar: Rules for ordering menu items.

- The assist menu item should always appear first
- Only the assist menu item should have an icon + text label

The description above enforces the expected UX without breaking
existing apps. Previously, apps couldn't have icons + text for a
menu item (we only rendered text for such items). If we don't
enforce that the assist menu item (android.R.id.textAssist) appears
first, then this item could potentially be rendered in a different
position for apps that specify an order number lower than that
specified for the assist menu item.

Test: Included in this cl.

Bug: 35989798

Change-Id: I56c71450c850e1d8cd80d54d4e17a6390823485f
/frameworks/base/core/java/android/widget/Editor.java
7557a5a090204dccfd32096af4a6ded1f9bb5b17 12-Apr-2017 Roozbeh Pournader <roozbeh@google.com> Revert "Make selection end handle stick to selection at line end."

This reverts commit 7c263ddd582abacbbe9c71341a6ef4c704d12100.

Fixes: 35944608
Bug: 21305922
Test: Manual
Test: Updated CTS and core tests pass.
Change-Id: Ic840f8771c3d5850f4f6f44ea199b144cac740c0
/frameworks/base/core/java/android/widget/Editor.java
2ac463e3f5c3b757ecbc7e30e0fc1e8e0d878272 13-Mar-2017 Felipe Leme <felipeal@google.com> Allow users to manually request Autofill.

- Added a requestAutofill(view,flags) method, that when passed with
FLAG_MANUAL_AUTOFILL triggers a manual request.
- Added same method for virtual views
- Overloaded existing AutofillService request methods to take a flag.
- Added an AUTOFILL context menu option on TextViews.
- Added a canRequestAutofill() that is used to enable the context menu.

BUG: 35708229
Test: manual verification
Test: existing CtsAutoFillServiceTestCases pass
Test: android.autofillservice.cts.LoginActivityTest#testManualAutofill pass

Change-Id: I1a64d40da3373774451d178b1cabf20f11120e9d
/frameworks/base/core/java/android/widget/Editor.java
89ba5fbde063c96a0bb18b583dd5f4c24ecdbc4b 23-Feb-2017 Abodunrinwa Toki <toki@google.com> Implement reset to original selection.

The UX for smart selection specifies that the user is able to reset
the original selection by tapping once on the word after smart
selection. Tap once, and the selection resets to the word that was
initially selected (before smart selection happened), tap one more
time and the insertion cursor appears as usual. If the user taps
a different word other than the original selection, the insertion
cursor appears as before.

Test: I7456eb4773d40366a3f4aa7bf051a1c7ddda6e9d
Bug: 34777048
Change-Id: If73259ddb67379d5a5deaa01b840b5185cedf4c8
/frameworks/base/core/java/android/widget/Editor.java
9b4c82a83cc3c1aafac2325d7a601ba3e090b90b 06-Feb-2017 Abodunrinwa Toki <toki@google.com> TextClassifierImpl: Handle urls.

This cl also updates label strings, renames an internal method,
and fixes some bugs in TextClassifierImpl caught by tests.

Test: See: I31ee94177e58c986e61e9b24c6c5816fa4b022e1
Bug: 34778263
Bug: 34922928
Change-Id: Ibf60d345d462dfc8a13dead6f01053f1ae50f35a
/frameworks/base/core/java/android/widget/Editor.java
5fedfb8d469ea5d1911be3ec44c2c19e7946a6e3 06-Feb-2017 Abodunrinwa Toki <toki@google.com> FloatingToolbar: Support for menu groups.

1. Menu groups are now separated by dividers
2. Update to menu item spacing as specified in new UX mocks
3. TextView-Editor now passes the "assist" menu as a group
4. "Share" menu reordered after "Cut/Copy/Paste" as per UX mocks update.

Test: Manual tests.
Bug: 34777048
Bug: 34777833
Change-Id: I3d435d8a38e5b146a54706f12dbf3ff629c504bf
/frameworks/base/core/java/android/widget/Editor.java
bf1a0e23ae988a449aeb2d7216ead676cfe617bc 08-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "start/invalidate selection actionMode asynchronously"
1e2758256a391be23c537725f0a7785e4fb5b7d0 07-Feb-2017 Phil Weaver <pweaver@google.com> Merge "Provide text locations to accessibility services."
8710ea13c13aa22f82cdcb0fc461ed4cd8b2aa63 24-Jan-2017 Abodunrinwa Toki <toki@google.com> start/invalidate selection actionMode asynchronously

Text selection is now started/updated using AsyncTasks that first get
a result from the TextClassifier before actually starting/invalidating
the actionMode on the UI thread with the result.

Bug: 34778899
Test: cts-tradefed run cts-dev -m CtsWidgetTestCases -t android.widget.cts.TextViewTest#testSmartSelection
Change-Id: Ie7eda04bb64335744d88b8874363d46af4f94742
/frameworks/base/core/java/android/widget/Editor.java
c2e28932d22faece6e7179c78d4e7656dc63052c 08-Dec-2016 Phil Weaver <pweaver@google.com> Provide text locations to accessibility services.

Bug: 30170631
Test: New CTS tests on linked CL.
Change-Id: I723e3777189c8df71c59dada00abdf339ebc983d
/frameworks/base/core/java/android/widget/Editor.java
fafdb7372fe0da277a32b47cff825dbb244e4af0 02-Feb-2017 Abodunrinwa Toki <toki@google.com> Fix TextClassifier.getTextClassificationResult()

Gracefully handles situations where a default app cannot be found
to handle the intent.

1. If we can not find any app to handle the intent,
do not include an "assist" menu item entry to fire the intent.
Also, do not linkify the entry.
2. If we do not have a default app to handle the intent,
show a generic title for apps that will handle the intent
and do not include an icon.

In the ideal case where we find a default app to include the intent,
show the app's (preferably activity's) title and icon.

Test: Manually tested. There's an AI to write more automated tests.
Bug: 34777322
Bug: 34927631
Change-Id: Ia94efbbdda3da8f181fac9228cd2d3a76cb727d3
/frameworks/base/core/java/android/widget/Editor.java
f9a81f352ea7819793387202ce6894cc97df5b6f 31-Jan-2017 Abodunrinwa Toki <toki@google.com> Ignore smart selection for multi-word selections.

Test: See: Ic273fd68f300671d8e7c0dabe4a3ae9470056fcc
Bug: 34831428
Bug: 34778597
Bug: 34778381
Change-Id: Ib15828996081a72f02f5075acac1f2f6c51d3601
/frameworks/base/core/java/android/widget/Editor.java
f001fefff3745c29e2ff6903d69ad921df1ea277 05-Jan-2017 Abodunrinwa Toki <toki@google.com> Update TextAssistant interface.

Rename to TextClassifier
Move to android.view.textclassifier package
Adds getTextClassifierInfo(...)
Changes addLinks(...) to getLinks(...)

This CL also integrates this interface with framework components
and passes a context to TextClassificationManager.

Test: Tests will be added with implementation.
Bug: 34661057
Change-Id: If9e90f034ebb702c1f78e72b6a844f39eebf738f
/frameworks/base/core/java/android/widget/Editor.java
3dac460b4861a7d17a178d053b486ef721e36322 17-Jan-2017 Ben Murdoch <benm@google.com> When dragging text, take style data too.

Test: manual; dragged some formatted text. Style preserved.

Bug: 34264469
Change-Id: I8463782eba6d32dca054b8f59033745b9c5519a7
/frameworks/base/core/java/android/widget/Editor.java
846946ec06e4f7b31d5a414f026ef03e13793df7 13-Jan-2017 Keisuke Kuroyanagi <ksk@google.com> Merge "Make selection end handle stick to selection at line end."
7c263ddd582abacbbe9c71341a6ef4c704d12100 12-Jan-2017 Keisuke Kuroyanagi <ksk@google.com> Make selection end handle stick to selection at line end.

At line break, one offset can be mapped to two phisical
position: previous line end and next line start.
Previously, all cursor handles are placed at next line
start.
With this CL, selection end handle is placed at the
previous line end in such cases.

Test: FrameworksCoreTests
Bug: 21305922

Change-Id: I00d9f9a0cd417ca92534e93b3d3f655cd62f25d3
/frameworks/base/core/java/android/widget/Editor.java
d0d9ceb30c1f6fa674de98274c0684c3418d66d3 21-Nov-2016 Abodunrinwa Toki <toki@google.com> Introduce TextAssistant for Smart Text Share feature.

Bug: 30982298
Test: CTS tests to be added in a follow up CL.
Future CLs will add implementation detail.

Change-Id: Iad550447a4b3552340c0ada75fda60f97f0913aa
/frameworks/base/core/java/android/widget/Editor.java
1b304e40737ac7df8034dc4e0433e768635b5e7c 04-Nov-2016 Abodunrinwa Toki <toki@google.com> TRON logging for TextView gesture - Long press.

Bug: 32572232
Test: Manually confirmed that stats were sent for logging by checking
adb logs according to go/tron-howto.
Change-Id: I1ea09174190247c219ce42f70c7db75148033685
/frameworks/base/core/java/android/widget/Editor.java
c69f693216d548876ced98c14f6a9e7e0d1acf04 25-Oct-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Undo for drag and drop."
46ca471d2553ec0d3e6cb1a8ec5e782eb333fd8f 25-Oct-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Selection created by long tap and drag can be empty."
f5af4a344e086efa87740a0154cace064465fe54 31-Aug-2016 Keisuke Kuroyanagi <ksk@google.com> Always redraw text that protrude from line bounds.

With I63af3a6ecbf92, we create RenderNode lazily, but
blocks containing contents that protrude from line top or
bottom cannot be simply lazily redrawn after edit or
scroll.
With this CL, we check if the contents protrude from line
top or bottom by comparing the text bounds with relevant
font metrics values and we always redrawn such blocks after
edit or scroll.

Bug: 27889485
Change-Id: I666da5eeb39f780c341597f347bfcba21eb34295
/frameworks/base/core/java/android/widget/Editor.java
499c15963a1721a63e8303a198ec898f70102206 05-Sep-2016 Keisuke Kuroyanagi <ksk@google.com> Lazy RenderNode creation to improve performance.

Bug: 27889485

Change-Id: I63af3a6ecbf921cb428e5f7812e1c6983bfb0882
/frameworks/base/core/java/android/widget/Editor.java
ee62c29b8f6a7345ac858d32c00c6f416cf40da2 22-Jul-2016 Aurimas Liutikas <aurimas@google.com> Cleanup TextView and Editor style issues.

Change-Id: Ibcf0c2f3166e1a2baa16f4328ce328e5de213c66
/frameworks/base/core/java/android/widget/Editor.java
fa2d7b1f21641a94134906bbadcf1cdcef54697e 22-Jul-2016 Keisuke Kuroyanagi <ksk@google.com> Fix: Undo for drag and drop.

Drag and drop operation can be merged with last edit
operation. In this case, insert and delete were recorded as
independent operations even if they were done in one batch
edit.
With this CL, we always create dedicated undo/redo state for
drag and drop.

Bug: 28588666
Bug: 30297308
Bug: 29871372
Change-Id: Ib4cb144c6b9b5aa095bc9208fcdedaa737964126
/frameworks/base/core/java/android/widget/Editor.java
133dfc0068d9f14eb9907a4ca77e4e87e8a705e4 21-Jul-2016 Keisuke Kuroyanagi <ksk@google.com> Fix: Selection created by long tap and drag can be empty.

Bug: 21302473
Change-Id: Ia81729a402957d25b40d203af3ce69c166f8dc91
/frameworks/base/core/java/android/widget/Editor.java
113c004f396b8cfffa5ae875793cb9dd080dd09b 01-Jul-2016 Keisuke Kuroyanagi <ksk@google.com> Make Undo/Redo work properly with IME.

- Record undo operating even when composing text.
- Combine several edits in a batch edit into single undo
operation.
- Freeze undo state on commitCorrection.
- Freeze undo state on switching insert/delete to
delete/insert.
- Merge replace with delete or replace if they are for the
same region when composing text.
- Merge insertion with replace when they can be single
insertion when composing text.
- Perform drag and drop in batch edit.

Bug: 28588666

Change-Id: I37da124b3a05b322769e4d97fb0ce074aa4fc358
/frameworks/base/core/java/android/widget/Editor.java
c5a432028343cd4167e26aa24a8e489e3ba09fad 10-Jun-2016 Keisuke Kuroyanagi <ksk@google.com> Cleanup Editor.java.

- Make members that can be private private
- Remove unused member.
- Remove useless @hide.

Bug: 27558597
Change-Id: Ib5f39dbcabd85fb2a5df1c93a83d594085fd722a
/frameworks/base/core/java/android/widget/Editor.java
ecea7285acdf8bb5007e5c40dbb3a1eeebd5d766 25-May-2016 Abodunrinwa Toki <toki@google.com> Merge "Filter ACTION_PROCESS_TEXT entries by exported status and permission."
7c8305bcfeef206e8bd00f20077f8106bb66fa6b 25-May-2016 Seigo Nonaka <nona@google.com> Merge "Use original theme for SuggestsionsPopupWindow" into nyc-dev
5ba060b49ac45b9fec40d5da2afd5c9b2329b0f0 24-May-2016 Abodunrinwa Toki <toki@google.com> Filter ACTION_PROCESS_TEXT entries by exported status and permission.

Bug: 26638966
Change-Id: Ib06e914935fa5bde576555a0b7258d0faddaef13
/frameworks/base/core/java/android/widget/Editor.java
23cbe85610f780134cc77dd4a54732a22ed6e86e 18-May-2016 Yohei Yukawa <yukawa@google.com> Move LocaleList to avoid layering violation.

Since LocaleList needs to depend on android.os.Parcelable, we cannot let
that class belong to "android.util" package, which causes layering
violation.

Bug: 28819696
Change-Id: Ia8de2ee9df3dd0a42b1fe84574439519b680fe18
/frameworks/base/core/java/android/widget/Editor.java
e9f54bfde27327df4b1c820a97df00546cffe1e9 12-May-2016 Seigo Nonaka <nona@google.com> Use original theme for SuggestsionsPopupWindow

Some application set textColorPrimary as white, as the result the
suggestion window draws white text on white background.
To avoid this UX, always uses original theme for suggestions popup
window.

Bug: 28371168
Change-Id: I2ef41d162b63a7e277decc2065609a7d43590afe
/frameworks/base/core/java/android/widget/Editor.java
be1cd9f5ce6eb2bc37b15258c6ab22e2fc5592e1 04-May-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Show drag handles after finishing batch edit if needed." into nyc-dev
c6fad96b5926aa8861f49a7f4725dd7657322758 02-May-2016 Keisuke Kuroyanagi <ksk@google.com> Show drag handles after finishing batch edit if needed.

Drag handles are blocked from being shown if batch edit mode is active
when onPreDraw is called; however, IME can start and end batch edit
mode regardless of onPreDraw timing.
As a result, drag handles are sometimes not shown even if selection is
created and text action mode is started.

With this CL, drag handles are shown after finishing batch edit mode
if the handles were blocked from being shown in the above case.

Bug: 28366507
Change-Id: I7f099d0626bee70a63bb14bc75eefc2551a52d53
/frameworks/base/core/java/android/widget/Editor.java
e2a3b1edd938f248ca7f5e86995be951bdb3522e 27-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Adjust touch position for handles using window coordinate.

Touch position is adjusted in HandleView#onTouchEvent to snap to
ideal offset.
Previously, screen coordinate was used for input, but window
coordinate is used for the ideal offset. As a result, window adjusted touch
position will be adjusted to improper position and a handle being
dragged will get moved to unintended line.

Bug: 22308836

Change-Id: I4a5a3cc695a874c85aa341f06ffcba8b7f5e318c
/frameworks/base/core/java/android/widget/Editor.java
ab8913e364d296fdb62e6b2572d102063bff42cb 25-Apr-2016 Seigo Nonaka <nona@google.com> Merge "Fix unexpected truncation again." into nyc-dev
77972bbf2cc65a8ea961e3a1b84b4f631b87fdb8 20-Apr-2016 Seigo Nonaka <nona@google.com> Fix unexpected truncation again.

Unexpected truncation happens again after [1].
This is fixed by setting match_parent into the container LinearLayout.

For the unexpected truncation of Holo Theme is came from other but
related root cause. To calculate the window and container width,
need to add container padding in addition to the maximum width of
the text view. Otherwise the width of the container view will be
shrunk and the contents will be truncated. This only happens on
Holo Theme since the padding of the container is zero on Material
Theme.

I manually confirmed this CL doesn't revive following issues
- 28034210
- 27341560

[1]: I67886a752ef110d3433dddd6aa8447a9027f8e19
[2]: I69b258687b4bf5510d9b2c3e690c88106bf893f5

Bug: 28266493
Bug: 28281740
Change-Id: Ie6d274714ac08080dc22aeb8ecd8b7729cb634cd
/frameworks/base/core/java/android/widget/Editor.java
377c32845bffaf68d5751d8cdf6fd60b8b3f5dc3 20-Apr-2016 Vladislav Kaznacheev <kaznacheev@google.com> Rename DropPermissions to DragAndDropPermissions

Bug: 28296057
Change-Id: Ic95cb4ae9c351d903df78628e983dec2bacd0ad5
/frameworks/base/core/java/android/widget/Editor.java
64d151507601a6472f85c96d105e2555b7ad221f 07-Apr-2016 Seigo Nonaka <nona@google.com> Merge "Fix suggestion popup for RTL text on LTR layout." into nyc-dev
1d3efb6f64758e3b0c1e197e1bb259e14074e90b 07-Apr-2016 Seigo Nonaka <nona@google.com> Fix suggestion popup for RTL text on LTR layout.

By setting width to the ListView, the width of the containing text view
won't match with parent.

I locally verified this doesn't revive issue 27341560.

Bug: 28034210

Change-Id: I67886a752ef110d3433dddd6aa8447a9027f8e19
/frameworks/base/core/java/android/widget/Editor.java
03f1e026996a7665aefcda947ed97faae009735e 07-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Invalidate HandleView when handle position may have to be changed." into nyc-dev
a46be16612573ce083404e8731a96ec30eba3c48 05-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Selection handle behavior in scrolled TextView." into nyc-dev
a1a56ed09cb3977c580098113a221c7764d31a58 05-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Stop automatically creating action mode in FS extracted mode." into nyc-dev
b1b8865017b9e8b4d06cb0f9bda0f615468292c2 05-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Fix: Selection handle behavior in scrolled TextView.

When dragging a selection handle, it moves to strange position in
scrolled TextView because scroll position isn't took into account.
This issue was introduced by rebase mistaking in
I2a7e87ad08416f4bd01a5f6.

Bug: 28008281
Change-Id: I6217483fcc0b9a7e661f02a1f276114ddd5031a4
/frameworks/base/core/java/android/widget/Editor.java
c14e1270cff7f12614af49b7f3a94299f4064438 05-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Invalidate HandleView when handle position may have to be changed.

Bug: 26499944
Change-Id: Iba539eb50df1495be7d64174de38b1e88cff9348
/frameworks/base/core/java/android/widget/Editor.java
807c3a828b97e6d619f2dfdfde2f97efc873f6fe 05-Apr-2016 Yohei Yukawa <yukawa@google.com> Merge "Unhide View#dispatch{Start,Finish}TemporaryDetach()" into nyc-dev
0fd28c9f024e780fe8d63e8090286c6eae070b8b 04-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Stop automatically creating action mode in FS extracted mode.

With Ic025c109539c3b59638, selection action mode is always started
when there is a selection. This makes it impossible to extend
selection using selection mode.
This blocks creating action mode when full screen extracted mode is
started with selection, but it's same as MNC's behavior.

Bug: 27988877
Change-Id: I9614cb16373029189bfc098b6c1d353326e6b518
/frameworks/base/core/java/android/widget/Editor.java
183fd5071ea84aab82209c827fa0e4ff84a6b590 01-Apr-2016 Keisuke Kuroyanagi <ksk@google.com> Make hasTransientState be true only if user created selection is active.

Previously, hasTransientState returned true even when TextView has a
selection that hasn't been created by the user. This unnecessarily
prevents the TextView from being recycled.
This issue was introduced by Ib454b0fbbc2c2f8d198, which fixes that
setHasTransientState(true) is not always coupled with
setHasTransientState(false).

With this CL:
hasTransientState will get true when selection action mode is started.
hasTransientState will get false when selection is removed.
Note that hasTransientState intentionally continues to be true when
selection action mode is terminated with preserving selection.

Bug: 27913323
Change-Id: I960ddfd7221caeb676c23926af06a8a415dec288
/frameworks/base/core/java/android/widget/Editor.java
24df931e9e8c708fc605cd8e76a3ffd9ce5f6c77 01-Apr-2016 Yohei Yukawa <yukawa@google.com> Unhide View#dispatch{Start,Finish}TemporaryDetach()

In order to fix Bug 18920212, we have to track when a View enters
temporarily detached state and when it exits from that state. To do
that, ListView needs to use View#dispatchStartTemporaryDetach() instead
of directly calling View#onStartTemporaryDetach() because there is no
guarantee that existing applications have internally followed Call-Super
pattern.

With this CL, we are going to expose temporary detach state and its
dispatching methods as public APIs. Major changes are:
1. ListView's indirect children will start receiving temporary
dispatch callbacks. Previously only direct children have received
View#on{Start, Finish}TemporaryDetach() callbacks.
2. TextView can no longer assume that ListView never calls
View#View#dispatchStartTemporaryDetach() but directly call
View#onStartTemporaryDetach() instead. See the commit message
of [1] for details.

This also enables us to do the following fixes, which will be handled in
subsequent CLs.
A. ViewCompat support lib is finally able to rely on temporary
dispatch mechanism without reflection.
B. InputMethodManager is now able to ignore focus-in events from
temporarily detached Views. This will be done in the next CL [2].

[1]: a440b002aa59e1455bdfa2c5a1ca51c74bbc19ac
[2]: Ia79bbd8468f768d546354382b47b39dd31ef7bb5

Bug: 18920212
Bug: 27905921
Change-Id: If8f780f8b71754f7533a65097304113ae1f5cf12
/frameworks/base/core/java/android/widget/Editor.java
f0bb87b7c40efeeaee58d4c7b767961c9800463e 08-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Improve selection handle behavior for bidi text.

A point on a direction boundary can be mapped to two offset and
one offset on a direction boundary can be mapped to two points.
Previously, paragraph's primary direction is always used for deciding
offset and coordinates; thus, handle movement around a direction
boundary is often nonintuitive.

With this CL:
1. For selection end handle, direction of character at offset - 1 is
used for deciding handle shape and position.
2. For getting offset from coordinates, previous offset is used to
minimize the offset delta and primary .
3. For getting coordinates form offset, new logic chooses primary or
secondary horizontal coordinate depending on the current run
direction and paragraph direction.
4. When a handle passes another one because it passes a direction
boundary, new logic keeps the handle at the run boundary instead of
minimizing the selection.

Bug: 19199637
Bug: 21480356
Bug: 21649994


Change-Id: I2a7e87ad08416f4bd01a5f68e006240f77d9036b
/frameworks/base/core/java/android/widget/Editor.java
987ec6588b2279891179c9eff09fc25ec14430c4 18-Feb-2016 Siyamed Sinir <siyamed@google.com> Do not use hint text for Editor cursor positioning

When hint text is used for cursor positioning, the cursor may end up
in opposite direction when the locale and the hint text directions are
different. This CL uses the main text layout and discards the hint
layout while deciding on the position of those three views. The change
also includes fix for cursor and floating popup not displaying for
some cases after the change.

Bug: 22358087
Change-Id: I083d17b06273bc1d9b67656c5e12d4ff1231219c
/frameworks/base/core/java/android/widget/Editor.java
531d8d2faee92f8ea173440b74761bd91add2dd8 15-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Re-disable drag and drop in full screen extracted mode." into nyc-dev
126fdf108297bd66da85edbfe6d1af2cef64404d 15-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Stop automatically creating selection action mode." into nyc-dev
6e0860d9596314230bb9bcbe2e82467b0251ab9a 15-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Add a check for misspelled span change.

Previously, misspelled span is directly used in AddToDicitonary's
OnClickListener. It can crash because misspelled span can have been
updated since SuggestiosPopup is shown.
Also, AddToDictionary didn't work correctly in full screen extracted
mode. Use findEquivalentSuggestionSpan to resolve it.

Bug: 27557526
Change-Id: I51d713dbdd0c44ea2c553164b81b1123a2325aa1
/frameworks/base/core/java/android/widget/Editor.java
c477b5830af5f9e87069fae4ff87a2a6b3e275fb 15-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Stop automatically creating selection action mode.

With Ic025c109539c3b5963, selection action mode is created always
when selection is made. It causes distraction in some cases.
This CL fixes this issue. This CL stops starting selection action
mode when action mode is currently not active and not intended to
restart.

Bug: 27536744
Bug: 27551819
Change-Id: I94ee66864000934a21ef0d18c1d71429c67114fa
/frameworks/base/core/java/android/widget/Editor.java
fdfc93d77022f55ac702fbb796f74b6b717314c0 15-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Re-disable drag and drop in full screen extracted mode.

Drag and drop in full screen extracted mode was disabled by
Ifff4c30919bcb04f7d and re-enabled by I90d8e9f42f395b6b52.
However, related issues have not been fixed. This CL re-disables it.

Bug: 22440907
Change-Id: I753f69e170aa7e79478a5a4a3b89e4a7ef88c9e2
/frameworks/base/core/java/android/widget/Editor.java
f8e0da2624e1f5d99a493889e789e5f533b6fe0c 14-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Show SuggestionsPopup when there is a misspelled span.

Due to I20a86c1bdeb361686, SuggestionsPopup was not shown when there
is a suggestion span that has misspelled flag and doesn't has any
suggestions. This CL makes SuggestionHelper#getSuggestionInfo return
misspelled span info separately.

Bug: 27534987

Change-Id: Ib76588f9388287a04f1f6c9d9067ae439e493a95
/frameworks/base/core/java/android/widget/Editor.java
182f5fec539127f627dfc327e21d516fe1d6f85b 11-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Fix: Context menu can contain obsolete suggestions.

When there are not enough number of suggestions, previously used
suggestions was continue to be used. This fixes it and simplifies code
by always allocating SuggestionInfo array.

Bug: 27602619
Change-Id: I9378315b8c810f126f65fade96ce9f6ff5271957
/frameworks/base/core/java/android/widget/Editor.java
01ef02d7853fd2996eae3d139f02d190f3c174a2 11-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Reset mWordIteratorWithText when SpellChecker locale is changed." into nyc-dev
e0ac5ac6f0bcf58362af1ed723fa2a7d68ddd25d 09-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Reset mWordIteratorWithText when SpellChecker locale is changed.

Bug: 27537808
Change-Id: Ic55b543456cc859673b4c17cc5bf6e4b6da21e13
/frameworks/base/core/java/android/widget/Editor.java
fae4578311970afadca8ee28a47e1e11df00eedd 25-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Make drag&drop be atomic for undo/redo.

For undo/redo, drag&drop is recorded as a 2 operations, paste and
delete. This CL makes drag&drop be atomic operation to be properly
undoed/redoed.

Bug: 27268820
Change-Id: Ia38d663f046c2c65f348985934f5cfa054b0437e
/frameworks/base/core/java/android/widget/Editor.java
713be06f7aa70288b4bf811d7cf9c0220c09e9c0 01-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Fix: Selection is not correctly used for SuggestionsPopup.

This happens because suggestions are gathered based on the
selection after setting the cursor position to the middle
of the user selected range, which means 0-width selection
at that position. As a result, SuggestionsPopup was not
shown when any suggestion spans don't overlap middle point
of the selection.

Bug: 20709442
Change-Id: I3e1cb570f451b4ab14cf36f7da23dc2bd22f4ac8
/frameworks/base/core/java/android/widget/Editor.java
40fd5fac48836aa85d45f8b6c729baed3b625b13 08-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Call View#setHasTransientState in TextView#spanChange." into nyc-dev
af4caa60064d95aeffc7ab81095a269893f5f2a1 29-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Call View#setHasTransientState in TextView#spanChange.

setHasTransientState(true) and setHasTransientState(false) have to
be coupled, but they were not always coupled in TextView. e.g. when
we fire PROCESS_TEXT intent.
With this CL, TextView calls setHasTransientState() always when
selection is created or cleared to make sure 2 setHasTransientState
calls are always coupled.

Bug: 27409041
Change-Id: Ib454b0fbbc2c2f8d19818f154f415c4a5d7e2d7e
/frameworks/base/core/java/android/widget/Editor.java
15ae7c132866d401be4cdc88ac2d16a104d54b11 07-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Try to find equivalent SuggestionsSpan when it has been updated." into nyc-dev
bd4b217a289edca382b63f2bf5d1dd2017e9cf2e 04-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Refresh action mode always when selection is modified." into nyc-dev
c1cd17f91843decf8e8ced6546cbbd634798c525 04-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Supress SuggestionPopup for original field." into nyc-dev
f47976e7b4eacafdf7229bff6433b57825d241c3 01-Mar-2016 Seigo Nonaka <nona@google.com> Fix unexpected ellipsize for long suggestion text.

Unexpected ellipsize issue happens after
Ic8445022634e9130f9462e02bfb08d4877396ba3. By setting match_parent to
ListView, the ListView does not expand to fit the suggestion item.

Thus, explicitly setting the ListView width instead of setting
match_parent or wrap_content.

I manually verified this CL does not revive Issue 27341560 or
unexpected ellipsize for shorter text.

Bug: 27341560
Change-Id: I69b258687b4bf5510d9b2c3e690c88106bf893f5
/frameworks/base/core/java/android/widget/Editor.java
d319450307fcbd1f3dd99bf647c2c0281eb18e34 27-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Try to find equivalent SuggestionsSpan when it has been updated.

Suggestion pickup was canceled when SuggestionsSpan corresponding
to the suggestion cannot be found.
This was a problem when suggestion is selected in extracted mode.
Selection is cleared just before creating SuggestionsPopup.
The selection update is reported to the original EditText and it
will invoke TextView#setExtractedText of the extracted one.
In this method, SuggestionSpans are replaced with the new
SuggestionSpans that usually have the same contents as the old
SuggestionSpans.

This CL re-enables "Replace" item in extracted mode.

Bug: 22038802

Change-Id: I74bb813b110fb2f633b8578790d14039755f2d79
/frameworks/base/core/java/android/widget/Editor.java
bec9715905c9666db2f0081fcc71abaea5b82cb0 25-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Refresh action mode always when selection is modified.

Text action mode was not correctly updated when the selection
is modified by keyboard, app or IME.
With this CL, Editor#refreshTextActionMode is called always when
selection is updated. This method properly starts, stops or
invalidates text action mode if selection was modified outside of
cursor controllers.

Bug: 10527362
Bug: 22937774

Change-Id: Ic025c109539c3b59638226be4c4c9adf5ea0c38c
/frameworks/base/core/java/android/widget/Editor.java
4a696ac7ca0d9c6e1f837cbf83ef055e6e0c9bc2 23-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Supress SuggestionPopup for original field.

Previously, popup window or insertion handle could be shouwn at
a strange position as they could be shown for the original input
field in full screen extracted mode.
This CL stops showing SuggestionPopup for the original input field
in full screen extracted mode.

Bug: 22038802
Bug: 27313458
Change-Id: I585913328182d996f0201c53c028a1991f7b435b
/frameworks/base/core/java/android/widget/Editor.java
2f229ca27bf463bb76c7b2663b90057aa25ad883 18-Feb-2016 Seigo Nonaka <nona@google.com> Show selection handles at the correct position for view transformation

The selection handles are implemented based on PopupWindow hence it is
necessary to calculate the transformed location from the TextView's
local coordinates.

This CL only addresses the selection handle locations. Many
functionalities (e.g. selection handle moving direction, handle angle)
doesn't work on transformed view since many components are calculated
on the TextView's local coordinates.

Bug: 24902578
Change-Id: Iaa5fd2812969d097e3bf3219a818ffbc67aaef54
/frameworks/base/core/java/android/widget/Editor.java
5396d7eb13893bea01f43e17c9cbcbc994b85160 20-Feb-2016 Keisuke Kuroyanagi <ksk@google.com> Make drag shadow grapheme cluster aware.

[start, min(end, DRAG_SHADOW_MAX_TEXT_LENGTH)) was used to make drag
shadow. It ignores grapheme cluster, so unexpected shadow was created for
characters that contain multiple code units.

Bug: 23097276
Change-Id: Ic7d34ec02ea04a3f17337e4253babac87ef3b03c
/frameworks/base/core/java/android/widget/Editor.java
217c0f71df8c8de5bafe6ec5ad007b4a37326682 02-Feb-2016 Siyamed Sinir <siyamed@google.com> Clamp EditText cursor in the drawable boundaries.

EditText tried to draw outside of the padding boundaries because of a
cursor positioning issue in RTL. This CL removes that fix and instead
clamps the cursor position if cursor is outside of the clipped view
boundary.

Bug: 23397961
Change-Id: Id5f1fbe2a0f571100c89b21758fbb81b14d5da57
/frameworks/base/core/java/android/widget/Editor.java
60490d1ad401eb40fef33396e87e459de842b3e7 28-Jan-2016 Seigo Nonaka <nona@google.com> Revive drop shadow of SuggestionWindow.

The drop shadow of the SuggestionWindow was accidentally gone by
I579c0cc5b7f0dd337bff54af77828b8af25b13d2.

The reason of drop shadow disappearance is setting TRANSPARENT
background to the popup window.

To revive drop shadow of SuggestionWindow, follows the way of floating
toolbar.
- Create PopupWindow and make it transparent. (already exists)
- Wrap contents with RelativeLayout and set layout_margin and elevation
to drop the shadow into the transparent PopupWindow.

The changes in Editor is for keeping this margin during re-calculation
of the contents width and position.

Bug: 15347319

Change-Id: I5a9bcbe29400d6193eb0532a5e711a78a12383cd
/frameworks/base/core/java/android/widget/Editor.java
a74e729fa991064dd6eba8c49924b2a88efdc463 27-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Fix SecurityException in Editor.onDrop"
c14df8e73d093f839c4ea2585eade6ae6690d224 22-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Fix SecurityException in Editor.onDrop

When a content URI is dropped onto EditText, it tries making sense
of the contents, and in the process it accesses the content provider.
If this content provider requires a permission grant, SecurityException
occurs.

This fix does two things:
1. Editor.onDrop now requests DropPermissions and releases is
when it is done. This required the introduction of a new hidden method
DropPermissions.takeTransient, because the existing method required
access to an Activity instance.

2. If the drag originator neglected to allow the permission grant,
DropPermission request would not help, so a try/catch block
is added to Editor.onDrop to avoid breaking the recipient app.

Bug: 26694948
Change-Id: I714429a507e62c83a150d91fbcdee791bced3ad3
/frameworks/base/core/java/android/widget/Editor.java
dfea1a3336f1c738b24028fbb6d499b6b4a33292 26-Jan-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "TextView: start drag and drop when dragging selection by mouse."
d469f2122edf7662dbe8c9c39269064c0265b520 21-Jan-2016 Yohei Yukawa <yukawa@google.com> Clarify the purpose of EditorInfo#hintLocales.

During the initial attempt to support automatic language switching in
LatinIME, it turns out that the current EditorInfo#locales is difficult
to use and even confusing in some situations. Based on that
experience, this CL changes as follows:

* Rename EditorInfo#locales to EditorInfo#hintLocales:
This is mainly to avoid possible confusion when to set this. We want
to make it clear that having non-empty LocaleList there is a clear
signal that the user would switch to certain languages regardless of
the currently selected input method subtype.

* Make EditorInfo#hintLocales nullable:
Previously marshaling EditorInfor causes NPE when
EditorInfo#hintLocales is null. This CL relaxes such a restriction.

* Introduce TextView#{set, get}ImeHintLocales():
In the previous implementation [1], we just copied
TextView#getTextLocales() into EditorInfo. This is, however, does not
work well because it is no more or less than the default value. If
LatinIME supports automatic language switching, having the default
value in EditorInfo actually means that whenever you focus in a new
text field, the keyboard language is reset to the default locale.
In order to make this "hint" useful for IME developers, this "hint"
should be specified only when the application developers are confident
to do so.

[1]: I738ffaaf07091d8b980f8bfc6e16227fcb85a96a
0445fdf321e74044dc9f3719922fc8ff4923fdf4

Bug: 22859862
Change-Id: I0a730011874ea8d01e50624ed3f1ecd197d05f94
/frameworks/base/core/java/android/widget/Editor.java
3ed1b39f407fb7028115eb25d1adf44d5f5d95bb 19-Jan-2016 Seigo Nonaka <nona@google.com> Fix material style errors in suggestion popup window.

This CL addresses the material style errors from UX team.

- Corners should have a radius of 2dp.
To use the same way with floating toolbar, make the popup window transparent and
set floatingToolbarPopupBackgroundDrawable as the layout background. By this
change, TextSuggestionsPopupWindow style is no longer necessary, removed it.

- Background color for both sections should be #FFFFFF.
It turned out that the window default background is not white. By addressing
above item, this issue is fixed too.

- Divider line alpha=.12
This is fixed by using attr/listDivider instead of attr/dividerHorizontal.

- Remove 8dp padding below last suggestion
Removed 8dip paddingBottom from ListView.

Bug: 15347319

Change-Id: I579c0cc5b7f0dd337bff54af77828b8af25b13d2
/frameworks/base/core/java/android/widget/Editor.java
e876085b5bb530aa9214b72854341869feb45e69 21-Dec-2015 Keisuke Kuroyanagi <ksk@google.com> TextView: start drag and drop when dragging selection by mouse.

Previously, drag and drop is started only when a long click is detected.
With this CL, drag and drop is started on drag when a mouse is used.

Bug: 19544351
Change-Id: If81f9edc6fcff5f7a810b2165c058aa36fb6caad
/frameworks/base/core/java/android/widget/Editor.java
1cd8aac4ea660e78d872e47b7a6e4cd93ea10c4b 21-Dec-2015 Keisuke Kuroyanagi <ksk@google.com> TextView: Offer suggestions in context menu.

- Extract SuggestionInfo fetching code as SuggestionHelper and use it for
both context menu and existing suggestion popup.
- Show suggestion in "Replace..." sub menu.

Bug: 19397276

Change-Id: I20a86c1bdeb3616863b846237be55fa1a9b6ffdd
/frameworks/base/core/java/android/widget/Editor.java
d056081e502debdafe7e91d12400d19de2899a9a 17-Dec-2015 Keisuke Kuroyanagi <ksk@google.com> TextView: Open context menu on right click.

- Construct context menu in #onCreateContextMenu.
- Ignore non-primary buttons for selection.
- Don't open context menu on long click.

Bug: 19544351
Bug: 19397276
Bug: 24872170

Change-Id: I4690e1485682be4f9b504b8fb6af936b979f13b8
/frameworks/base/core/java/android/widget/Editor.java
ff375577952dad90bfa28073c67f97db68f106db 10-Dec-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix selection expansion detection logic."
155aecb18be803122977a3fe00259924818d2983 05-Nov-2015 Keisuke Kuroyanagi <ksk@google.com> Move double tap/triple click detection to Editor.

The logic was in TextView, but it's only for Editor.
Move it to Editor and have constants for the state.

Bug: 19544351
Change-Id: I391f66753aa5cbb26fbefcba5b4e7e3d917454e2
/frameworks/base/core/java/android/widget/Editor.java
4368d05af7ba8112c5b10ee0b97cbe88ddead32d 05-Nov-2015 Keisuke Kuroyanagi <ksk@google.com> Triple click to start paragraph based selection.

- Detect triple click in TextView#onTouchEvent.
- Select paragraph on triple click.
- Extend drag accelerator to support paragraph based
selection.

Bug: 19544351
Change-Id: I0a6752a0642a2c569b69a1fc2c0f49169a72844a
/frameworks/base/core/java/android/widget/Editor.java
b2ba0605efbcef5ced690f369dc53ede8e9b9dea 05-Nov-2015 Keisuke Kuroyanagi <ksk@google.com> Remove unneeded method HandleView#showAtLocation.

Now, the handles will be shown at the proper positions in
Editor#startSelectionActionMode. No need to call
HandleView#showAtLocation.

Change-Id: I5a7fb7bc4419a49234584bd06db5acc3d23168b8
/frameworks/base/core/java/android/widget/Editor.java
97af673e1f2e33a3cc48a2ab7816bbf082a2e9f4 05-Dec-2015 Keisuke Kuroyanagi <ksk@google.com> Move mouse selection handling logic to Editor.

- Remove mouse selection related logic from
ArrowKeyMovementMethod and Touch.
- Extend drag accelerator to support character based
selection by dragging and use it for mouse drag selection.
- Enable word based drag accelerator even if the clicked
position is not on a word.
- Disable y-coordinate adjustment for word based drag
accelerator when the user is using a mouse.

Bug: 19544351

Change-Id: I1b29a65be3d321ac472f8c5b70ab6fee4e895964
/frameworks/base/core/java/android/widget/Editor.java
26454141a8c489d84b7d486ad03869ff0f44dfdc 03-Dec-2015 Keisuke Kuroyanagi <ksk@google.com> Fix selection expansion detection logic.

The logic to detect vertical expansion is inverted on RTL
text. As a result, the selection handle cannot be moved
when it's dragged toward vertically expanding and
horizontally shrinking direction.

Bug: 25893288
Change-Id: I096595d287261b1287862c6ad27ae7f6f0a73262
/frameworks/base/core/java/android/widget/Editor.java
5d7657e99bb41d107f6bdbfe9a2430e97b740b9d 26-Nov-2015 Keisuke Kuroyanagi <ksk@google.com> Refactoring: SelectionHandleView.

Remove code duplication in SelectionStartHandleView and
SelectionEndHandleView by introducing SelectionHandleView.

Change-Id: I4486019714b13d184a72cf7ee60c346c4d8b5f5a
/frameworks/base/core/java/android/widget/Editor.java
d3c48931ea36f2d6b15dc86a1d025418ff629575 25-Nov-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Add selection handle dragging tests."
da79ee683d74f2ad7d29147a30f3da17dd0ea6e2 25-Nov-2015 Keisuke Kuroyanagi <ksk@google.com> Add selection handle dragging tests.

- Set an id for each HandleView to access the hanlde.
- Rename DragOnTextViewActions to DragAction to use it for
dragging handles.
- Introduce HandleCoordinates to provide proper coordinates
for handles.

More tests will be added in following CLs.

Bug: 25730231
Change-Id: I9276bf2f983983ec9aae0ddcf674d3dcee566892
/frameworks/base/core/java/android/widget/Editor.java
a71a244ec6c83e8627f10d3d04228ff8e7915c09 19-Jun-2015 Seigo Nonaka <nona@google.com> Make suggestion window style material.

To make suggestion window style Material, this CL does following things:
1. Introduce LinearLayout to be able to split suggestion item and menu.
Currently suggestion menus, "Add to Dictionary" and "Delete" buttons
are children of ListView. It is necessary to introduce LinearLayout
and move these two menus from ListView to this LinearLayout to have a
divider between suggestion items and menus.

2. Extract suggestion window layout definition from Java.
Currently almost all layout of suggestion popup window is done by
Editor.java. By extracting this logic from Java and move it to XML
files, it becomes easy to support both Holo and Material theme.

3. Introduce Material Design.
Suggestion window should respect the running application's theme since
suggestion window is shown as the part of the application.
This patch introduces Material themed suggestion window, and at the
same time, the old window is also kept as the Holo themed suggestion
window.

Bug: 15347319
Change-Id: Ieccea12db95c0a040b38680ae794b1cf6971736f
/frameworks/base/core/java/android/widget/Editor.java
a17d8766d481a636ad04a209d6404bdf2681d836 12-Nov-2015 Seigo Nonaka <nona@google.com> Merge "Clear suggestionSpan reference once popup window is closing."
e0ee5d9657e2a4492531b3b1595252c8cb745fe8 22-Oct-2015 Yoshiki Iguchi <yoshiki@google.com> Fix crash on calling removeSelection with showing selection handlers am: 9582e15196 am: 6649ee972b am: 6a5bb1534c
am: fb8343549a

* commit 'fb8343549a65bf65dab0fce6830b1b39ce62ddaa':
Fix crash on calling removeSelection with showing selection handlers
9582e151964be60457d4abd712857fb1e8a4586d 15-Oct-2015 Yoshiki Iguchi <yoshiki@google.com> Fix crash on calling removeSelection with showing selection handlers

A crash occured on updating after calling removeSelection with showing
selection handlers. This was because some selection-handler code didn't
consider the case the selection index was -1 (-1 means there is no selection).
This patch fixes this crash.

Bug: 23299977
Change-Id: I736d315e073f773aec597522203015205a8da42b
/frameworks/base/core/java/android/widget/Editor.java
fa7834379fe174729411165d5678dc9bca8dc9ca 21-Oct-2015 Andrei Stingaceanu <stg@google.com> Merge "Fix toolbar flickering in ExtractedMode when longpressing." into mnc-dr-dev am: ee4ab0a55b am: 24fc647e70 am: 509a74972a
am: fe622345b0

* commit 'fe622345b02656b9e049dde9936987f38984e97d':
Fix toolbar flickering in ExtractedMode when longpressing.
2aaeefec92ad70d9797b98caed4b554b982421c8 20-Oct-2015 Andrei Stingaceanu <stg@google.com> Fix toolbar flickering in ExtractedMode when longpressing.

onPreDraw starts an action mode in extract mode only which
does not consider the type of motion event and since extracted
mode never gets the focus event it never hides so it does not
need to show again.

Stop starting an action mode onPreDraw in extracted mode and
let the onTouchEvent handle starting the mode.

Also re-enabled dragging and dropping for ExtractedMode (most
of the issues were caused by starting the action mode
onPreDraw).

Bug: 25102276
Change-Id: I90d8e9f42f395b6b529e4d023ba6939e0dfb147f
/frameworks/base/core/java/android/widget/Editor.java
d0374c6b25c3ad8e638827bd8190553f80d9bf22 20-Oct-2015 John Reck <jreck@google.com> Fix a few view ctors to not call Looper.myLooper

Bug: 25116730
Change-Id: I4e394c281feef6f7987433298d66f2df11352416
/frameworks/base/core/java/android/widget/Editor.java
003cc3dec8e2a92e51086fbcd5ee1bb236efa701 16-Oct-2015 Chris Craik <ccraik@google.com> Rename DisplayListData to DisplayList

Change-Id: I25f6bb88ffdf9baf7e8e4e2a294aa8c9d2a4605b
/frameworks/base/core/java/android/widget/Editor.java
7afa67ca22a1cae7cadc8c5a1278122395a8b895 07-Oct-2015 Seigo Nonaka <nona@google.com> Clear suggestionSpan reference once popup window is closing.

Clear suggestionSpan reference since it is not necessary once the
suggestion window is closed.

suggestionSpan is kept for identifying the target text region in
onItemClick method.

This CL is a part of groundwork for Bug 15347319 and no user visible
change is intended with this CL.

Change-Id: Ie0edf215a1b90629e280ce09df4fd6f5d95fbb06
/frameworks/base/core/java/android/widget/Editor.java
f03d7994bdb2b2ff8cd0d727ebe622e77c0d54bd 30-Sep-2015 Seigo Nonaka <nona@google.com> Merge "Reduce the number of TextAppearanceSpan objects for highlighting."
a60160b30bf1b6aa27cdaf03cf9b6c245f338d84 19-Aug-2015 Seigo Nonaka <nona@google.com> Introduce simple SuggestionsPopupWindowTest.

This CL introduces very simple test case for SuggestionPopupWindow.
I'm going to introduce more test cases for complex scenario once this
approach is accepted, e.g. multiple suggestion span and misspelled flag.

This CL is a part of groundwork for Bug 15347319 and no user visible
change is intended with this CL.

Bug: 15347319
Change-Id: Idf166cbecb3e33be213e4104cf1afd827906f2ad
/frameworks/base/core/java/android/widget/Editor.java
bffbd3090a7f6a4206f13da91afaf69d9341acdf 19-Aug-2015 Seigo Nonaka <nona@google.com> Reduce the number of TextAppearanceSpan objects for highlighting.

This CL removes unnecessary TextAppearanceSpan objects creation.

The hightlight text appearance of all suggestion items in popup window
are the same, so it is not make much sense to create TextAppearanceSpan
objects for each suggestion item.

This CL is a part of groundwork for Bug 15347319 and no user visible
change is intended with this CL.

Bug: 15347319
Change-Id: Ibad2e9842a76611a34187a3c942bae4ff7ea355f
/frameworks/base/core/java/android/widget/Editor.java
9dffc27b60e7381a9ad578ef95e03c34beb4a974 17-Aug-2015 Yohei Yukawa <yukawa@google.com> Merge "Clear SuggestionsPopupWindow.mSpansLengths after it is used."
8cf6d865cfb3c05034f947b81de8ca09a92037a0 12-Aug-2015 Raph Levien <raph@google.com> am d202d15d: am cf2d44be: am 855a862f: am c98a786c: am beabcb92: Merge "Fix Insertion ActionMode not showing on RTL languages" into mnc-dev

* commit 'd202d15d9e4845537c4409c9880eb269b2b59129':
Fix Insertion ActionMode not showing on RTL languages
67af994c6cafde37483aac818c89a7482fa07ca4 12-Aug-2015 Yohei Yukawa <yukawa@google.com> Clear SuggestionsPopupWindow.mSpansLengths after it is used.

This is a no risk optimization that minimizes the time when
strong references to SuggestionSpan and Integer instances are
hold in SuggestionsPopupWindow.mSpansLengths.

SuggestionsPopupWindow.mSpansLengths are used while the given
SuggestionSpans array is being sorted. We don't need to keep
object references there after the sort is completed.

No user visible change is intended with this CL.

Change-Id: I7882d741c08d07ad7f905ad1d171c0d13da39397
/frameworks/base/core/java/android/widget/Editor.java
f95ed10d9da55c25013200fb35af63f0dac65cb4 12-Aug-2015 Clara Bayarri <clarabayarri@google.com> Fix Insertion ActionMode not showing on RTL languages

When long pressing on an empty Text field with the system language set
to RTL, the "paste" popup was not showing up.

The Floating Toolbar requires a content rect to determine where the
text is and place itself close to it. In the case of an empty field,
we create a "fake" content rect by taking the placement of the cursor
+1 pixel to the right. In RTL languages, this +1 causes the content
rect to be considered off the bounds of the view, as the cursor is
aligned to the right, and hence the Floating Toolbar is hidden.

After making the rect a 0 width rect, we ran into the issue that
it was considered out of bounds due to the calculation ignoring rects
that simply touch the edge of the view's bounds.

BUG: 22540083
Change-Id: I29c79b701f586970b2611178233eff082b802ec1
/frameworks/base/core/java/android/widget/Editor.java
62aeada1203f572d96e305853aea2c89aef20d49 08-Aug-2015 Seigo Nonaka <nona@google.com> Use TextUtils.substring instead of String.substring.

This is a small refactoring of using substring method.
Calling TextUtils.substring is more efficient than calling
toString and String.substring.

Change-Id: I0a740b2a2fdbfb6b6155c4e926e17889025082f5
/frameworks/base/core/java/android/widget/Editor.java
beb6e66817e084c8a1ac92ecaeb6f0c73d11cc49 28-Jul-2015 Mady Mellor <madym@google.com> Merge "Allow text selection handles to scroll horizontally" into mnc-dev
42390aab4601e671c929974c4233e61e08bb5b9c 24-Jul-2015 Mady Mellor <madym@google.com> Allow text selection handles to scroll horizontally

When selecting text and expanding the selection, the handles snap
to the end (or start) of words. The handles don't snap until the
user has moved halfway through the word.

In horizontally scrolling text views, where some of the text is
cut off, the user cannot be halfway through the word, this causes
the selection to get stuck unless the user scrolls the view and then
continues selecting.

This CL does two things:

1) Checks if the user is close to the edge of the view when the
view can scroll horizontally, and places the cursor at next offset
if available.

2) Moves the code to check if handles are crossing into own method
this should be done each time the cursor is placed and avoids the
need to duplicate the check throughout updatePosition code.

Bug: 22657879
Change-Id: Ic14cb0994cd202a897bf6532f3832bb93ed49bfb
/frameworks/base/core/java/android/widget/Editor.java
45794910031ce2a0e2df3d1694783da7e3c4352b 24-Jul-2015 Andrei Stingaceanu <stg@google.com> Merge "Disallow dragging text in extracted mode" into mnc-dev
b50045a5196696e707e178813c3a61ea4f3c54f7 15-Jul-2015 Andrei Stingaceanu <stg@google.com> Disallow dragging text in extracted mode

Temporary remove this ability.

Bug: 22440907
Change-Id: Ifff4c30919bcb04f7d0ab78f5e9c481381ac7a05
/frameworks/base/core/java/android/widget/Editor.java
fd3eff27bdb2592cf398d11c5f2f03ba5170f962 06-Jul-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Wrong suggestion popup position in extract mode.

Replace text was handled by the original EditText; thus, we
couldn't correctly decide popup window position.
Also, changing selection range replaces entire text of the
extracted EditText. As a result, text cannot be replaced
with the selected item when there is a selection.

This change is a workaround for this issue. This quits
offering "Replace" for selection in extract mode.

Bug: 22038802
Change-Id: I052b027cfd10eeb289f77f4c6b228acf58fea636
/frameworks/base/core/java/android/widget/Editor.java
1c277ca8cd699b15e631342775d996404a75e660 11-Jul-2015 Mady Mellor <madym@google.com> Merge "Fix: line slop shouldn't always increase / decrease by one line" into mnc-dev
a6a0f7829f070ea9f9a6a7c843e53f205630bfc2 11-Jul-2015 Mady Mellor <madym@google.com> Fix line slop issue at end of line for Thai & CJK

Previously touch slop for line movement was based on the line position
of the HandleView, not the previous line touched.

Thai and CJK languages don't have a space at the end of a line so
the handle jumps to the beginning of the next line. This meant that
when calculating the touch slop it'd be from the incorrect line.

This CL tracks the previous line touched and uses that instead to
calculate touch slop and applies it to the selection and insertion
handles.

Note this is *not* added to the drag accelerator because
it does not have the problem of the handle jumping to the next line
since it has no handles.

Bug: 21925162
Change-Id: If4b231725c06489ec780a5b5a308ceffee804c20
/frameworks/base/core/java/android/widget/Editor.java
80679071abb516bcc6470dfcc68ac4d5bc16ff96 10-Jul-2015 Mady Mellor <madym@google.com> Fix: line slop shouldn't always increase / decrease by one line

Touch slop is from the bottom (or top) of the line + line height / 2.
It only makes sense to apply touch slop if the user is within a line
from the previous line. Additionally, not doing this can cause some
undesirable behavior if the user moves very quickly and the selection
catches up with a weird line by line selection increase, potentially
even having the selection be stalled until a next move event.

This CL alters the logic so that if the user isn't within one line
of the previous selection, it'll just use whatever line the user is
currently on.

Bug: 22385003
Change-Id: I4f37988893868e5e2b7925314fe824c3da9c1b97
/frameworks/base/core/java/android/widget/Editor.java
ff66ca5038acc286a99be6001d1cde7606db8699 08-Jul-2015 Mady Mellor <madym@google.com> Use hint text to position handle / floating tool bar popups

In situations where the hint text does not match the direction of
the TextView's primary selection, when you copy text, and long press
in that EditText to paste, the cursor would use the direction of the
hint text to be placed, whereas the handle and floating tool bar
used the TextView's direction to be placed so they wouldn't match.

This CL updates the handle view and floating tool bars to use the
hint text direction when appropriate.

Bug: 21480429
Change-Id: I8090a5b2738c035522c307535ffa165ca024e811
/frameworks/base/core/java/android/widget/Editor.java
bc687f96c74bd164f5d030cebe80d38274ca336c 07-Jul-2015 Andrei Stingaceanu <stg@google.com> Merge "Drag handles persist after lost focus in extracted mode" into mnc-dev
8fbe1a0cfc0354067c10e5e788519c19f4b39349 02-Jul-2015 Abodunrinwa Toki <toki@google.com> Merge "Add accessibility actions for the PROCESS_TEXT feature." into mnc-dev
99d3bbdcbff6a37ef21f4d42845ccff0cbdf1e4c 30-Jun-2015 Andrei Stingaceanu <stg@google.com> Drag handles persist after lost focus in extracted mode

If extracted mode is to be started and we already had a
selection made do not start the action mode but only the
selection. Non-extracted mode keeps the current behavior.

Bug: 22100966
Change-Id: Iad9a95c28474a68dc4fbc7032cbab1dc6e234d45
/frameworks/base/core/java/android/widget/Editor.java
4712b8ef9e6e24e455f48e4bc74019a6b6de5656 01-Jul-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Selection handles can remain on home screen.

This happened as selection handles are shown even when
selection action mode is not active.

Bug: 22188927
Change-Id: Ifd88b91d98cc6f9b0c578e782144b6eee1bdeec9
/frameworks/base/core/java/android/widget/Editor.java
deaf0dbe49fefc20bd0ce55a958205667bd88d3f 27-Jun-2015 Abodunrinwa Toki <toki@google.com> Add accessibility actions for the PROCESS_TEXT feature.

Also refactored the code so that PROCESS_TEXT-related code is shared
by menu item actions and accessibility actions.

Bug: 21890235
Change-Id: Ie932fa9bb5cd3d8bd29f8c82695f3c7490693cbd
/frameworks/base/core/java/android/widget/Editor.java
a526683d123abdd4c2a54f8a4482c4a71a35b301 26-Jun-2015 Mady Mellor <madym@google.com> Text selection: fix snapping to words when words break across lines

Some languages do break words across lines and words can break between
lines with hyphenation. If a word has only one character on the current
line with the rest of the characters on the next line, the user would
be unable to move the cursor to the end of the word.

Rather than judging if a user is far enough into a word by using the
full word length, this CL amends the logic to only use the characters
that are on the current line of the word, if the user is far enough into
these characters the handle jumps to the next line to the end of the
word position.

Bug: 21400624
Change-Id: I8b96eb83bea08d9794d1e9db74066bcc3e168ac0
/frameworks/base/core/java/android/widget/Editor.java
29f37e15975dec1fbb519398e5e80b16d61a5d0c 26-Jun-2015 Mady Mellor <madym@google.com> Merge "Text selection: When user reaches midpoint jump to end of word" into mnc-dev
10f925173630c89239e2f42deb6cb042e9300d39 26-Jun-2015 Mady Mellor <madym@google.com> Merge "Text selection: Fix word boundaries for languages without spaces" into mnc-dev
a2861454aa287e4986e0241f5158324a4c8ef15c 25-Jun-2015 Mady Mellor <madym@google.com> Fix: Don't display the drag handles when focus is lost

The text selection handles should be hidden / shown when the window
loses / regains focus.

Additionally renames method to make more sense.

Bug: 22062480
Change-Id: I6e160234cf112ee285367637e2f1c14defd82e89
/frameworks/base/core/java/android/widget/Editor.java
838307275214cb9b51dff15a401013420aa4376a 19-Jun-2015 Andrei Stingaceanu <stg@google.com> Floating toolbar shown after rotation in extract mode

Do not start the floating toolbar action mode and
do not show the handles if after a rotation when the
extract mode will be started. This fixes an issue where
onTouch after rotate duplicates the handles in extracted
mode.

Note: if NO_EXTRACT_UI flag is set then the toolbar,
selection and handles preserve their state.

Bug: 21960251
Change-Id: I1c7881bf2f40d8877fa0ce26e27a29398edc1296
/frameworks/base/core/java/android/widget/Editor.java
e264ac392a886788ebfd1069e1d366e2b1edef72 23-Jun-2015 Mady Mellor <madym@google.com> Text selection: Fix word boundaries for languages without spaces

WordIterator's getEnd/getBeginning methods does not support the needs
for word boundary detection in text selection. Consider the words
AABB (where AA and BB are each words). If getEnd is given the offset
on the boundary between AA and BB, it would return that offset since
it is the end of AA. For text selection we always want the "next end"
if available.

This CL adds two methods to word iterator that return the next end
and previous beginning.

This CL also alters the code in Start/EndHandle to use the x value
and current / prev line positions to determine if the user is
expanding or contracting the selection.

Bug: 21305292
Change-Id: I6e7a83e53e245d71e43d78f1957f844f2ed1cdfb
/frameworks/base/core/java/android/widget/Editor.java
b1891b3fc9d07ef766978f0a39c382b217a529e0 19-Jun-2015 Andrei Stingaceanu <stg@google.com> Fix selection by double tap in Extracted mode

Select with double tap in extracted mode has suffered
a regression recently: flickers and it does not correctly
select. Found this fix after a lot of trials.

Bug: 20128047
Change-Id: I1bbe8c11982d37e5409bac2b648a31b0ca1f0bbc
/frameworks/base/core/java/android/widget/Editor.java
8fc9bed98579ed2696a89cd43472ee414e74be6b 19-Jun-2015 Mady Mellor <madym@google.com> Text selection: When user reaches midpoint jump to end of word

Adjusts the point at which the handles jump to the end of the word.
Previously it was 1 or 2 characters depending on word length, now it
will use the midpoint of the word.

Bug: 21131483
Change-Id: I0d3c1bf4672ae27781318cf2563051cc66bb9f98
/frameworks/base/core/java/android/widget/Editor.java
03709c780ae26a2b27d098782364ba722e711564 18-Jun-2015 Mady Mellor <madym@google.com> Merge "Text selection: update touch delta when moving towards handles" into mnc-dev
fe67c1ec6d0f08542fad2fc1a3fb858d99d40341 18-Jun-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Drag handle jumps between bidi boundaries." into mnc-dev
5279d11f258a01cfdf0a16d965b5e4cd7566b8ac 17-Jun-2015 Mady Mellor <madym@google.com> Merge "Drag to select text: add some slop for moving between lines" into mnc-dev
ee3821e565496bd3dc470bb3f833a875b3650a20 05-Jun-2015 Mady Mellor <madym@google.com> Insertion cursor: add some slop for moving between lines

Applying same method to insertion cursor as the text selection drag
handles to improve moving along lines.

Basically adds some slop above / below the current line and only
allows you to change lines if you move outside of that.

Bug: 21306433
Change-Id: I6c7f3a496fbd1ea66936832f96325736cea872aa
/frameworks/base/core/java/android/widget/Editor.java
f9f8aebdc697e6ea1deff1aa82d0cec0e1ebacef 17-Jun-2015 Mady Mellor <madym@google.com> Drag to select text: add some slop for moving between lines

It's pretty easy to accidentally move to a different line when
selecting text. This CL makes an adjustment so that if the user
is on a line, they must move above the top of it + slop to move
up a line, and they must move below the bottom of it + slop to move
down a line. This applies the changes to the drag accelerator.

This CL also makes an adjustment to not apply the finger offset
to the drag accelerator until the user has moved lines, this was
causing an issue where it would immediately include the above line
when initiating the selection.

Bug: 21306433
Bug: 21303943
Change-Id: Id240136493f62524fe6445d8bd65479084fe8126
/frameworks/base/core/java/android/widget/Editor.java
cc65c37f108d916b931af2432337704696f175f0 17-Jun-2015 Mady Mellor <madym@google.com> Text selection: add some slop for moving between lines

It's pretty easy to accidentally move to a different line when
selecting text. This CL makes an adjustment so that if the user
is on a line, they must move above the top of it + slop to move
up a line, and they must move below the bottom of it + slop to move
down a line.

This CL also makes a small modification to check if the layout is
null and return early which simplifies some of the following code.

Bug: 21306433
Change-Id: I4a854e644faafaf1e159201ae1f2838862f16b25
/frameworks/base/core/java/android/widget/Editor.java
f444b5c3ae46f8790c8f2a8481fb688b00a42d3b 16-Jun-2015 Abodunrinwa Toki <toki@google.com> Fix floating toolbar flickers.

-Flicker was a side effect the delay in hiding the toolbar when
there is a down press on a TextView handle. The timing clashed
with the time it takes for the FloatingActionMode to release a
hide lock on a changing content rect. Extra flickers also happened
if the ActionMode happened to be invalidated at about the same time.
Since there was no longer a hide lock, the toolbar refreshed, getting
rid of the "Select all" menu item.
FIX. I believe we don't need the delayed hide on down press on a
TextView handle. I've removed this.

-I've also updated FloatingActionMode to ensure that hide locks
overlap one another if necessary. The toolbar can only be visible if
all locks are off.

Bug: 21793687
Change-Id: I290ea45ab17d5862b453cb319afb4c8ffe084cd0
/frameworks/base/core/java/android/widget/Editor.java
f4e347d6aec7f1ff09c23aea8f3378d0b390eac6 11-Jun-2015 Keisuke Kuroyanagi <ksk@google.com> Reset drag accelerator state in Editor#sendOnTextChanged.

This fixes a crash that happened because mStartOffset
could point to an invalid offset after changing the text.

Bug: 21178876
Change-Id: I2fbb5ea3d6b8c5a97ca7248116b58ead673a8b0a
/frameworks/base/core/java/android/widget/Editor.java
89124000c618f24b948505cd79f654aacbdff957 10-Jun-2015 Clara Bayarri <clarabayarri@google.com> Merge "Fix Floating tool bar flickers after long pressing on empty region." into mnc-dev
136a462c8bb35bdd21258f03f3f9adca06990701 10-Jun-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Revert "Fix: Crash when modifying text while using drag accelerator."" into mnc-dev
eac4556e55ad6dda26a1c0172947c5df2a771ad7 10-Jun-2015 Keisuke Kuroyanagi <ksk@google.com> Revert "Fix: Crash when modifying text while using drag accelerator."

This reverts commit 259292ff3de5b9a64e8e3bb4a62a533aef4125b7.

This introduced another bug (Bug: 21687602) and this is no longer useful
for the original one (Bug: 21178876).


Change-Id: I59acc161e7d8cba633718a3d17292e68740ef79e
/frameworks/base/core/java/android/widget/Editor.java
b71ddddfd3d950a723fc8a3e996e6c32f214fad7 05-Jun-2015 Clara Bayarri <clarabayarri@google.com> Fix Floating tool bar flickers after long pressing on empty region.

Bug: 21452427
Change-Id: Icc70b85279fde1aa9d5c10bd89bb886797a49235
/frameworks/base/core/java/android/widget/Editor.java
43fd2f426a0c9f562a7b3809718563086a0f79ff 08-Jun-2015 Mady Mellor <madym@google.com> Text selection: update touch delta when moving towards handles

When the text selection drag handles jump to the end / start of a
word, the delta between the current touch position and where the
handle jumps to is tracked. Previously this value was not updated
if the handle jumped and then the finger moved towards the handle.

This CL adjusts the logic to update the delta in this situation.

Bug: 21131483
Change-Id: I331f53191103e1a3fc08e34b5df5cd6cbc177af6
/frameworks/base/core/java/android/widget/Editor.java
7184c8aaf1c1bae4f6b1e31125342c6d023e1ec5 05-Jun-2015 Clara Bayarri <clarabayarri@google.com> Remove insertion action mode runnable on selection start

This was in a previous change and accidentally got reverted on a rebase.
When going from an Insertion to a Selection/Drag Mode we want to make
sure no insertion modes are started by pending requests.

Previous change with accidental rebase:
I91bcd0d9c3e68d9c736698fe0bec010b4c9f5cf3

Bug: 21647271
Change-Id: I32c152494d236b693a489ea97448904163c9620a
/frameworks/base/core/java/android/widget/Editor.java
7d3b8833df5857f5cc70d6c101abe7501fa22b49 08-Jun-2015 Abodunrinwa Toki <toki@google.com> Merge "Fix ActionMode.snooze API" into mnc-dev
3e85c1ed0cce70164dfe6f8ffa4bf3695c4ce0ba 05-Jun-2015 Clara Bayarri <clarabayarri@google.com> Merge "Fix Select All should not be shown when everything is already selected" into mnc-dev
9e211282d3ee54c9840947951593554c3bd5a77c 05-Jun-2015 Abodunrinwa Toki <toki@google.com> Fix ActionMode.snooze API

Bug: 21572677
Change-Id: If9fdb8ace3773b983418b0148082712644fd1fa5
/frameworks/base/core/java/android/widget/Editor.java
01243ac57e7be3c409c1238eff352c0e8acbe9ef 03-Jun-2015 Clara Bayarri <clarabayarri@google.com> Fix Toolbar is not refreshed after Select All

Bug: 21361248
Change-Id: Iab913bd610c208e5881d3d0eb5574efdf9eb5d92
/frameworks/base/core/java/android/widget/Editor.java
3b69fd81df89896cdd6c2903c79da744bd1eabfd 03-Jun-2015 Clara Bayarri <clarabayarri@google.com> Fix Select All should not be shown when everything is already selected

Condition Select All on whether the full text is already selected,
and add/remove this item when needed on ActionMode invalidation.

Bug: 21608943
Change-Id: Iad5f8a77a03b98024f7dcf355b2f7f0d1338b94a
/frameworks/base/core/java/android/widget/Editor.java
c1f28bc97d2f88f839269ce701c7fe68c4f1615a 05-Jun-2015 Clara Bayarri <clarabayarri@google.com> Merge "Separate the SelectionActionMode into Insertion and Selection." into mnc-dev
7938cdbf985f88017f994e69cfe517970cb65b4d 02-Jun-2015 Clara Bayarri <clarabayarri@google.com> Separate the SelectionActionMode into Insertion and Selection.

When we got rid of the paste popup, we merged it into the Selection
ActionMode and moved all its invocations to the ActionMode. Some apps
actually want the paste popup without the Selection ActionMode, hence
separating them again allows them to cancel the one they want.

Bug: 21571422
Change-Id: I91bcd0d9c3e68d9c736698fe0bec010b4c9f5cf3
/frameworks/base/core/java/android/widget/Editor.java
4186b1d4d833544f007009e437eecebb037677f2 04-Jun-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Stop offering "Replace..." when there are no suggestions." into mnc-dev
eb665337162416c4754a9f11005004a8d936775e 04-Jun-2015 Clara Bayarri <clarabayarri@google.com> Merge "Fix Floating tool bar covers text during long press + drag" into mnc-dev
95753e2f4b423bd914d6087c1847fc851080cae9 03-Jun-2015 Mady Mellor <madym@google.com> Merge "Ensure to reset state of selecting by word/char for new selections" into mnc-dev
dfac443516118631091124dfba271194fcaf5076 15-May-2015 Clara Bayarri <clarabayarri@google.com> Fix Floating tool bar covers text during long press + drag

The existing implementation started the ActionMode even when knowing
a drag would start. Moved this logic to once the drag is complete,
to avoid the toolbar popping up while the user is still dragging.

Since the existing method selected the initial word when no other
selection existed, refactored that logic so it is also performed at
the start of the drag. Otherwise, the user sees no selection until
he drags over 2 or more words.

Bug: 21144634

Change-Id: I97cf89b1c4c3ebdbbd1af50bd1ce5aa4af72164b
/frameworks/base/core/java/android/widget/Editor.java
36d5a7b22500ec8c3d754e9caf1728dda168ad92 22-May-2015 Mady Mellor <madym@google.com> Ensure to reset state of selecting by word/char for new selections

Previously this value was only updated when interacting with the
selection handles, so if you started a selection, entered by-char mode,
and then started another selection you would still be in by-char mode.
This resulted in incorrect behavior.

This CL alters the logic to update the handle state whenever the cursor
is placed which will included the initial long press to select a word.

Bug: 21301589
Change-Id: I15dbe6f2b76c7edd8ea4b3ba53e7107c47bc48fa
/frameworks/base/core/java/android/widget/Editor.java
a447937dd38003f09a27c578ec2899777348ca7f 21-May-2015 Clara Bayarri <clarabayarri@google.com> Fix TextView ActionMode overflow finishes the ActionMode

stopSelectionActionMode() was called within hideCursors, and this
gets called in many scenarios. One of them is onWindowFocusChanged,
which is triggered when the user clicks the overflow icon in the
action bar. Removed the action mode call from this use case.

Bug: 21267270
Change-Id: I1cd359e87de67141627e25d2ec520fc91303a48d
/frameworks/base/core/java/android/widget/Editor.java
aee243b825d57ba3e1b7893e86f5bdad74796c6b 18-May-2015 Clara Bayarri <clarabayarri@google.com> Make Text Selection Action Mode secondary items IF_ROOM

The fact that they were all ALWAYS caused the ActionBar version
of the ActionMode to show truncated text to try and fit them all.

In an ideal case we will always have a Floating ActionMode, but
the client can explicitely change this and hence we should fallback
gracefully.

Additionally, remove the SHOW_AS_ACTION_WITH_TEXT flags as we
removed the icons from the items anyway.

Bug: 21264711
Change-Id: I13a9aafd0fc6f6642d3a4a3399f71e739a1dce8d
/frameworks/base/core/java/android/widget/Editor.java
373816ef1f7ab9954889ed02a6b2b39fe4aa4f44 28-May-2015 Andrei Stingaceanu <stg@google.com> Stop showing both the floating toolbar and suggestions

The selection mode without selection (PASTE|SELECT_ALL)
pops up along the suggestion popup if we tap on a word
within 15sec of the most recent cut/copy/textChanged
operation. Fix this by making suggestion popup take
precedence.

Also moved the invalidation of the text changed time
into the handleTextChanged() which fixes the selection
mode starting once after the text has changed.

NOTE: Subsequent clicks on non-suggestion spans will
still trigger the selection mode without selection if
within the defined timeframe.

Bug: 20443325
Change-Id: If2726e2c965e77e82ef7b847cf352d4426205bdc
/frameworks/base/core/java/android/widget/Editor.java
dbe2c293e113b35b43abdb5733311782f9afe11c 27-May-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Drag handle jumps between bidi boundaries.

mHotspotX and mHorizontalGravity was updated even when the
handle is dragging. As a result, updatePosition() can be
called with the adjusted coordinate for the updated text
direction.

Bug: 21131463
Change-Id: Ie3c2215a0d978db655d55693ee484f04ce5b35fa
/frameworks/base/core/java/android/widget/Editor.java
7e4fbe03899a2c278ffdf1e36fb4a16dc8cc204c 22-May-2015 Keisuke Kuroyanagi <ksk@google.com> Stop offering "Replace..." when there are no suggestions.

Suggestions in a suggestion span can be empty. When all
suggestion spans don't have any suggestions, we shouldn't
offer to show suggestions.

Bug: 21046505
Change-Id: I48a1e19b176769743ad14c5109e4cb3fc9416393
/frameworks/base/core/java/android/widget/Editor.java
1733bd3defde7818940d72dac95bb18fb8d70b22 22-May-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Insertion handle can be moved just by tapping." into mnc-dev
27a63612343a3b4afb4deca6a992615855510963 21-May-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Crash when modifying text while using drag accelerator." into mnc-dev
b300d31bf1cb138f0a7c4c484459cc6a2ce2f69c 20-May-2015 Mady Mellor <madym@google.com> Merge "Text selection: fix some issues with drag accelerator" into mnc-dev
3244a6633680cf98fa7a55534e3ebf2dea7389ee 20-May-2015 Mady Mellor <madym@google.com> Merge "Fix selection handles on older API versions" into mnc-dev
7a93644d5e2a783207b547713b861e55b21324c4 20-May-2015 Mady Mellor <madym@google.com> Text selection: fix some issues with drag accelerator

Couple of overlapping issues that this CL fixes. The major change is to
offset the selection vertically this is similar to how the handles work
already (i.e. touch target is below what's being selected), and still
allows the user to see the selection start / end without covering it with
their finger.

This change fixes multiple issues:
1) Previously to ensure the finger wasn't covering the selection a
preceding or following offset was taken, this made it difficult to
select certain words and it made text on the edge of the screen hard
to select (b/21098345 and b/19965619)
2) The use of preceding and following on the word iterator was not correct
allowing grapheme clusters to be split, now the offset is calculated
with getWordStart/End which respect grapheme clusters (b/21045116)

Bug: 21098345
Bug: 21045116
Bug: 19965619
Change-Id: Id8392426cce20ad0ff47a4279c92f6ed1b0ad30e
/frameworks/base/core/java/android/widget/Editor.java
8c44e74524a43ad7cb41b1641bb2dac75cf9c7e8 20-May-2015 Andrei Stingaceanu <stg@google.com> Merge "Landscape extracted mode - floating toolbar interference" into mnc-dev
975a8d0f4d6b5c2ec954c4db11d95de1a553227e 19-May-2015 Andrei Stingaceanu <stg@google.com> Landscape extracted mode - floating toolbar interference

In landscape do not allow starting selection modes if the
extracted mode has not yet started. Also remove the single
tap selection delayed runnable.

This allows for a smooth transition (as in no floating
toolbar artifacts) into extracted mode. Also fixes
(more as in hides) the double selections.

Bug: 20930071
Change-Id: Idb9c375dc25777761b11ca17ccfd9f5eedc642b4
/frameworks/base/core/java/android/widget/Editor.java
fd3a3a1163c5096821cef351309fcdd9a4f48002 05-May-2015 Abodunrinwa Toki <toki@google.com> Hide floating toolbar when user interacts with screen.

- Adds an ActionMode.snooze(int) API.
- Clients call this to hide the floating toolbar on DOWN touch event.
- This is called repeatedly as a snooze timeout will re-show the
toolbar.
- ActionMode.snooze(0) will "wake" the toolbar, reshowing it.
- Clients call this to re-show the toolbar on UP touch event.
- This CL also adds code to hide the toolbar when the "content rect"
is changing.

Bug: 20148125
Change-Id: If5a9a15f72c73cad8ca01a4328a58570b3e29f66
/frameworks/base/core/java/android/widget/Editor.java
bc89a5ce34c676b6baa37253589989b772010f35 18-May-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Insertion handle can be moved just by tapping.

Horizontal poistion is passed to updatePosition() without
adding getHorizontalOffset(). The position is wrong for the
insertion handle; thus, the handle is moved just by tapping
on it.

Bug: 20923263
Change-Id: Ie867ebd9e6b682057b73373fefb7b2baf45caef9
/frameworks/base/core/java/android/widget/Editor.java
259292ff3de5b9a64e8e3bb4a62a533aef4125b7 15-May-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Crash when modifying text while using drag accelerator.

Drag accelerator state was not cleared when the text was
modified; thus, mStartOffset could point to an invalid offset.

Bug: 21178876
Change-Id: Ic9b47375bab321fbc573e8a81e3fadf60309da78
/frameworks/base/core/java/android/widget/Editor.java
e20b22feb32d82a50a933141ecb8d03457a66f11 18-May-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: Drag handle isn't updated after crossing bidi boundary." into mnc-dev
33f81ac108bd4d0ec709107e5ba1748221fc39e8 14-May-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Drag handle isn't updated after crossing bidi boundary.

mDrawable is updated, but it was not re-drawn properly.
postInvalidate() should be called when the drawable is
updated.

Bug: 21141841
Change-Id: Icb3ddf18d05285ffa8758a9be256482d594ab8ed
/frameworks/base/core/java/android/widget/Editor.java
709386f501c5a496c8bbfa0336af03f3e09e5484 14-May-2015 Mady Mellor <madym@google.com> Fix selection handles on older API versions

The new assets didn't have the same padding on the edges as assets on older
versions. The adjustments to the getHotspotX code for the new assets broke
how the handles on older API versions were placed.

This CL updates the assets to have the same padding (i.e. handleWidth / 2
on each side of the handle and changes the getHotspotX methods for this.

Bug: 20829391
Change-Id: If7e466d200ef7757831bc763c3c3ce4a8bbf63fc
/frameworks/base/core/java/android/widget/Editor.java
21417a0d50891e2d9d07c9c68f09da4931f053ff 15-May-2015 Mady Mellor <madym@google.com> Merge "Text selection: Fix moving by character when should move by word" into mnc-dev
c25d6c22bbb2b8d6efbe4b4ab5252ca8f266889f 15-May-2015 Mady Mellor <madym@google.com> Merge "Fix difficulty grabbing handles for small selections" into mnc-dev
81fa3e89668c498d5314a64dfff71d0553f8c5f7 14-May-2015 Mady Mellor <madym@google.com> Text selection: Fix moving by character when should move by word

The code to restrict handles from crossing did not respect moving by
word or by character. This CL checks the offset to see if it's crossing,
and if it is, it restricts it to the line of the other handle and proceeds
with determining the "actual" offset based on the activated
mode by word / by char).

There is also still a check to ensure that one character is selected
after the mode as adjusted the offset.

Bug: 21114827
Change-Id: Idac699ef2eb5d313e77d44b5064c03ff84e0fb88
/frameworks/base/core/java/android/widget/Editor.java
fae270c108f774d48f5b8f122d46c533ad4ef2f5 29-Apr-2015 Andrei Stingaceanu <stg@google.com> Editor: enable double tap for selection after cut/copy.

* detect double tap in the TextView and pass it to Editor.
* add a timer (with getDoubleTapTimeout) for executing the
single tap job in Editor.
* if double tap is detected then cancel the single tap job.

This way one tap shows the toolbar if within the timeframe
and two taps select the word and show the toolbar.

Bug: 20442587
Change-Id: I0a117939c896fcb13669346e30c9c48d319576dd
/frameworks/base/core/java/android/widget/Editor.java
35c550c854a99ae890d7cffcee4491e68c71a09d 07-May-2015 Andrei Stingaceanu <stg@google.com> Fix: text selection bubbles move along with the text

Always hide the selection cursor when showing the
insertion cursor.

Bug: 19857679
Change-Id: I549552fa5026e60f94900364b8194217e0de4b4a
/frameworks/base/core/java/android/widget/Editor.java
c398adf81c5167fc4b9b9cefd1550bc8fd4a54e6 14-May-2015 Andrei Stingaceanu <stg@google.com> Merge "Fix floating toolbar popping frequently after Replace/Copy" into mnc-dev
78e2f07e81ee9040a4ecca331411123ef35d81c2 14-May-2015 Andrei Stingaceanu <stg@google.com> Merge "Fix: replace terminates extract mode (floating toolbar)" into mnc-dev
0138e4c7f8b7a9b04b021e12c6bf08bedb42e42f 11-May-2015 Keisuke Kuroyanagi <ksk@google.com> Track difference between touch and word in x coordinate.

After a handle is snapped to the word, the difference was
tracked in offset. It can break grapheme clusters, ignores
character width, and makes it difficult to select text near
line breaks.

Bug: 21005599
Change-Id: I42402a377670c7e3c6d6e6583744d085ae52bba2
/frameworks/base/core/java/android/widget/Editor.java
21623faa449496d68bd102ddda5874f572b9c55a 13-May-2015 Mady Mellor <madym@google.com> Merge "Fix issue where handle is in front of word rather than end of word" into mnc-dev
2e577d2e1c19c6fe9f22e0abbef9b35c6f627e27 13-May-2015 Mady Mellor <madym@google.com> Fix difficulty grabbing handles for small selections

The gravity for the handles pushes them to the outside of the touch target
square, causing the touch target to overlap for both of them when close
together. This CL swaps the gravity so that the touch target does not
overlap when the handles are close.

Bug: 20065564
Change-Id: I4d14e7076ac779c5f4a0a603d6348ba6dc7c7b4c
/frameworks/base/core/java/android/widget/Editor.java
58c9087137989da8411ffd212072f630d3fac4f3 12-May-2015 Mady Mellor <madym@google.com> Fix issue where handle is in front of word rather than end of word

Previous getWordEnd and getWordStart functions would return a boundary
rather than a word end / start boundary in some cases. This behavior is
most evident when moving between short lines -- the handle would go to
the next boundary rather than the word end on the next line (and the
start handle would go to the word end rather than the word start on
the prev line).

This CL ensures that word or punctuation boundaries are returned and moves
most of the punctuation boundary logic into WordIterator since it makes
a bit more sense there.

Bug: 21030788
Change-Id: I96c6aff7f2c213aa3c4f66ac87ca913ca16fd347
/frameworks/base/core/java/android/widget/Editor.java
6a49ddef62865c1b245ad60a13c334f0ffaf1a5f 12-May-2015 Chris Craik <ccraik@google.com> Revert "Fix build - Revert "Revert "Use default constructor to get anti-aliasing"""

Fix import

This reverts commit 7ed1431c83286abc83b9e5afc45fbd21ecb777b1.

Change-Id: Id93eba3ed1d47a90384ba20dea6f74d78755792b
/frameworks/base/core/java/android/widget/Editor.java
7ed1431c83286abc83b9e5afc45fbd21ecb777b1 12-May-2015 Chris Craik <ccraik@google.com> Fix build - Revert "Revert "Use default constructor to get anti-aliasing""

This reverts commit dfe0a66ceca530e0777ebfab20f81103baa18f14.

Change-Id: I58a1bae649a284f3d3b6213064d903ea7fcf185a
/frameworks/base/core/java/android/widget/Editor.java
dfe0a66ceca530e0777ebfab20f81103baa18f14 12-May-2015 Chris Craik <ccraik@google.com> Revert "Use default constructor to get anti-aliasing"

bug:20948129

This reverts commit 58fc522a69e8ddf9ac8530ce88e9c2c92da1dd14.

Change-Id: Iddeccb4ad15b843bb3e610bd3673a0c7abc1bf46
/frameworks/base/core/java/android/widget/Editor.java
eeb9afc78f5f0770b5a311f97d7b0702fdf81e28 12-May-2015 Andrei Stingaceanu <stg@google.com> Fix: replace terminates extract mode (floating toolbar)

Moved the replace action to be triggered from the TextView
rather than the Editor. Previously the ExtractedEditText
was calling the TextView.onTextContextMenuItem which did
not hold an entry for replace and thus was returning
false.

Note: this CL does not fix the extracted mode being
(randomly) terminated when edit actions are pressed. This
is still under investigation.

Bug: 20930071
Change-Id: I71f87418f040f6860fe7723e4cd731c298cf3c5f
/frameworks/base/core/java/android/widget/Editor.java
1baed51603b1a26277b759d3b23db9b93b710a4e 11-May-2015 Clara Bayarri <clarabayarri@google.com> Fix Floating toolbar is not refreshed when dragging insertion handle

Bug: 20922753
Change-Id: Iaee310ee0b8593df4d7846c2676e2c70011d0657
/frameworks/base/core/java/android/widget/Editor.java
f659a56c3062392d6b6020d148553ce49797eb5a 09-May-2015 Alan Viverette <alanv@google.com> Merge "Replace usages of deprecated version of TextView.setTextAppearance()" into mnc-dev
bb98ebd6b15f4cf942b156892988801c95601f2f 09-May-2015 Alan Viverette <alanv@google.com> Replace usages of deprecated version of TextView.setTextAppearance()

Change-Id: Ie501affe2e3a275d3172ce8ed584ba1cd5494da8
/frameworks/base/core/java/android/widget/Editor.java
50a927cdd14db7a99a7444ffb7c85f1882c9f43a 07-May-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Hard to modify multi-line selection.

mTouchWordOffset was not appropriately updated when a
selection is modified across multiple lines.

Bug: 20650838
Change-Id: I46f5393970dc8d806719467bac489feac0fbe1a5
/frameworks/base/core/java/android/widget/Editor.java
a18df8d6c7f7eb7c2cd6cff3dfe8decd177752fa 07-May-2015 Mady Mellor <madym@google.com> Merge "Consider punctuation treatment when selecting text." into mnc-dev
636a0da80533eff7fa8b67afb07277b0ba065d7c 07-May-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: A part of grapheme cluster can be selected." into mnc-dev
6c7b4ad690fe5c22c01ad79a232e567e835f676d 15-Apr-2015 Mady Mellor <madym@google.com> Consider punctuation treatment when selecting text.

This treats punctuation as "words", so groups of punctuation will be
selected together, i.e. "Hmm... yay!!!" would be treated as four words:
Hmm-...-yay-!!!

Bug: 19950062
Change-Id: Ic9514c524092734fad1abdf19a736bfa1406157b
/frameworks/base/core/java/android/widget/Editor.java
6a6126834e15c7bf6df9c5c0a3fe997e533b8583 07-May-2015 Mady Mellor <madym@google.com> Revert "Text selection - Don't select vertical white space"

This reverts commit b9bbbb1d97adb8ffdda2af14921401aabcec8cdd.

Bug: 20653654
Change-Id: Id96409ac17783bd1e7055913f14de8741d0f9caf
/frameworks/base/core/java/android/widget/Editor.java
77b9c388c9e1d34fedcd08c5c227fb072bd06786 06-May-2015 Andrei Stingaceanu <stg@google.com> Fix floating toolbar popping frequently after Replace/Copy

Invalidate the LAST_CUT_OR_COPY_TIME when text changes. Reflect
this in the variable names. Fixes the selection mode without
selection (PASTE|SELECT_ALL) toggling when changing text in the
15 sec window this mode has to show.

Bug: 20440790
Change-Id: Ie7ea55916e1633ed4981654c6d80168b1247bc35
/frameworks/base/core/java/android/widget/Editor.java
4d5c20c613a6716b14bd8ca3f178672c356a89e5 06-May-2015 Alan Viverette <alanv@google.com> Merge "ListPopupWindow should use window layout type SUB_PANEL" into mnc-dev
d1808401ca3bfd6b6b9a975c1e739b194d18f849 05-May-2015 Prerepa Viswanadham <dham@google.com> Merge changes from topic 'mwd-merge-050415' into mnc-dev

* changes:
Merge commit 'b6f59f4' into master_merge
Merge commit 'f6db0ce' into master_merge
Merge commit '17455a3' into master_merge
Merge commit 'b4d5b32' into master_merge
Merge commit 'a1a2fa7' into master_merge
Merge commit '8dfdb98' into master_merge
Merge commit 'eba66c3' into master_merge
b6bec1a403fd3efc59acb2c2206aaf6b6840c2f1 02-May-2015 Yohei Yukawa <yukawa@google.com> Remove unused methods/variables/fields from Editor.java.

This CL does nothing but remove unused code.

Change-Id: Ibe7c7aa1b9bdfd4117e27cb198082e307f4d68a4
/frameworks/base/core/java/android/widget/Editor.java
85d08f1bf859297bcd22b53ed777ea4cccd071cc 30-Apr-2015 Yohei Yukawa <yukawa@google.com> Suggestions popup must be dismissed before device rotation.

This is a follow up CL for Ia515fc576ddf2127b2f9863cc2652aeb619fff6e
for Bug 5420741, which had basically the same goal to Bug 20158984.

The goal here is to dismiss any popup window opened by the TextView
when the device is about to be rotated. This is important because
Window Manager and Input Method Manager Service are really sensitive
about which window is focused before and after the device is rotated.

In Ia515fc576ddf2127b2f9863cc2652aeb619fff6e, we tried to distinguish
two kinds of focus-lost. One is the true focus lost where suggestions
pop-up (if any) should be dismissed, and the other is an side effect
of showing the suggestions pop-up itself. We have used isShowingUp()
to distinguish distinguish one from the other. In short, it
indicates whether onWindowFocusChanged() is not called yet or is
called at least once.

In extract edit mode, however, it turned out that
onWindowFocusChanged() is never called (at least in recent builds).
As a result, the popup window is not dismissed when it should be.
One of the smallest solution would checking isShowingUp() only when
the target TextView is not ExtractEditText.

Adding unit test would be handled as Issue #20703391.

BUG: 5420741
BUG: 20158984
BUG: 20703391
Change-Id: I1706cf2ea0b0bdfe8894ab57fc3caa8ff12d8aab
/frameworks/base/core/java/android/widget/Editor.java
80ebe0d4ecb36d0e82dce499ccc0810cf3a0ec89 01-May-2015 Alan Viverette <alanv@google.com> ListPopupWindow should use window layout type SUB_PANEL

Look down, back up, where are you? You're in a dialog with an
AutoCompleteTextView. What's on your screen? I have it, it's the
auto-completion results you could be seeing. Look again. The window
layout type is now TYPE_APPLICATION_SUB_PANEL and the auto-completion
results are visible.

Also adds API on ListPopupWindow to specify the window layout type
and changes the text editing handle to be type ABOVE_SUB_PANEL.

Bug: 18530738
Change-Id: Id5577c4892729920de5b73411e580e6b2b2401d0
/frameworks/base/core/java/android/widget/Editor.java
47ea8b3d6bcef193a2d0ec9f0141525c83a0bcda 29-Apr-2015 Abodunrinwa Toki <toki@google.com> Merge "DO NOT MERGE: Update floatingtoolbar position when cursor moves." into mnc-dev
eea5a9e0de5825bf3629ad52a51a0dcf5f064fe5 29-Apr-2015 Andrei Stingaceanu <stg@google.com> Merge "DO NOT MERGE - Minor clean up: redundant functionality in Editor and TextView." into mnc-dev
2ceea2160e4ca89c426c2fcf9c77029ecf15e3e1 29-Apr-2015 Alan Viverette <alanv@google.com> am 9c36ee9b: am 2ddfcc4a: Merge "Context leaks in EditText causes out of memory"

* commit '9c36ee9b4f42909c1a425322e4e2d3e86dd6edc5':
Context leaks in EditText causes out of memory
9c36ee9b4f42909c1a425322e4e2d3e86dd6edc5 29-Apr-2015 Alan Viverette <alanv@google.com> am 2ddfcc4a: Merge "Context leaks in EditText causes out of memory"

* commit '2ddfcc4ade5d6db69808a340ae54280872559ec1':
Context leaks in EditText causes out of memory
3f3839bad034d3586804f784452a782e1a7bd8ed 29-Apr-2015 Chris Craik <ccraik@google.com> am e01d4b35: am 4f66e48d: am 2f1d09c3: Merge "Use default constructor to get anti-aliasing" into mnc-dev

* commit 'e01d4b35664070953adc28e8cc77c579579d41a6':
Use default constructor to get anti-aliasing
c7850626e41d3f53afc086d87014355f06d59849 29-Apr-2015 Chris Craik <ccraik@google.com> am 4527289b: am 0e7d1432: am ff623a5a: Merge "Remove unused flags and dirty rects" into mnc-dev

* commit '4527289b767865053ef6fa6aaa0a836ecba29dbb':
Remove unused flags and dirty rects
2f1d09c3c5e80e875f588d77bc1e47d317491fa8 29-Apr-2015 Chris Craik <ccraik@google.com> Merge "Use default constructor to get anti-aliasing" into mnc-dev
58fc522a69e8ddf9ac8530ce88e9c2c92da1dd14 28-Apr-2015 Chris Craik <ccraik@google.com> Use default constructor to get anti-aliasing

Change-Id: I3e078a3bc91a2fd703984ba18b5e7e98069b32f1
/frameworks/base/core/java/android/widget/Editor.java
bcdf0ab13df0bb19ec897cd614f117b4b1da74f7 25-Apr-2015 Abodunrinwa Toki <toki@google.com> DO NOT MERGE: Update floatingtoolbar position when cursor moves.

NOTE: This is only done on ACTION_UP event since the toolbar is
going to be hidden while one is dragging the handles.

Change-Id: Id09fc076edb0117ebceb26395ac91ee4d2283c2d
/frameworks/base/core/java/android/widget/Editor.java
47f82ae811e0036c005837c649dee5f1bb6d2595 28-Apr-2015 Andrei Stingaceanu <stg@google.com> DO NOT MERGE - Minor clean up: redundant functionality in Editor and TextView.

This is a no-op.

Change-Id: I28ec363a256d3d1a94e378d428897cc67c77d578
/frameworks/base/core/java/android/widget/Editor.java
956f340aacc7d8fc2d10f776551f13fde2d8d3ab 28-Apr-2015 Chris Craik <ccraik@google.com> Remove unused flags and dirty rects

bug:17209071

Also update DisplayList->RenderNode naming in Editor

Change-Id: I1d505640ba7388a0b0042d9c787f859e45a24da5
/frameworks/base/core/java/android/widget/Editor.java
dda59d7ebf801f1e22f8173c7ed7c9947c657e7b 28-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> am 716a5690: am a3a411ec: am d2b9bd80: Merge "Fix: End handle disappears when the selection is short." into mnc-dev

* commit '716a569053e9a58caad7a0ca68797dad786713ad':
Fix: End handle disappears when the selection is short.
9c68b29c22a95270879f1552dec4182e8e118411 24-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: A part of grapheme cluster can be selected.

Previously, when a selection handle is about to pass the other
handle, the offset of the handle was computed with +1 or -1 to
the offset, without considering UTF-16 surrogate pairs or grapheme
clusters. This patch consistently uses grapheme clusters to compute
the new offset in such cases.

Bug: 20112392
Change-Id: I2b5e206d20886ca7ceb9f4375ee0d66f2328f99d
/frameworks/base/core/java/android/widget/Editor.java
d2b9bd80a20e5339bd2555d83d11a5cd88a20034 28-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> Merge "Fix: End handle disappears when the selection is short." into mnc-dev
f6a78de10fd6bf507b1df82ac1cf8496942b359c 27-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> am 838a99e9: am bde00321: am 28b5b144: Fix: Selection handles are wrongly shown.

* commit '838a99e9adcdd065582956cac5150483535da4ae':
Fix: Selection handles are wrongly shown.
0fe6ab7960607bd459e58af24c991f482541610b 27-Apr-2015 Abodunrinwa Toki <toki@google.com> Merge "Update floatingtoolbar position when cursor moves."
28b5b1444965fcdb471a8c2ff09f6f2eb53b337b 22-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Selection handles are wrongly shown.

Selection handles were always shown when selection action
mode is started at first time. When the action mode is
started without a selection, only insertion handle must be
shown.

Bug: 20264980
Bug: 20407551

Change-Id: I630804e007f795d28f87e3fa6cba0de5bf588c78
/frameworks/base/core/java/android/widget/Editor.java
6cda1e28e3fc753d5e55a857bf827da87233a107 22-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: End handle disappears when the selection is short.

HandleView#isVisible didn't use getHorizontalOffset; thus,
the position is always computed as if Gravity.LEFT is set.
As a result, isVisible can be wrongly false for the end
handle and the handle is dismissed.

Bug: 20480054
Change-Id: Ib3242000bb98ae28e0cb37bf5b05069754abbfc6
/frameworks/base/core/java/android/widget/Editor.java
78214c90dbe88b0847fe293a1b64f7463ccc9f16 24-Apr-2015 Andrei Stingaceanu <stg@google.com> Minor clean up: redundant functionality in Editor and TextView.

This is a no-op.

Change-Id: I948ba8a5857fbbd58b656e6af0a8f590a00345d9
/frameworks/base/core/java/android/widget/Editor.java
6e5c51b744f0a8032c5d480a1a7d08c26824b158 25-Apr-2015 Abodunrinwa Toki <toki@google.com> Update floatingtoolbar position when cursor moves.

NOTE: This is only done on ACTION_UP event since the toolbar is
going to be hidden while one is dragging the handles.

Change-Id: Id09fc076edb0117ebceb26395ac91ee4d2283c2d
/frameworks/base/core/java/android/widget/Editor.java
0591651a62e605ee326720900f754226fe66085c 23-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> Quit showing "SELECT ALL" for inappropriate fields.

This blocks showing "SELECT ALL" in FloatingToolBar when
the input is empty or the field is a password field.

Bug: 20407551
Change-Id: Ia25700bbee4f78445776af46eb1369af6600d946
/frameworks/base/core/java/android/widget/Editor.java
56195db6c444ca888a556dffffe3668aafea34c6 22-Apr-2015 Abodunrinwa Toki <toki@google.com> TextView: Invalidate ActionMode content rect on scroll.

Bug: 20470464
Change-Id: I1a9178903db00d1cef5a835d055939b2ce138290
/frameworks/base/core/java/android/widget/Editor.java
e72e94767c63924f93c9ddf6e5fb78576c18c99c 23-Apr-2015 Andrei Stingaceanu <stg@google.com> Merge "Introduce "Share" option to the floating text selection toolbar."
08f7fd4d79140ba743fc3d4827f1c581411a80f3 23-Apr-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Wrong condition to detect selection shrink.

In the old logic, vertical selection shrink is detected
when the offset decreases and line number of the end handle
position increases. This never happens.

Bug: 20482453
Change-Id: I9e51742fcab4abe939f72130c51be773818aec62
/frameworks/base/core/java/android/widget/Editor.java
c649dae8e0c78bc9f0194befe44279f3ea0012c9 22-Apr-2015 Andrei Stingaceanu <stg@google.com> Merge "Cleanup unused icons on the floating toolbar."
05fd8d50b2ec89c760e19794b9fd2a14421009ae 16-Mar-2015 Keisuke Kuroyanagi <ksk@google.com> Stop showing "Replace" when selection isn't inside spans.

Currently, "Replace" is shown when any spans intersects
the selection. It causes confusing behavior when multiple
words are selected. "Replace" is in the ActionBar, but it's
unclear which word will be replaced. It can happen when
text is selected using long tap + drag, unig keyboard, or
using a mouse.

Bug: 19396964
Change-Id: I512f5f566d4060cd0aa7b28594054bf4f6bf7458
/frameworks/base/core/java/android/widget/Editor.java
fbafc786482d61444da984aea26d6d8fe58ee031 21-Apr-2015 Andrei Stingaceanu <stg@google.com> Cleanup unused icons on the floating toolbar.

Floating toolbars move to a text based actionMode.

Bug: 20212703
Change-Id: Id94599487c2c70712f20d7044cd7ba1248813945
/frameworks/base/core/java/android/widget/Editor.java
7f0c5bd543df4a699118d43e3db883efa4d463c5 14-Apr-2015 Andrei Stingaceanu <stg@google.com> Introduce "Share" option to the floating text selection toolbar.

Change-Id: I04b564224847eeb4e5f2a61f6a41f6046a1969a1
/frameworks/base/core/java/android/widget/Editor.java
180942764740696527b1d3f549d4c4299bf209e5 16-Apr-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: keep text selection when starting a process text intent."
b1a3946712da0c4913179fb0a55d8a71b6afc6be 16-Apr-2015 Yoshiki Iguchi <yoshiki@google.com> Merge "TextView.extractText should not crash with null arguments"
ee14772531097848b724a3067add9e3f40306ecc 13-Apr-2015 Yoshiki Iguchi <yoshiki@google.com> TextView.extractText should not crash with null arguments

TextView.extractText crashes when null argument(s) is given. This patch
adds a null-check and prevents the crash.

Bug: 5762732

Change-Id: I945b6cde77f30cb5ee2944797732ec69890711bf
/frameworks/base/core/java/android/widget/Editor.java
b3a0660eabeb4d4bd7ae539ca48c0f9d22b31890 14-Apr-2015 Mady Mellor <madym@google.com> Merge "Use HandleView's previous offset for text selection handles"
578286fb321243e72a999b3e5fd4ef5f2e4b8682 10-Apr-2015 Clara Bayarri <clarabayarri@google.com> Editor: keep text selection when starting a process text intent.

This CL makes sure the selection is not cleared when a text processing
intent starts, so that we can properly replace the selection when it
comes back.

It also fixes a related issue with the selection handles. The previous
code assumed a text selection mode starts from touch and enters drag
mode by default. This CL makes the code conscious of whether it should
show the selection cursors or enter drag mode.

BUG: 20148456
Change-Id: Ie8632e4a96f431dc6b2e4d0b4d3978eb55149172
/frameworks/base/core/java/android/widget/Editor.java
28e7ba66440b3e135a2b5966ad54c498c2b684ca 12-Apr-2015 Clara Bayarri <clarabayarri@google.com> Merge "Show and trigger activities that implement Text Processing actions"
94bf0d9157418d398325e7e8c1662923b848842e 10-Apr-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: Account for a split cursor in the content rect calculation"
d5bf3ed9b0138e9fd305da91386d1df03f9a75cc 27-Mar-2015 Clara Bayarri <clarabayarri@google.com> Show and trigger activities that implement Text Processing actions

This CL adds the Activities that support Intent.ACTION_PROCESS_TEXT
to the Text Selection Action Mode in Editor, and triggers an intent
with the currently selected text when they are selected.

It also adds the required mechanism to allow a View to request an
intent to be started, and return the activity result back to it.

Change-Id: I62ec618010edf01da41338c8c1a7dd4292a15227
/frameworks/base/core/java/android/widget/Editor.java
b7419dd76e6d0ff06a1d45fd8389093c9a212351 09-Apr-2015 Clara Bayarri <clarabayarri@google.com> Editor: Account for a split cursor in the content rect calculation

In some cases, the cursor in a TextView is split. This happens with
RTL languages. For this case we need to ensure neither of the half
cursors is obscured by the Floating Toolbar, hence we take the
minimal rectangle that contains both cursors as the content rect.

Change-Id: I2ce411793fcba2140c4ad7fb7caaf03593620484
/frameworks/base/core/java/android/widget/Editor.java
4c42bc045daccb293198559334df6fc6232fff6a 10-Apr-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: Allow invalidation of the Text Selection Action Mode"
7bfcad34274e7d78a85cc7f54bb64d3e5ffa7da6 10-Apr-2015 Seigo Nonaka <nona@google.com> Merge "Fix unexpected selection cancellation"
bb6a62c2be16bf99b2e8b9a4aa15b8dc267ad3fc 31-Mar-2015 Seigo Nonaka <nona@google.com> Fix unexpected selection cancellation

It turned out that text selection is unexpectedly cancelled by
InsertionPointController if it is visible. The InsertPointController
is not necessary if there is a selection, so just hiding before
performing set selection fixes this issue.

Bug: 19946192
Change-Id: I2afce1789d772a8d2ea368643cc7533561ee2bf0
/frameworks/base/core/java/android/widget/Editor.java
b8ed5b75da7b48e3f5c40cd9bae1d29fd5a8db9b 09-Apr-2015 Clara Bayarri <clarabayarri@google.com> Editor: Turn on Floating Toolbar Action Mode for Text Selection

Change-Id: I267809e8cd5f10a3f9efd8f555ad24c7a935fdb8
/frameworks/base/core/java/android/widget/Editor.java
13152d1c725c6310a697ebc521cf8b57a52490ac 09-Apr-2015 Clara Bayarri <clarabayarri@google.com> Editor: Allow invalidation of the Text Selection Action Mode

This allow us to add/remove the "replace" item, which depends on
having a replacement span.

Change-Id: I47b6487fc91f80b9dab13e90b8d630194b3f9beb
/frameworks/base/core/java/android/widget/Editor.java
c2225b9d9e36d94b0a96282b91e370318475e830 02-Apr-2015 Mady Mellor <madym@google.com> Use HandleView's previous offset for text selection handles

HandleView tracks the previous offset of where the handle is at in the text
so it's unnecessary to track it in StartHandleView and EndHandleView again,
this updates them to use the already existing value.

Change-Id: I1a824c9fd9c54ed782e15fa419f23f49abea57a1
/frameworks/base/core/java/android/widget/Editor.java
7fc946eb5d232fad17213582b6fdab24e6b9a8fa 31-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Fix crash when selecting text on a non-editable TextView

We are querying the insertion controller, which is null on a
non-editable TextView.

Change-Id: Ie8428c6264385a1283310823c959ecdd63ef5a3f
/frameworks/base/core/java/android/widget/Editor.java
ea4f150c38853c8b03e7e459a1b39bce13eee4be 18-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Provide the selection content rect to ActionMode.Callback2

This is necessary for the positioning of the floating toolbar.

Change-Id: I790c1f011a7e90c5e315aad77e96569b26b553af
/frameworks/base/core/java/android/widget/Editor.java
80d4bd84ede57b1a3c1e8738fb6380c667c13865 31-Mar-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: Reorder items in the text selection action mode."
26d443aee4ee5a8791417b4ca09e8c78ba8dc78b 30-Mar-2015 Raph Levien <raph@google.com> Revert "Fix build: Revert "Record hyphens from Minikin and draw them""

This reverts commit 5a6eeb3cbe0896ddf4bdccc0b1a81d7aac49821e and
fixes the underlying issue (needed to @hide getHyphen() for subclasses
of Layout, not just the base class), and layoutlib changes for
checkbuild.

Change-Id: I7a2b5f20ae014ea8e224d8c4079cf9131e17e1c1
/frameworks/base/core/java/android/widget/Editor.java
ed2e391454503397292058f42571768beebe07bd 24-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Reorder items in the text selection action mode.

Reorder elements to place "Select All" last, as otherwise when
we use a floating toolbar the first element is "Select All" and
takes up too much space, forcing Copy and Paste to the overflow.

Change-Id: I04cdd79915bd2a3abbd10969ce298b7b0f7f8cb0
/frameworks/base/core/java/android/widget/Editor.java
dff34599c24d73ec34dd453e6493d276d6a33933 30-Mar-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: Cleanup the unused ActionPopupWindow"
2205425b94d62c64fc189c36b92b44067d371cc6 25-Mar-2015 James Cook <jamescook@google.com> Fix undo of text pasted into TextView with TextWatcher

Pasted text is directly inserted into the TextView buffer, so it looks
like a programmatic insert to the undo system. This is fine, but we
need to be sure that subsequent modification by a TextWatcher (for
example, to add spaces to a credit card number) is merged into the same
undo operation -- from the user's perspective, pasting in the text and
having spaces inserted are a single operation.

Also clean up mForceMerge flag in EditOperation -- we don't need to
store it across edits, just use it when a new edit comes in.

CTS test to follow.

Bug: 19332904
Change-Id: I7b3c97c08b83faebeab9f1708b0d6eac6d151d50
/frameworks/base/core/java/android/widget/Editor.java
a2e207a807b7d4488c3d5a21ff686c811b1638be 24-Mar-2015 Mady Mellor <madym@google.com> Merge "Text selection - Don't select vertical white space"
08fe91875382dbd952fcf540610e642c40085b4d 24-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Cleanup the unused ActionPopupWindow

This is unused since we removed the paste popup

Change-Id: Id609d43a9f9f9bc31b2f40286ca1fe88773ad1dd
/frameworks/base/core/java/android/widget/Editor.java
5b734f2430e9f26c769d6af8ea5645e390fcf5af 09-Jul-2013 Mikael Gullstrand <mikael.gullstrand@sonymobile.com> Context leaks in EditText causes out of memory

In android.widget.Editor, Blink runnables can be posted even if
the related TextView is not attached to a window. If a message has
been posted to the Blink message queue and the run method of
the Blink runnable has started executing, the removeCallbacks call
in onDetachFromWindow method is not enough to abort the execution
of the Blink runnable. This results in a memory leak when
the activity is destroyed.

The solution is to cancel the execution of the Blink runnable by
calling the suspendBlink method from onDetachFromWindow method.
Hence the Blink thread will halt, and the referenced context can
be released by GC when the activity is destroyed. Also adding
a corresponding resumeBlink method call in onAttachedToWindow
to start executing the Blink runnable.

Change-Id: Icb26c9c947b3cc1158f7629ae35d7b4e42b80f17
/frameworks/base/core/java/android/widget/Editor.java
b9bbbb1d97adb8ffdda2af14921401aabcec8cdd 23-Mar-2015 Mady Mellor <madym@google.com> Text selection - Don't select vertical white space

This alters text selection so that you won't select a
whitespace line above or below your selection unless you select
a non-whitespace character past the line.

Change-Id: Ic93f77f6ccecb06be2acc83524ca9e9a627660ce
/frameworks/base/core/java/android/widget/Editor.java
fca29e7d49c3254c837f0c94f3346b41adf08181 20-Mar-2015 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Start respecting View.DRAG_FLAG_GLOBAL flag."
6820434edde7354e9414e4ebe2923021db1a4361 19-Mar-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: Avoid the paste popup from coming up when a word is selected."
870c4ba78a8a272cade87e98e0105eb850db0fec 19-Mar-2015 Andreas Gampe <agampe@google.com> am 1eca7d66: am 2a247b36: Merge "Frameworks/base: Fix visibility flag in Editor"

* commit '1eca7d66ee3da87c622259544794b8fe998cdb92':
Frameworks/base: Fix visibility flag in Editor
c3debf29d68fa711a98027d60cb33a66305d1d0a 19-Mar-2015 Vladislav Kaznacheev <kaznacheev@google.com> Start respecting View.DRAG_FLAG_GLOBAL flag.

Respect flags passed to startDrag (they used to be ignored).
Allow global drag&drop for text views.

Bug: 19548858
Change-Id: I981cfd617ebc6f5f2d59ebded798c22dc4920d38
/frameworks/base/core/java/android/widget/Editor.java
6351e660142a2319c142346628f131c494ded99c 17-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Avoid the paste popup from coming up when a word is selected.

The existing code already fires the selection action mode, which
contains all the elements from the popup.

This is the last case remaining in which the popup is used, so also
clean up all popup related code.

Change-Id: I68b8b7bc8076279371955265b0088bfa0c22760b
/frameworks/base/core/java/android/widget/Editor.java
10ff56ec6d402a69f53ee899e54e3c1de7bf3b1a 19-Mar-2015 Clara Bayarri <clarabayarri@google.com> Merge "Editor: Make the Insertion handle start/finish the selection action mode on tap."
452fa75207404f5cf4a0a6963d1dc9455e8f4b8e 16-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Make the Insertion handle start/finish the selection action mode on tap.

The Insertion handle used to show/hide the paste popup, not that we are
unifying it with the selection action mode it should start/finish the mode.

There are no other use cases of the popup with the insertion handle, so that
code is cleaned up.

Change-Id: I40703bc8316f217edaf97aff72436935de60500c
/frameworks/base/core/java/android/widget/Editor.java
f2560e62cf26cae64f5751b0479743e09cb7bd7f 18-Mar-2015 James Cook <jamescook@google.com> Merge "Improve undo support for text entered with IME"
43c410eaacf7d287c6c3f5621e6e0b96501004dc 18-Mar-2015 Chris Craik <ccraik@google.com> Merge "Remove HardwareCanvas"
d2026686702f6c893e871c078dc5176347b3b27e 03-Mar-2015 James Cook <jamescook@google.com> Improve undo support for text entered with IME

Use span properties to detect:
* Composing text - don't record undo operations
* Completing a composition - record an insert undo operation
* Canceling a composition - don't record

Save the composition state on parcel/unparcel.

Stop using begin/end batch edit to try to detect when a TextWatcher
is modifying the text. IMEs trigger multiple InputFilter passes in
a single batch edit. Use SpannableStringBuilder to determine when
we're in a TextWatcher callback because it is the authority on that
state.

Fix a bug in undo manager where it doesn't forget undos correctly if
there are more than one in the stack.

Bug: 19332904
Change-Id: Iaa9b0b2a7bf6683302cc85e7616e5d5fcc9fa202
/frameworks/base/core/java/android/widget/Editor.java
29d2b5aa484f4b1e06aa9ad07d9f32d1e45e2032 13-Mar-2015 Clara Bayarri <clarabayarri@google.com> Editor: Fire the selection Action Mode when long pressing on an empty space

This used to fire the "paste" popup instead. It is a tiny step towards
unifying the cut/copy/paste action mode and paste popup.

Change-Id: I03dfcc294d4453e92464fc4f714468f58c692f24
/frameworks/base/core/java/android/widget/Editor.java
4976e2de8df1d1477ad327f3150b8fb8b5dffcd1 18-Mar-2015 Andreas Gampe <agampe@google.com> Frameworks/base: Fix visibility flag in Editor

Fix double check.

Bug: 19797138
Change-Id: I95e694f384f1f25d6cf3b6a1669052940385e41d
/frameworks/base/core/java/android/widget/Editor.java
4f831caa494b1215a004f461ca8363673fb31d2d 12-Mar-2015 Roozbeh Pournader <roozbeh@google.com> Merge "Fix negative touch word offset that caused crashing when selecting text"
27d6b97f635bba781f4979093b82b7f6198cdeb9 12-Mar-2015 Mady Mellor <madym@google.com> Fix negative touch word offset that caused crashing when selecting text

Previously the offset between the touch event and the start / end of
the word could result in a negative value - we don't care or want
this value to be negative. The negative value also causes the returned
offset to be outside the bounds of the text which resulted in a crash.

Bug: 19705184
Change-Id: I4287df7778c246dd10654f1a1f1e57538e940730
/frameworks/base/core/java/android/widget/Editor.java
f84a9724f1a915c782ac9d9c6465e13f8e9a42c9 02-Mar-2015 Clara Bayarri <clarabayarri@google.com> Move the "Replace" popup option to the Text Selection ActionMode.

As a first step in unifying the cut/copy/paste ActionMode in Editor
with the paste/replace popup, I'm moving the replace option to
the CAB ActionMode. Paste is already there, so for now all options
are together.

Missing things to address in upcoming CLs:
- Invoke the ActionMode in all cases where the popup shows up now,
ensuring only the options that are currently available show up.
- Get rid of the current popup
- Make the ActionMode a floating toolbar (pending feature completion)
- Define a keyboard shortcut for replace?

Note that since the ActionMode still shows up in the ActionBar and
replace has no icon it now appears as text and takes up lots of
space. This will improve when we can switch to using a floating
toolbar.

Change-Id: Ib6b60bae9b58e4db96b9c4cee556e19d3f1bb466
/frameworks/base/core/java/android/widget/Editor.java
f6829a0a618b4523619ec53c996b04d67e3186b9 10-Mar-2015 Chris Craik <ccraik@google.com> Remove HardwareCanvas

Change-Id: I239646a7f00f09d3f76fe6b6162eed86bc0d6e77
/frameworks/base/core/java/android/widget/Editor.java
900185d00359661e185c3b328f40a4d572ae03f9 10-Mar-2015 James Cook <jamescook@google.com> Handle undo in TextView fields with no cursor

This fixes a rare crash in the undo system. In particular, if the
TextView did not have a cursor and the first operation was a
programmatic insert/append the "old cursor position" would be -1.
Attempting to undo would try to restore the cursor to -1 and crash.

Test will land separately in CTS.

Bug: 19332904
Change-Id: I9aa18c1e3621b99d13ac707e483154382effb81c
/frameworks/base/core/java/android/widget/Editor.java
d1eca77c3c1294c8d48147ed9c500032d3dac57f 10-Mar-2015 Roozbeh Pournader <roozbeh@google.com> Merge "Fix: Drag handles are not shown for selection/insertion"
f7e503de70ab5424f42861b2fe305ca6fd5dd66c 06-Mar-2015 James Cook <jamescook@google.com> Merge "Support undo of some programmatic TextView changes"
138bc2f37b007cdaaa1dc8d7aa71148bf6d2e7ea 05-Mar-2015 Mady Mellor <madym@google.com> Merge "Text selection changes - smart handles & drag accelerator"
48e0fac6c268c9e19e608bcb43aaacbd3eba5328 26-Feb-2015 James Cook <jamescook@google.com> Support undo of some programmatic TextView changes

Applications can use TextWatcher.afterTextChanged() to implement
post-edit formatting of text, such as inserting spaces in a credit
card number. From the user's perspective, the insertion of the spaces
is not a separate action, so that change should be merged with the
previous undo operation.

* Force merge undo states for edits that are triggered by callbacks
after the InputFilter, such as TextWatchers.
* Reset the undo state when the whole field is reset with setText().
* Create separate undo operations for direct programmatic changes to
the Editable (e.g. directly calling insert).
* Remove part of the non-forced replacement edit merging code. An
improved version will land in the next CL.

Bug: 19332904
Change-Id: Iba5366a5aadbe3534554b668f8d417250deff505
/frameworks/base/core/java/android/widget/Editor.java
2ff2cd873cc2a3f6a17cdaeb3e64b83ae2c6fda9 02-Mar-2015 Mady Mellor <madym@google.com> Text selection changes - smart handles & drag accelerator

Drag accelerator:
After entering text selection mode, immediately dragging your finger
along the screen will select text. Once you have dragged past the initial
word the selection an offset is added so that the end of the selection is
not below your finger.

Smart handles:
When expanding the selection the handles snap to words, when shrinking the
selection the handles go by character, once you're in by-character mode
you can expand by character until you hit a word boundary where you will
then expand by word again. Your finger must past the first ~2 characters
in a word before the handle will jump to the word boundary.

Bug: 19356160
Bug: 19355947
Change-Id: I79b8ec5ae3159148cd2f15d2e63dd5045c2069e4
/frameworks/base/core/java/android/widget/Editor.java
08c7116ab9cd04ad6dd3c04aa1017237e7f409ac 28-Feb-2015 John Spurlock <jspurlock@google.com> Remove unused imports in frameworks/base.

Change-Id: I031443de83f93eb57a98863001826671b18f3b17
/frameworks/base/core/java/android/widget/Editor.java
f1dad1ea82c5d9ca920af39b81ac6894ff692b99 27-Feb-2015 James Cook <jamescook@google.com> Add TextView XML attribute for undo support

* Defaults to true, but can easily be changed if we decide that undo
should be off by default.

Bug: 19332904
Change-Id: Ic4f3814a1b0a5e25171a910f2fe628606e16104e
/frameworks/base/core/java/android/widget/Editor.java
471559f129b8b0c87e70d013f13386fa8fc46ec7 27-Feb-2015 James Cook <jamescook@google.com> Reland: Improvements to TextView Ctrl-Z undo support

This relands commit 7713d18847c7fe81fb5f34e888aaf8167862f5fd which was
reverted in commit 3ac0bcb095e0067721a5e35d3b4c51e4090842a3.

Original description:
* Undo/redo restores cursor position
* Multiple deletes are consolidated into a single operation
* Don't create undo history for invalid or no-op operations
* Move logic for merging operations into Editor.EditOperation

CTS tests in android.widget.cts.TextViewTest will land separately.

Bug: 19332904
Bug: 19450037
Bug: 19505388
Change-Id: Ice27e3c4e5e421b47be8c4e9964c10844e61b0fc
/frameworks/base/core/java/android/widget/Editor.java
f59152cf00520d1bd36949b44faca2e1fcf6d28f 27-Feb-2015 James Cook <jamescook@google.com> Reland: Add basic support for Ctrl-Z to editable TextViews

Reland 9201e797833f35b9afb219f88c10d3b6fda02a4e which was reverted in
c8f08e07a47cc259a25caed3f731ee7044328635.

Original description:
* Add an UndoManager to the Editor for each editable TextView
* Record operations as being owned by that Editor
* Parcel the undo state
* Wire hardware keyboard shortcuts Ctrl-Z for undo and Ctrl-Shift-Z
for redo into TextView shortcut handling.
* Expose IDs for "undo" and "redo" for symmetry with cut/copy/paste.

Additional fix:
* Ensure each UndoOwner always has a valid mManager, even after the
UndoManager is parceled and restored.

Bug: 19332904
Bug: 19505388
Change-Id: Iad4476e6e9ca952281e69bf22c07cca915dfa7bd
/frameworks/base/core/java/android/widget/Editor.java
7340be7993fea97232fdf7b98dfa1a5bc9b8fd95 27-Feb-2015 Keisuke Kuroyanagi <ksk@google.com> Fix: Drag handles are not shown for selection/insertion

Bug: 19538371

Change-Id: I9017ae37bfd456272787aa4705d5a1608690f0cb
/frameworks/base/core/java/android/widget/Editor.java
c8f08e07a47cc259a25caed3f731ee7044328635 26-Feb-2015 James Cook <jamescook@google.com> Revert "Add basic support for Ctrl-Z to editable TextViews"

This reverts commit 9201e797833f35b9afb219f88c10d3b6fda02a4e.

It causes crashes on typing after device orientation change.

Bug: 19332904
Bug: 19505388
Change-Id: I0d9fb728eb6f8d591beb35fab333c0a182e24542
/frameworks/base/core/java/android/widget/Editor.java
3ac0bcb095e0067721a5e35d3b4c51e4090842a3 26-Feb-2015 James Cook <jamescook@google.com> Revert "Improvements to TextView Ctrl-Z undo support"

This reverts commit 7713d18847c7fe81fb5f34e888aaf8167862f5fd.

It causes crashes on text input after device orientation change.

Bug: 19332904
Bug: 19450037
BUG: 19505388
/frameworks/base/core/java/android/widget/Editor.java
7713d18847c7fe81fb5f34e888aaf8167862f5fd 18-Feb-2015 James Cook <jamescook@google.com> Improvements to TextView Ctrl-Z undo support

* Undo/redo restores cursor position
* Multiple deletes are consolidated into a single operation
* Don't create undo history for invalid or no-op operations
* Move logic for merging operations into Editor.EditOperation

CTS tests in android.widget.cts.TextViewTest will land separately.

Bug: 19332904
Bug: 19450037
Change-Id: I9c7887aecdd0209e783fb7cda4cb7081a97a98cd
/frameworks/base/core/java/android/widget/Editor.java
9201e797833f35b9afb219f88c10d3b6fda02a4e 11-Feb-2015 James Cook <jamescook@google.com> Add basic support for Ctrl-Z to editable TextViews

* Add an UndoManager to the Editor for each editable TextView
* Record operations as being owned by that Editor
* Parcel the undo state
* Wire hardware keyboard shortcuts Ctrl-Z for undo and Ctrl-Shift-Z
for redo into TextView shortcut handling.
* Expose IDs for "undo" and "redo" for symmetry with cut/copy/paste.

Tests in CTS TextViewTest will land separately in ag/635321

Bug: 19332904
Change-Id: Ibd23843f86b4cd556751faa0b3ad1f35d6d49785
/frameworks/base/core/java/android/widget/Editor.java
bb2397c523dc3e1e54fcd2ebf7ae20907e3f37ad 13-Feb-2015 Raph Levien <raph@google.com> Fix EditText RenderNode invalidation bugs

EditText uses a TextDisplayList data structure to hold RenderNode
objects for optimized incremental drawing. This data structure uses an
isDirty flag to indicate when it has been invalidated and needs to be
re-rendered. This flag was not being computed correctly, leading to
excessive re-rendering.

This patch clears isDirty after rendering text into the RenderNode, so
that it can be reused until it is invalidated, and also explicitly sets
it when it is recycled.

Bug: 19371378
Change-Id: I70239cc30e43bb8631dfffc2ea2705e8d4c452f4
/frameworks/base/core/java/android/widget/Editor.java
107843de4507b3511006cb9c77b8d0364374385a 08-Sep-2014 Tom Hudson <tomhudson@google.com> Remove status return from all uirenderer::Renderer functions

This moves the interface closer to android::Canvas. The only use of
return values was in the OpenGLRenderer subclass; that is replaced
with an internal dirty flag: returned from finish(), checked by
CanvasContext.

This is part of a series of CLs to refactor the Graphics JNI bindings.

BUG:15672762
R=djsollen@google.com,ccraik@google.com

Change-Id: Ifd533eb8839a254b0d3a5d04fc5a2905afdfc89e
/frameworks/base/core/java/android/widget/Editor.java
955d8d69ea6caabce1461dc25b339b9bf9dc61a6 08-Oct-2014 Dianne Hackborn <hackbod@google.com> Put in real "code" (aka marketing) name.

Change-Id: Idb3976edfae37293ed75cb5b869b4b42d8042bbe
/frameworks/base/core/java/android/widget/Editor.java
5a689ce78ed85cb5df1f2c7c680dcc6525dfe9eb 10-Sep-2014 Raph Levien <raph@google.com> Remove auto spaceifying behavior on paste

The paste action contained some logic to automatically insert or remove
spaces, basically to emulate the semantics of the text being a sequence
of space-separated words. This was never universally loved, and gives
particularly unexpected behavior with a hardware keyboard.

This patch simply removes the logic to automatically adjust spaces on
paste, so what gets pasted is simply the literal buffer contents.

Bug: 16900326
Bug: 3304489
Change-Id: I5cdf9c43d98a17aa708883b47245aa7929a124d2
/frameworks/base/core/java/android/widget/Editor.java
5f183f0671dfa1d87ca6d741deb457170c432493 02-Sep-2014 Yohei Yukawa <yukawa@google.com> L API proposal: Introduce IS_RTL flag

This CL introduces CursorAnchorInfo.FLAG_IS_RTL for better
RTL support. This CL also renames *CharacterRect() with
*CharacterBounds() so that they can look more consistent
with other existing APIs.

Rationale:

CursorAnchorInfo.FLAG_IS_RTL addresses following issues.
1. There is no way to associate the RTL information with
the insertion marker.
2. Returning mirrored (right < left) RectF for RTL in
CursorAnchorInfo#getCharacterRect() is turned out
to be bug-prone. Such usage of RectF is not fully
supported. For example, RectF#isEmpty() always returns
false when right < left.
3. There is no reliable to provide the RTL information
when CursorAnchorInfo#getCharacterRect() returns an
empty (right == left) RectF. Perhaps we could use +0.0
and -0.0, but I'm afraid that it is also bug-prone.

BUG: 17365414
BUG: 17335734
Change-Id: Ic8c6fab58c01206872a34e7ee604cdda1581364d
/frameworks/base/core/java/android/widget/Editor.java
cc24e2b6a2a429d70b75c6810a5cfd8816ce03ad 30-Aug-2014 Yohei Yukawa <yukawa@google.com> API Review: CursorAnchorInfo

This CL introduces following combinable flags as a replacement
of CHARACTER_RECT_TYPE_* constants.
- CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION
- CursorAnchorInfo.FLAG_HAS_INVISIBLE_REGION

This CL also replaces #isInsertionMarkerClipped() with
flags.

Rationale:
getCharacterRectFlags() should return a set of flags, rather
than enum-like types.

getInsertionMarkerFlags() is more consistent with
getCharacterRectFlags() than isInsertionMarkerClipped().
It is also open for future extension.

BUG: 17200900
Change-Id: Ia8cbb9f6b41cd9509fc0147fd68763dfde593ffc
/frameworks/base/core/java/android/widget/Editor.java
119907cd2575c56b1ebf66348b52e67aaf6a88d8 14-Aug-2014 John Reck <jreck@google.com> Animator stuff

Bug: 17228458

Change-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d
/frameworks/base/core/java/android/widget/Editor.java
a277db28e990d1f6f74ace0c32fe92401660a840 22-Aug-2014 Yohei Yukawa <yukawa@google.com> Remove CursorAnchorInfoRequest and related stuff

This CL removes CursorAnchorInfoRequest and related stuff
in favor of InputConnection.requestUpdateCursorAnchorInfo,
which is more easy to understand. This CL also deprecates
InputMethodManager#updateCursor and related stuff.

Rationale:
1. The spec of #updateCursor says that it provides the cursor
position in local coordinates, while the input method
requires it in the screen coordinates.
2. #updateCursor has never been enabled in AOSP, because
InputMethodManager#isWatchingCursor always returned false.
3. There has been no way to let
InputMethodManager#isWatchingCursor return true.
4. In L, InputMethodManager#updateCursorAnchorInfo is
introduced to address all the issues above.

Given that we no longer need to support #updateCursor,
CursorAnchorInfoRequest is overkill when we need to convey
just a couple of parameters.

BUG: 17185263
BUG: 17182367

Change-Id: I4a577bfd02b37b9e56c80b8b41bb25afa95dd8ef
/frameworks/base/core/java/android/widget/Editor.java
3fceabd64c95bfd2c563972e243117af308438d3 20-Aug-2014 Adam Powell <adamp@google.com> Update text selection handles to have a minimum touch target size.

The text selection handles were traditionally sized based on the size
of the provided drawables. When these drawables are visually small, do
not restrict the size of the touch target beyond a certain minimum.

Bug 16851360

Change-Id: If6a468c7b3a9a1a21913006633f00699637751c0
/frameworks/base/core/java/android/widget/Editor.java
987eb3f109c646476d1310a54f7037a558ccfef3 08-Aug-2014 Yohei Yukawa <yukawa@google.com> Fix handling of line-end and RTL characters in CursorAnchorInfo

This CL addresses line-end handling and RTL characters handling
in CursorAnchorInfo.

BUG: 16499624
Change-Id: Ie23569fb136751c40f79dd9886e279dc01cefae9
/frameworks/base/core/java/android/widget/Editor.java
098e7fb5875c31aede4e6d40a3acec876d948527 06-Aug-2014 Adam Powell <adamp@google.com> Have TextView editors use the Menu context for action mode icons

Using the TextView's context instead when resolving these icons from
the theme causes issues if a dark action bar theme is in use.

Bug 16686041

Change-Id: I44cb4a83516d8610103b6ebaf604860b67ac84dd
/frameworks/base/core/java/android/widget/Editor.java
0023d0e0c4f5339b299d1eacbd4e7181c2fd271f 10-Jul-2014 Yohei Yukawa <yukawa@google.com> Polish new IME API for L part 2: CursorAnchorInfo

This CL addresses feedbacks from internal customers for new
input method APIs that are mainly used for physical keyboard
support in L.

For performance reasons, #onUpdateCursorAnchorInfo is not called
back by default and each input method has to enable this
event notification explicitly whenever fine-grained character
locations are needed.

In L-preview, InputMethodSession#setCursorAnchorMonitorMode was
introduced for this purpose. However, we got several feedbacks
to be addressed.
- The effect of #setCursorAnchorMonitorMode is not preserved
during focus change. IMEs need to call
#setCursorAnchorMonitorMode every time when #onStartInput is
called. This is tricky and hard to understand.
- As #onUpdateCursorAnchorInfo is a new API, not all
applications/text editors have supported it. Therefore IMEs
can't always rely on it. However, there is no way to query
if the attached target is supporting this new API or not.
It would helpful for IME authors if we can provide a
reliable way to query if the attached input target is
supporting the new API or not.

In order to address these issues, the triggering method has
moved from InputMethodSession to InputConnection in this CL,
as an analogy of existing InputConnection#getExtractedText API,
which has provided similar functionality including optional
reactive event callbacks from the application to the IME.

BUG: 15812658
BUG: 16118603
Change-Id: I3c6b69bd9d79b199afe68d838f25effa6048e5cc
/frameworks/base/core/java/android/widget/Editor.java
0b01e7fc58cdde00d8350285a3386c4209b72d78 08-Jul-2014 Yohei Yukawa <yukawa@google.com> Polish new IME API for L: CursorAnchorInfo

This CL allows application authors and input method authors to
communicate with each other more precisely on the visibility of
insertion marker and composing characters. Now we can describe
the situation where the coordinates of them are available but
they are overlapped by other UI elements.

This change is based on feedbacks from internal customers of
this preview API.

Change-Id: I82eba0e844a6f8b99ba11a68fad272399034cc24
BUG: 16118303
/frameworks/base/core/java/android/widget/Editor.java
a7090e0cfd7c719a6d4c03aae34f5db98754cbdd 21-Jun-2014 Chris Craik <ccraik@google.com> Update 'DisplayList' vs 'RenderNode' naming in several places

Change-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287
/frameworks/base/core/java/android/widget/Editor.java
c46b5f04aa2a9fd292c117d2824f70fcf06e86ba 09-Jun-2014 Yohei Yukawa <yukawa@google.com> Rename CursorAnchorInfoBuilder with Builder

Inner Builder class should not inherit full class name of outer
class.

BUG: 15516230
Change-Id: I2d56edebb0c85639db57ca5b2aadb22c67fc5926
/frameworks/base/core/java/android/widget/Editor.java
81f4cb3f858f46a4d9b793c4d326b9bf6aca868d 13-May-2014 Yohei Yukawa <yukawa@google.com> Enable CursorAnchorInfo to contain composing string

This CL adds one more functionality to CursorAnchorInfo
that enables applications to associate the composition
string with its positional information. This is useful
for an IME to handle CursorAnchorInfo asynchronously.

This is also useful for the framework to detect if
the application is unnecessarily calling
IMM#updateCursorAnchroInfo with duplicate event.

BUG: 14579622
Change-Id: Ie75c17b523dad33e97b08c15f5f5267573ce2063
/frameworks/base/core/java/android/widget/Editor.java
83b68ba4ad7e80dd0afe34f9f53dde5884325f58 12-May-2014 Yohei Yukawa <yukawa@google.com> Support IMM#updateCursorAnchorInfo in Editor

With this CL, Editor starts calling IMM#updateCursorAnchorInfo
iff IMM#isWatchingCursor(View) returns true. The performance
regression should be negligible when IMM#isWatchingCursor(View)
returns false.

BUG: 14579622
Change-Id: Ib35a6f4201b26d837a6aa07d1204c9eb75404da1
/frameworks/base/core/java/android/widget/Editor.java
8de65a8e05285df52a1e6f0c1d5616dd233298a7 10-Apr-2014 John Reck <jreck@google.com> Switch DisplayListData to a staging model

Bug: 13912977

Change-Id: I5b2f664e797be22a58300964f57ceb4fab60528c
/frameworks/base/core/java/android/widget/Editor.java
776abc24cdd18610232a50b997cce3cffa74609b 07-Mar-2014 Adam Lesinski <adamlesinski@google.com> Uses VMRuntime.newUnpaddedArray for ideal array sizes

Bug:13028925

Change-Id: I0a9301248b10a339afbdc5e4ffe3310ac4fa1fb7
/frameworks/base/core/java/android/widget/Editor.java
f666ad7046c0b1b255835f75aeb7d1391067df93 15-Mar-2014 John Reck <jreck@google.com> Rename DisplayList->RenderNode

Change-Id: Idcca6f26ba6282594789962f5edb3ed53a290fef
/frameworks/base/core/java/android/widget/Editor.java
be34f2f3b340196426bdf558b28951359a4d84fa 10-Mar-2014 John Reck <jreck@google.com> DisplayList lifecycle changes

Bug: 13360343
Change DisplayList to be more forgiving with weaker lifecycle
requirements. Is more self-managed with a strong reference
to the renderer it needs

Also fix naming mismatch

Change-Id: I5c89453a72a52954f6f959f0846199705dbb6476
/frameworks/base/core/java/android/widget/Editor.java
7558aa708160c287552f4e1e33c33d8b191e9f0e 05-Mar-2014 John Reck <jreck@google.com> Remove invalid usage of DisplayList.isValid()

Bug: 13324734

Editor was using isValid as a mechanism to track whether or not it
needed to re-record the DisplayList. This is not correct as isValid()
is not a general-purpose dirty bit. Add an explicit dirty bit for
Editor to use instead

Change-Id: I5608b151791870fca3681056b5507bd39ee48f52
/frameworks/base/core/java/android/widget/Editor.java
44fd8d24f761f82d21e9b00932648a1b6bf91449 26-Feb-2014 John Reck <jreck@google.com> DisplayList overhaul

Change-Id: I53418d580c98f706e971545cff81b9921c12cc5f
/frameworks/base/core/java/android/widget/Editor.java
8eea3ea5591e59f55cbb4f6b2b7e9363a285ced3 04-Feb-2014 Alan Viverette <alanv@google.com> Add APIs for obtaining themed Drawable from Theme, Context

BUG: 12611005
Change-Id: Ic0057be4e4c2d0c61ce02a019b3f7d0625e3a016
/frameworks/base/core/java/android/widget/Editor.java
dcd8258e2447afacb6d6f793c2cfb7ad94d2acec 06-Jan-2014 Raph Levien <raph@google.com> am 971003c9: am ece5bc9d: am 7b6b85d2: am d7d07498: am a980c7aa: Merge "Re-initialize error after attach"

* commit '971003c9ffc854f4b080af902457e7a6447f692a':
Re-initialize error after attach
f4ecc55657c535b8b2d7113095903b3808e903e9 13-Aug-2013 Daniel 2 Olofsson <daniel2.olofsson@sonymobile.com> Re-initialize error after attach

If flag for error after attach is not reinitialized, it may cause
NullPointerException on subsequent onAttachedWindow if error text
was reset to null.

Change-Id: I8976c28a6ca71017e5c4b3f29d4eeeb2eda48c38
/frameworks/base/core/java/android/widget/Editor.java
6090995951c6e2e4dcf38102f01793f8a94166e1 19-Nov-2013 John Spurlock <jspurlock@google.com> Remove unused imports from frameworks/base.

Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
/frameworks/base/core/java/android/widget/Editor.java
339f901ba65d6b8478b6d7680cfb2f5421e42d9b 06-Nov-2013 John Reck <jreck@google.com> Cleanups

Simplify DisplayList creation
Remove unnecessary debug code

Change-Id: I310c9196485c6bf65a6793669bd2dc2b9a8a0a15
/frameworks/base/core/java/android/widget/Editor.java
f3bd8d4843dc811a29854bdb11ce6ea2b2834e9c 14-Oct-2013 Victoria Lease <violets@google.com> am 4c4a469c: am 677687c2: am edbab7b5: Merge "no layout = no visibility" into klp-dev

* commit '4c4a469cbfe61f50c23b70d8b2e63f7b661745c7':
no layout = no visibility
b9b77aecf22307300bbf923fbde39422c8c12e80 14-Oct-2013 Victoria Lease <violets@google.com> no layout = no visibility

This fixes an Editor crash when the associated TextView's Layout
is null.

Bug: 11165608
Change-Id: I061c0db6eef95bf39a7696ad6e6f919bd22bfb11
/frameworks/base/core/java/android/widget/Editor.java
65e1772d6b815b5f610a5faa641efd3358c20d8f 25-Sep-2013 Jean Chalard <jchalard@google.com> am 424054ba: am 6a1e32ef: Merge "Don\'t change the text in reaction to a user dict add" into klp-dev

* commit '424054ba621738452b0bae69dcd6a8372ca5c273':
Don't change the text in reaction to a user dict add
0995398e734bd66ee04b60939ec7c74548148952 12-Sep-2013 Jean Chalard <jchalard@google.com> Don't change the text in reaction to a user dict add

This is a confusing interface. The user should be able
to edit the word in the dialog, and the text should be
unchanged.

Bug: 9902905
Change-Id: I24e93df37583f6051046fd6a84a4cbb10d99c046
/frameworks/base/core/java/android/widget/Editor.java
617feb99a06e7ffb3894e86a286bf30e085f321a 10-Sep-2013 Alan Viverette <alanv@google.com> Add View constructor that supplies a default style resource

Also updates the constructor of every class that extends View.

BUG: 10676369
Change-Id: Ifaf27bf82028d180afa4931c0e906df88d858ac3
/frameworks/base/core/java/android/widget/Editor.java
d7429c15e6f4dd9a43b81d94a1bbf65b17d46a16 05-Jun-2013 Satoshi Kataoka <satok@google.com> Fix an issue where "SuggestionSpan"s are not removed properly

Basically, the root cause of this issue is a lack of an expected implementation.
This change completes the spec of the architecture to remove modified "SuggestionSpan"s.

Bug: 9190860
Change-Id: I63f2ccf3407ae7c1bc28813e044b8703e2112f34
/frameworks/base/core/java/android/widget/Editor.java
3aa49b6fece334ace7525d42c1f6d0b7cdc1fbfb 27-Apr-2013 Dianne Hackborn <hackbod@google.com> New UndoManager.

Basic implementation of an undo manager. Supports
multi-level undo/redo, building on the top undo state
as edits occur, managing multiple distinct entities in
the undo state (such as embedded objects in a document),
and saving/restoring the full undo state. Still some
work remaining on correctly dealing with dependencies
between undo states that hold multiple owners.

Also do a simple implementation of undo state in TextView
to see how things actually work. The implementation here
is very primitive: it needs a lot more work to correctly
identify when to merge undo ops, is not trying to do
anything smart with style spans, etc.

Change-Id: Ie30f4e133351e2f569ffb48c6c44a2b19cadee27
/frameworks/base/core/java/android/widget/Editor.java
684634144b15e4da0ed04baa2c4531ef538652a6 21-Apr-2013 Chet Haase <chet@google.com> am 371d4ccc: am 339ac854: Merge "Fix quickReject logic to account for setClipChildren() setting" into jb-mr2-dev

* commit '371d4cccde56ec4d26e51f8e82ef68f196169a3d':
Fix quickReject logic to account for setClipChildren() setting
dd671599bed9d3ca28e2c744e8c224e1e15bc914 19-Apr-2013 Chet Haase <chet@google.com> Fix quickReject logic to account for setClipChildren() setting

The rendering code optimizes by rejecting drawing operations that
lie outside of the bounds of their views. This works in most
situations, but breaks down when containers have called
setClipChildren(false), because we reject drawing that is outside
of that container, but which should be drawn anyway.

Fix is to pass in the value of that flag to the DisplayList drawing
routines which take that flag into account when deciding whether
to quickReject any particular operation.

Issue #8659277 animation clipping

Change-Id: Ief568e4db01b533a97b3c5ea5ad777c03c0eea71
/frameworks/base/core/java/android/widget/Editor.java
0d84e725667315fc9ccb70b93b26ba40b7653285 19-Mar-2013 Fabrice Di Meglio <fdimeglio@google.com> am 430058f2: am 2d18e52b: Merge "Fix bug #8335710 TextView can\'t clear CompoundDrawables" into jb-mr2-dev

* commit '430058f2699041e86d7c0e50cad1fa6989d08cab':
Fix bug #8335710 TextView can't clear CompoundDrawables
f7a5cdfac62cf2335f192581ca299d241d83e195 15-Mar-2013 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #8335710 TextView can't clear CompoundDrawables

- fix start/override mechanism
- take care of RTL compatibility mode (pre JB-MR1)
- fix where reset of drawables resolution needs to happen

Change-Id: I55a69487a0eedee14c4be7006ee0abad085200ad
/frameworks/base/core/java/android/widget/Editor.java
c99d33fb4dcf332b66281a0a6a31710407fc829d 01-Mar-2013 Jean Chalard <jchalard@google.com> Actually change the place where updateSelection is called

Call updateSelection in endBatchEdit instead of onDraw.
This works because all edits go through a batch edit,
which is already the case although the next change will
enforce it going forward.
This is step 3 of a four-step refactoring.

Bug: 8000119
Change-Id: Ia5e257382e2ef2168726bf3d9c7c84f9379ba376
/frameworks/base/core/java/android/widget/Editor.java
baf3094ecaa073e1cb3e807fa17d096f826c3968 01-Mar-2013 Jean Chalard <jchalard@google.com> Add a SpanWatcher to catch programmatic selection changes

When the selection is set via Selection#setSelection, the
Editor needs to know so that it can call back to a bound
IME, if any. This adds a watcher to catch these events.
This is step 2 of a four-step refactoring.

Bug: 8000119
Change-Id: Ia01aee853d5cafb4820fd234bc24b587ad3f7dd0
/frameworks/base/core/java/android/widget/Editor.java
df7c72f68c2fe32546aa119e98be9acf8fffd66d 01-Mar-2013 Jean Chalard <jchalard@google.com> Initial refactoring to move updateSelection to a better place

This is step 1 of a four-step change which will move where
updateSelection is called in regular text fields. The new
behavior will be to call it for each actual batch of
changes, instead of doing it in the render loop which leads
to both false positives and true negatives.

Bug: 8000119

Change-Id: I17bd91a129b18d5451fe1d8e7794ae20165de309
/frameworks/base/core/java/android/widget/Editor.java
1b15ba5d194c1db71d0a34ee110bd1ab169c8a29 20-Feb-2013 Luca Zanolin <zano@google.com> Resubmitting "Enable correction/deleting notification via EasyEditSpan.""

Re-run "make update-api"

Original CL Ic227b8fd50066699915f69a54f225fb5330867c4

Change-Id: Ifb1a0f61801c544b01193435fbfdedd7f3888971
/frameworks/base/core/java/android/widget/Editor.java
1b916301e044d1f6f672c9708c993090ecdf30cf 20-Feb-2013 Luca Zanolin <zano@google.com> Revert "Enable correction/deleting notification via EasyEditSpan."

This reverts commit 8cd8135b95da5b471804604b06084eecbe1cc23b

Change-Id: I6361cc47d58281ab37cb9ae0a67541b43f873147
/frameworks/base/core/java/android/widget/Editor.java
8cd8135b95da5b471804604b06084eecbe1cc23b 14-Feb-2013 Luca Zanolin <zano@google.com> Enable correction/deleting notification via EasyEditSpan.

When the "delete" pop-up is clicked (and the wrapped text removed), the
creator of the span will receive a notification of the action.

Similarly, if the user modifies (i.e., add/remove a char), the creator of
the span will receive a notification too. The notification will not contain any
information about how the text has been modified.


Bug: 6905960
Change-Id: Ic227b8fd50066699915f69a54f225fb5330867c4
/frameworks/base/core/java/android/widget/Editor.java
52036b19a5f82bc4d75cfcbff99c65df8d25a99b 15-Feb-2013 Romain Guy <romainguy@google.com> Expose display list APIs

The exposed APIs are slightly simpler than the full APIs used internally.
Only APIs useful to applications are exposed.

Change-Id: Ie03014628d40ad5ef63dedbc52ce3def84429d54
/frameworks/base/core/java/android/widget/Editor.java
9122187fca67c7509ba2a040b602f67928fc9a98 28-Jan-2013 Adam Powell <adamp@android.com> am bb74d8b9: am 783fe429: am e305e5f6: Merge "show SELECT ALL icon with text in landscape mode"

# By Sungmin Choi
# Via Android Git Automerger (2) and others
* commit 'bb74d8b9f632bdda2f5639a9516a83f58374b936':
show SELECT ALL icon with text in landscape mode
783fe4295372cee8d024388221414c253802c995 28-Jan-2013 Adam Powell <adamp@android.com> am e305e5f6: Merge "show SELECT ALL icon with text in landscape mode"

# By Sungmin Choi
# Via Gerrit Code Review (1) and Sungmin Choi (1)
* commit 'e305e5f68df8338cb3c4bdcf099d23ec9abce564':
show SELECT ALL icon with text in landscape mode
f036920669f933c05ac43a8e0ea6cb1a4e35275a 25-Jan-2013 Sungmin Choi <sungmin.choi@lge.com> show SELECT ALL icon with text in landscape mode

Though set config_allowActionMenuItemTextWithIcon as true,
icon for the "SELECT ALL" menu on ActionBar is not shown as staring
in landscape mode.
To fix it, use "SELECT ALL" icon in onCreateActionMode() to show the
icon and text together.

To show or hide text is decided by updateTextButtonVisibility() of
core/java/com/android/internal/view/menu/ActionMenuItemView.java

STEPS TO REPRODUCE: (please be specific)
1. launch Browser/Chrome and go to google.com
2. rotate to landscape mode
3. long press on URL address

Bug: 8073761
Change-Id: Ie0e0aa45f0dff609ed8c03e4423b163bad5452ed
/frameworks/base/core/java/android/widget/Editor.java
955beb2b96a78cf6ee990d0f20bcaf2d22ce608b 10-Dec-2012 Sangkyu Lee <sk82.lee@lge.com> Optimize drawHardwareAccelerated method in Editor class

When inserting a new line or breaking a line,
every display list was invalidated and rebuilt before.
However, we can reuse the display lists above intactly and also
reuse the display lists below with only updating drawing locations.

This patch reuses the display lists if possible.
The display lists above the inserted line are just reused
and the display lists below are reused with only updating
drawing locations not fullly rebuilt.

mIndexOfFirstChangedBlock is the index of the first block
which is moved by inserting or breaking a line.
So the display list whose index is >= mIndexOfFirstChangedBlock
only needs to update its drawing location.

Change-Id: Ica20deb0ebb5750de21356ed31fa9f86e657ff92
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>
/frameworks/base/core/java/android/widget/Editor.java
afe8e9b6d033cb854afa3024d8198a32896a804a 20-Dec-2012 Raph Levien <raph@google.com> Suppress horizontal scrolling with trailing blanks

The existing behavior of EditText is that trailing blanks can cause a
line to exceed the layout width, causing the cursor to extend past the
line, which in turn causes horizontal scrolling. This patch clamps the
cursor to the layout width in the non-scrolling case, which makes the
spaces effectively invisible when they're at the end of the line, but at
least suppresses the scrolling.

The clamping only works reliably in left-to-right alignments, so this
patch checks for than and only enables the clamping in those cases.

Fix for bug 7699295.

Change-Id: I22bc4e6c9ded3d7716edfcf10dd2b5c31a5da9de
/frameworks/base/core/java/android/widget/Editor.java
ab989ac313a996280aec61183636e3fb9ac21d9d 17-Dec-2012 Sascha Prueter <saschap@google.com> am 8149820c: am 25458528: am dd2ed93e: Merge "Handle "CODE_ALREADY_PRESENT" message from Settings app" into jb-mr1.1-dev

* commit '8149820c2b2df47028498571785ca009d99b5dc9':
Handle "CODE_ALREADY_PRESENT" message from Settings app
6bad2f2fefc44830e6e7019886a6fde42bec7223 17-Dec-2012 satok <satok@google.com> Handle "CODE_ALREADY_PRESENT" message from Settings app

Bug: 7725834
Change-Id: I85c35e73978d606edf9687e2de76c6ffc3c3ee2b
/frameworks/base/core/java/android/widget/Editor.java
40efbd40606fc31863d3de90f062db431ba7fb47 14-Dec-2012 Mike Cleron <mcleron@google.com> am 323bb07f: am a5a4eb0f: am 6b922cc6: Merge "Receive a user dictionary callback from Settings application" into jb-mr1.1-dev

* commit '323bb07f762e5373f90e758a1146b93a3c31fe17':
Receive a user dictionary callback from Settings application
0e3849af4775debf376317d70450e70976825f6d 13-Dec-2012 Satoshi Kataoka <satok@google.com> Receive a user dictionary callback from Settings application

Bug: 7725834

The callback is sent when the user adds a word to the user dictionary.

Change-Id: Ieee9bfd50a9adbed1a769e3cd95d9cb2815c34b4
/frameworks/base/core/java/android/widget/Editor.java
742524b2169b5b5726e7b27fcd1673dabca62099 20-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> am 3ee47400: am 95263ef3: am 4d931acd: Merge "Fix for bug #7417949 TextView / EditText error Drawable is not put on the left in RTL mode" into jb-mr1.1-dev

* commit '3ee4740009b0e217ee0f6de0f86f2f557b175dea':
Fix for bug #7417949 TextView / EditText error Drawable is not put on the left in RTL mode
bb0cbae441f04c052dd1a73448ae58fbffaca65d 14-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix for bug #7417949 TextView / EditText error Drawable is not put on the left in RTL mode

- keep the Error Drawable infos into the Drawables cache
- reset left/right Drawable state before resolving where to put the Error Drawable
- get the mirrored Drawable for the Error popup background
- set the Error popup position depending on the layout direction (so that the "triangle"
of the background is pointing to the middle of the Error icon)

One restriction: we load the Error popup background Drawable corresponding to the layout
direction of the System Locale. So if you set the Layout direction on a TextView (or
an EditText) to RTL and set an error to it when you are in a RTL System Locale, then you
see that the background "triangle" is not pointing to the Error icon. This is working as
intended as the AssetManager load the Drawable resource depending on the configuration
which is in that case the RTL one thus loading the RTL version of the background (and not
the LTR one).

Thus there can be a discrepancy between the "layout direction" of the TextView
and the one from the Error popup background. This would happen only thru using the SDK and
not in a normal case when running an App.

Change-Id: I91bbfbe46ac20efe0e585c5d4c766db23b5c709d
/frameworks/base/core/java/android/widget/Editor.java
7a12433390470ce8ae1eda2ed7578f513abc75ad 13-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> am bb67d486: am a97f5b8c: am 9d82d324: Merge "Fix bug #7457897 Error icons are not shown in credit card entry form" into jb-mr1.1-dev

* commit 'bb67d48606afdeb34fc488fb16f18c136eb49ec8':
Fix bug #7457897 Error icons are not shown in credit card entry form
5acc379c5488e846093efd2347d408069509830a 12-Nov-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7457897 Error icons are not shown in credit card entry form

- fix regression: the error icon was no more showing is the widget was not focused

Change-Id: I24cc00a0cb79d38e365d413f9820b5a6981de4f4
/frameworks/base/core/java/android/widget/Editor.java
18d9a269411a5ac1431cb86949b101987ae3242e 08-Nov-2012 Romain Guy <romainguy@google.com> am a965fc5e: am b37e5d75: am 7b9b41c1: am 1b3b2544: Merge "Dismiss error icon on setError(null) [regression] Bug #7442935" into jb-mr1-dev

* commit 'a965fc5e8f0c84cbeeaae7006eddbaf3bba64586':
Dismiss error icon on setError(null) [regression] Bug #7442935
d1cc1878cc7a07c794feec51c840fd566f59d523 06-Nov-2012 Romain Guy <romainguy@google.com> Dismiss error icon on setError(null) [regression]
Bug #7442935

Change-Id: I783d868173637007be326e20795cbb4cb8c7b899
/frameworks/base/core/java/android/widget/Editor.java
5fc949d0ae051f05437858d911ebf12d3a6fbead 02-Nov-2012 Raph Levien <raph@google.com> am e5a4e92f: am fd06d34c: am d9134e7a: Merge "Revert partial RTL\'ization of Editor.setError()" into jb-mr1-dev

* commit 'e5a4e92f175e7a776ba4703a09b68de562060e1f':
Revert partial RTL'ization of Editor.setError()
f58f1b9d41a5cfc2614b836417b7fee7e6d241b6 02-Nov-2012 Raph Levien <raph@google.com> Revert partial RTL'ization of Editor.setError()

The conversion of the error indication on Editor to RTL-aware was only
partially completed, and was causing bugs such as an error indication
failing to appear when set (bug 7457897).

This patch reverts these changes and just always sets the error drawable
on the right. This fixes the above bug, and also makes the error
drawable position always consistent with the error popup (before, in an
RTL layout direction, the popup would be on the right and the drawable
on the left).

Making the error display fully RTL-aware should be done as future work.

Change-Id: Icaee91210454ed9056e7200520d9275303de02ca
/frameworks/base/core/java/android/widget/Editor.java
46e62fe39874abf2a9bdfab7635df98011c03cd1 30-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> am 024e70c8: am dd80335e: am 07ce0ca2: Merge "Fix bug #7419054 TextView Drawables resolution is broken in RTL mode" into jb-mr1-dev

* commit '024e70c8156a0fa2d702ff2fba4a38c1f6b68f98':
Fix bug #7419054 TextView Drawables resolution is broken in RTL mode
1957d281ea123e4925e51fa5ad22ce239ef2a07d 26-Oct-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7419054 TextView Drawables resolution is broken in RTL mode

- check layout direction previous value in the onResolveDrawables(int) callback
- dont do any Drawables resolution if we cannot resolve the layout direction
- also remove unnecessary call to resolveRtlPropertiesIfNeeded() in ViewGroup when
adding a child as the call to resolveRtlPropertiesIfNeeded() will be done into
the measure() call itself later

Change-Id: I62237af3d307dfea203f7f2865551d1c61a0e0b8
/frameworks/base/core/java/android/widget/Editor.java
5d96964fb5ec8125b984ba84e2f9acb4a9255f0d 03-Oct-2012 Raph Levien <raph@google.com> am 11541338: am e9b175b7: am 484de9db: Merge "Fix for bug 6954231 text wraps on second line and is fused..." into jb-mr1-dev

* commit '11541338c5c0db1181107aef8f96c398d8445fd4':
Fix for bug 6954231 text wraps on second line and is fused...
6b558994d4ea8dfa1967f96e272496a7d2b8972a 03-Oct-2012 Raph Levien <raph@google.com> Fix for bug 6954231 text wraps on second line and is fused...

When breaking a line, the paragraphs below the new line break were still
being drawn in their old location. This only happened when the height
was fill_parent, otherwise the height change would force a relayout,
which in turn would do a full invalidation.

This patch checks for changes to the layout height (not just the widget
height, which won't change when it's fill_parent), and invalidates.

Change-Id: I64adb9f5eae0479c1c9c8d37c10c2c27a6f582a8
/frameworks/base/core/java/android/widget/Editor.java
525926078b5f4b9eeceb21662cdebe763f4c5b45 24-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> am 72d65718: am 239e4305: Merge "Fix bug #6427629 Clean up layout direction APIs" into jb-mr1-dev

* commit '72d657182312c7bac049b3ed94a4658c3935ae28':
Fix bug #6427629 Clean up layout direction APIs
e56ffdc7b31b0937628609cc3bbaa15879023569 23-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6427629 Clean up layout direction APIs

- rename getResolvedLayoutDirection() to getLayoutDirection()

Change-Id: I3afe56c0db0751952f5056c23893cb7455531d29
/frameworks/base/core/java/android/widget/Editor.java
b19f313e259eea7f10753cf69f10950ec45155ca 18-Sep-2012 Victoria Lease <violets@google.com> am 976ed471: am d6991106: Merge "Avert crash when dragging text in same TextView" into jb-mr1-dev

* commit '976ed4711ef5fc943ad94a8cbb251cd5feb34cde':
Avert crash when dragging text in same TextView
91373209da02813ed760d9ea201d6f917e2a1fc1 08-Sep-2012 Victoria Lease <violets@google.com> Avert crash when dragging text in same TextView

The previous implementation made liberal assumptions about the size
of the string being edited, as well as the position of the substring
being dragged. Explicitly checking those assumptions fixes our
IndexOutOfBoundsException.

Bug: 7129392
Change-Id: I32560cf87fbbe703a8b26c7eb2a64c8f8c0bfcf1
/frameworks/base/core/java/android/widget/Editor.java
0c96b81f8e843b8d6e8c21218fb468f1897b999b 29-Aug-2012 Luca Zanolin <zano@google.com> Relax suggestion notification.

Before the suggestion selection were notified only when they were added by
an IME. This CL relaxes this constrain, and the suggestion are notified
even if they are added by an application.

If the context is null and the package name of the apk cannot be determined,
the suggestion are notified using the old method via the Input Method Manager.
This is required to keep the backward compatibility.

Bug: 6905960
Change-Id: If225ef27cded386809fbd899e34e32aced4e0473
/frameworks/base/core/java/android/widget/Editor.java
58cf576243d17b34c0bd3e0aead48cae00c089c0 02-Jul-2012 Gilles Debunne <debunne@google.com> Merge "UI changes in suggestion menu"
1daba18747782588ee7f486d0ba4033438429302 26-Jun-2012 Gilles Debunne <debunne@google.com> UI changes in suggestion menu

Icons removed for delete and add to dictionary.
Words capitalized (in English only)
Changed background color to white for words.

Note that due to a bug in the interaction between listView and
popup window, setting a background to the TextViews paints a
solid rectangle, which hides the rounded corners defined in
the popup window background.

Bug 6712892

Change-Id: Id5bb429463e2debc5e30d571c34426dfa82119d4
/frameworks/base/core/java/android/widget/Editor.java
c72fba82a68992fe5bec05e4415ae98deaa66ea3 26-Jun-2012 Gilles Debunne <debunne@google.com> Ensure batch edit mode is ended on window focus loss

This is a translation of this open source contribution:
https://android-review.googlesource.com/38503

Change-Id: I4d3adf89d0752e6fd5ec2cdad3a54d4e764a1fe7
/frameworks/base/core/java/android/widget/Editor.java
0ed59fae6fc85c2c4a223d3be88b79cf797908ab 30-May-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #6567507 [Bidi] - Cursor is sometimes not visible on EditText

- take the hint layout primary horizontal offset if needed

Change-Id: Ib5c4dd990278e1fd8bb9ba4f4b6940a62dba91e3
/frameworks/base/core/java/android/widget/Editor.java
057a585fba01d92c38f27a8c080622dfd0c6f556 11-May-2012 Adam Powell <adamp@google.com> Automatic persistent text selection for ListViews

Use View transient state tracking to allow selection to persist across
ListView-style item view recycling.

Fix some bugs with transient state tracking.

Bug 6110122

Change-Id: Ic084b8fc2289bff718b19478a37ce64459b3ed4c
/frameworks/base/core/java/android/widget/Editor.java
fd5bc01f70c8d9270162d38bb9f675308b5a19b0 24-Apr-2012 Gilles Debunne <debunne@google.com> Better horizontal internal scroll handling in Text.

Bug 6378843

Corrects CL 183460, which would clip text with a width greater than
twice the TextView's width.

Internal horizontal translation is now handled in a similar way to
vertical scrolling.

Internal scrolling is indeed handled by the TextView, which translates
the canvas and sets the clipping bounds accordingly.

When drawing the internal DL, we tighten the horizontal bounds like we
did for the vertical bounds using top and bottom. As in Touch.java, we
use the getHorizontallyScrolling() method to know if we indeed have to
measure the actual text width. If there is no horizontal scrolling we
use the TextView's width as a safe upper estimate in order to avoid an
actual computation. Note that horizontal scrolling is typically only
used for long single-lined text, so that the measurement loop is quick.

As a result, the internal DLs represent the entire text, and there is no
need to invalidate them when an internal scrolling takes place. This
behavior replaces the draw-only-what-is-needed we had before, but is
more consistent with what we do for long texts inside of a ScrollView
with no noticeable performance change, even on very long text.

Change-Id: I47c24c0ae988547d4f1e9f87d136225c93a3056d
/frameworks/base/core/java/android/widget/Editor.java
0b7d747e900dd9e6e6f62f10772c2dded9b9d0c6 24-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Editor uses a SpanWatcher to track EasyEditSpans"
8b482446683e4908e6a71da42301291a0a399932 24-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Centered text is not updated"
c62589cbecef6e748bcc6c6f4ea6a8ff7656923f 12-Apr-2012 Gilles Debunne <debunne@google.com> Editor uses a SpanWatcher to track EasyEditSpans

Will also fix Bug 6344997

The previous TextWatcher mechanism was inneficient. It require an
expensive getSpans() call to retrieve all the spans and then search
for the one we're interested in in case it has been changed.

The SpanWatcher is faster, it will broadcast the add/changed/removed
events we're interested in.

Now that we can rely on SpanWatcher, use it to directly track
addition and removals of EasyEditSpans.

No unit test for this feature which require an integration with
the voice IME. Easy to test manually though.

Change-Id: Idabcacc48c479bf9868d5204c0b0ca709207ede2
/frameworks/base/core/java/android/widget/Editor.java
fb9f5be318e4f530eff9964702cfb655a6433f00 24-Apr-2012 Gilles Debunne <debunne@google.com> Centered text is not updated

Bug 6378843

Emergency fix. May submit a proper fix with less translations later.

Change-Id: I9d8348e29d5436580202d3ee0456d341bf81dab8
/frameworks/base/core/java/android/widget/Editor.java
b983e27af47b6a3a6b13af0d3dd64b163f540efd 24-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Re-added a flag to prevent the IME from showing"
1271e2cc80b01d577e9db339459ef0222bb9320d 20-Apr-2012 Chet Haase <chet@google.com> Remove USE_DISPLAY_LIST_PROPERTIES flag

This flag was still hanging around pending any need to disable
DisplayList properties. But things seem stable, so it's time to clean up
and simplify the code.

At the same time, I reduced redundance in DisplayList dimensions. We
used to call drawDisplayList() with width/height parameters that were
used to do a clip reject. This is redundant with the DisplayList properties
that set the bounds of the DisplayList; the left/right and top/bottom properties
represent the same width/height properties formerly used in drawDisplayList().
The new approach is to not pass dimensions to drawDisplayList(), but to
instead pull those dimensions directly from the DisplayList when needed.

Change-Id: I8871beff03b1d4be95f7c6e079c31a71d31e0c56
/frameworks/base/core/java/android/widget/Editor.java
de09576f4910f36f63275683870a067054d51428 23-Apr-2012 Gilles Debunne <debunne@google.com> Merge "Cursor is moved at end of word when it is added to dictionary"
3473b2b1f495f0f5a31e7ed687557c423c63abff 21-Apr-2012 Gilles Debunne <debunne@google.com> Re-added a flag to prevent the IME from showing

Revert of CL 161404

This flag will be used by the dialer. It prevents any IME from
showing as a result of a focus given to a TextView through a tap
or a D-Pad click.

Change-Id: Ifa5bfcbff124b300780f76dea443d26cf172f5e3
/frameworks/base/core/java/android/widget/Editor.java
ebc86af1dc186c77f723c8970951e8ff00b4866b 21-Apr-2012 Gilles Debunne <debunne@google.com> Visible spans changes only invalidate the affected text sub display lists

When a span with a visible influence on the text is modified, we only
need to invalidate the text sub display lists that overlap this span.

This is especially useful when typing and the composing span (an underline
span) gets updated after each key stroke.

Change-Id: Ib2af3219c41eb79ec5d0a2eee317aca8c4efdef9
/frameworks/base/core/java/android/widget/Editor.java
2eb70fb257623de7d32e8c1a878f4c03b71846d1 19-Apr-2012 Gilles Debunne <debunne@google.com> Cursor is moved at end of word when it is added to dictionary

Bug 6355904

Change-Id: Ib56b719d0c3001ce975bccf8dd80c138bffc24cc
/frameworks/base/core/java/android/widget/Editor.java
157aafcbee0eabda798a3be406ccc4200ee86756 20-Apr-2012 Gilles Debunne <debunne@google.com> TextView's sub display lists have tighten bounds

An editable TextView caches text rendering inside an adaptive
number of sub display lists. The bounds of these use to be those
of the entire View.

This CL creates block display lists with tighten bounds, so that
(a still-to-be-implemented) quick rejection can occur.

Also cleaned-up the contradictory translations that were used to
handle the TextView's internal scroll and removed the invalidation
of display lists in that case.

TODO: When internal scroll sets a tighter clipping rect, quick
reject the creation and display of the clipped display lists.

Also renamed blockEnds to a more explicit blockEndLines.

Change-Id: I7d79bea78d06d19b6935aef75ff7aa7df2594050
/frameworks/base/core/java/android/widget/Editor.java
acb69bb909d098cea284df47d794c17171d84c91 14-Apr-2012 Dianne Hackborn <hackbod@google.com> Add direct support for HTML formatted text in ClipData etc.

When using the clipboard, ACTION_SEND, etc., you can now supply
HTML formatted text as one of the representations. This is exposed
as a set of methods on ClipData for building items with HTML
formatted text, and retrieving and coercing to HTML (and styled)
text. In addtion, there is a new EXTRA_HTML_TEXT for interoperating
with the old ACTION_SEND protocol.

Change-Id: I8846520a480c8a5f829ec1e693aeebd425ac170d
/frameworks/base/core/java/android/widget/Editor.java
cfbf0e0296acd4c3451591ec4b241e393fb9bd8a 04-Apr-2012 Gilles Debunne <debunne@google.com> Removed spurious log about blinking cursor

Change-Id: I940c3847bb6e461178575480c82e7dd6739277cf
/frameworks/base/core/java/android/widget/Editor.java
d88876a72f9ceebd2c93eb9ba1be4bcff971e754 17-Mar-2012 Gilles Debunne <debunne@google.com> Extracted text editing logic in a separate class

Editor specific method and fields are extracted to a dedicated Editor class.

Some private fields and methods had to be made package private so that the
Editor can see them. No change in the public API.

Other changes in this CL:
- The Blink class no longer has a WeakReference to the TextView
- EasyEditSpanController is no longer a field of ChangeWatcher.

Future work:
remove the getEditor() method in TextView and
clean whitespaces and indentation.
remove the EasyEditSpanController as a change watcher, fix spanWatcher

Change-Id: I1fbe0176b6bd27d90f556dc3a90469367f77437c
/frameworks/base/core/java/android/widget/Editor.java