• Home
  • History
  • Annotate
  • only in /frameworks/base/core/java/com/android/internal/view/
History log of /frameworks/base/core/java/com/android/internal/view/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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
loatingActionMode.java
d842533f224280484839b77d016c2e8da697a0ed 27-Feb-2018 Vladislav Kaznacheev <kaznacheev@google.com> Display shortcut modifiers in menu

Prepend relevant meta key names (such as Ctrl+) to the shortcut
displayed in a menu.

Do not prepend "Menu+" if the device does not have a hardware Menu key.

Bug: 31045453
Test: run ApiDemos (MenuInflateFromXml), select "Shortcuts", observe
Ctrl+ prepended to shortcuts.

Change-Id: I1a38bd1baf069dd1adb24a26f89c6db6390b8b8d
(cherry picked from commit 0cc2c6b190695ef78029c7b05a175fb3bb7e4098)
enu/MenuItemImpl.java
bf7cc38d1f0f3e2cf998a5e37305963c6aa3a39f 06-Mar-2018 Vladislav Kaznacheev <kaznacheev@google.com> Display shortcut inline with item title in cascading menu

Bug: 74208750
Test: run android.widget.cts.PopupMenuTest on a large screen device
such as hikey960.

Change-Id: I1c4bca3cfecb012432e6cb89cb4cc0177ccc04f9
enu/CascadingMenuPopup.java
enu/MenuAdapter.java
enu/StandardMenuPopup.java
2b00eaed270ccb0994be03e3f01382cf19734571 07-Mar-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "IME API: rename IMS methods." into pi-dev
ab65025833344b3b55bd146a86d48cabe254a89d 06-Mar-2018 Mike Digman <digman@google.com> Reset user rotate pref on navbar create

System appears in portrait after restart, however rotation
watcher callbacks don't fire leaving user rotate pref stale
from last boot. Reset in onCreate and replace override logic
with policy's natural rotation.

Test: manual
Change-Id: Ia1f1e5f637708e5c678edbb5cbf9f4125e451103
otationPolicy.java
164cfba536644095b962b45379020a792d3c51c8 28-Feb-2018 Tarandeep Singh <tarandeep@google.com> IME API: rename IMS methods.

Incorporating API Review feedback:
* Use IMS.switchInputMethod(id) instead of IMS.setInputMethod()
* Use IMS.switchInputMethod(id, subtypeId) instead of
IMS.setInputMethodAndSubtype()
* Renamed switchToLastInputMethod() to switchToPreviousInputMethod()

Bug: 73954137
Test: atest InputMethodServiceTest
Test: atest CtsInputMethodServiceHostTestCases
Change-Id: I6efd5ca473e33e6faeadb7eea7772b9d2b8ca12b
InputMethodManager.aidl
f8f0c8df7842f88d3a71476f4175dca59d405fa6 04-Mar-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Revert "Introduce InputConnection#reportLanguageHint()""
4397591f3da2aa03a22eeca308a78e1027505228 03-Mar-2018 Yohei Yukawa <yukawa@google.com> Revert "Introduce InputConnection#reportLanguageHint()"

This reverts commit e77386e8fbe01b7fbf1a04555d4088796d862f03 [1].

Reason for revert:
The protocol is not yet ready to be exposed and we are still unsure
what is the best approach.

[1]: Ie86edafd1ed68b58f702116f561fc448fdbb57a8

Bug: 7031513
Bug: 72522601
Fix: 74087970
Test: atest CtsInputMethodTestCases
Change-Id: Ia61dc9b3d5b116199382994430fb16ee804942b3
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
a725df9903122591cc2c1e7ce082a8299567d69e 27-Feb-2018 Vladislav Kaznacheev <kaznacheev@google.com> Add ViewConfiguration.shouldShowMenuShortcutsWhenKeyboardPresent

This method returns config_showMenuShortcutsWhenKeyboardPresent value.
It is necessary for the correct support library implementation of menus.

Bug: 31045453
Test: build and flash Android
Change-Id: Ibdd354b2d00f0c5f5ed91aa4840e942d772516ef
enu/MenuBuilder.java
4d0e87d926d22625d54b26342dba913d2948f8d6 08-Feb-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fix context submenu position"
2f731c5585391e94dc80cbf19ce3fea1b088d322 05-Feb-2018 Tarandeep Singh <tarandeep@google.com> Add new InputBindResult.ResultCode for no editor

Added a new ResultCode.ERROR_NO_EDITOR for case when there is
no focused editor in the current window. This change should've been included
in Ibf9dab3d9c138b5f04e053d41ee4fd248c78e4da

Bug: 37617707
Fixes: 72913821
Test: Manually check logcats for an activity window:
1. with editor focused
2. with edtior available but not focused (e.g. SearchView)
3. with no editor.
Verified that in all cases, InputBindResult isn't null.

Change-Id: I681b8a452dc7104ca294d5388219cea9ab41e160
nputBindResult.java
eb5706183f62b9230fb1ae9eb22254a062e7869c 30-Jan-2018 Tarandeep Singh <tarandeep@google.com> Fix checks for showing InputMethod picker

When user tries to switch IME, IMMS.showInputMethodPickerFromClient()
is called. The call fails to validate in newly introduced
canShowInputMethodPickerLocked() in
I4f0fc21268200c64d12b31ca54416acfbf62f37b because
mCurClient.client != client.

This is happening since the new client never started input ever since
we prevented calls to startInputUncheckedLocked in
Ibf9dab3d9c138b5f04e053d41ee4fd248c78e4da.

The fix is to update mCurFocusedWindowClient.client instead of
mCurclient.client in canShowInputMethodPickerLocked()

Fixes: 72557082
Test: manually using the steps in bug
Test: atest InputMethodManagerTest
Change-Id: I4e21625c32a0ca1abc740229efb3c7fcd97141cc
InputMethodManager.aidl
a6dfa74dc524c4566d8bab08fb870fcfe235ddde 25-Jan-2018 Vladislav Kaznacheev <kaznacheev@google.com> Fix context submenu position

Clear the list of presenters in MenuBuilder when the MenuBuilder
instance is reset via clearAll. This prevents MenuPresenter
instances from accumulating and ensures that a stale instance
MenuPresenter is not activated.

Bug: 72507876
Test: android.view.menu.ContextMenuTest
Change-Id: I4911ca31307bc93901987f08298fa6b2926ba6ab
enu/MenuBuilder.java
0ad372a7e40cb18115b881175430ce7c3cdc65d0 25-Jan-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fix context menu position for RTL"
d959c9d203ea41fede8f6b0a54ebb6ef2790e615 23-Jan-2018 Vladislav Kaznacheev <kaznacheev@google.com> Fix context menu position for RTL

Based on https://android-review.googlesource.com/574843.
Added APCT coverage to verify the fix and prevent regressions.

Bug: 70920189
Test: android.view.menu.ContextMenuTest
Change-Id: I50a7594e864e05bb155de1ff9d721d6d8986aad1
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
e77386e8fbe01b7fbf1a04555d4088796d862f03 23-Jan-2018 Yohei Yukawa <yukawa@google.com> Introduce InputConnection#reportLanguageHint()

The goal of this CL is to introduce a way for IMEs to tell
applications about what languages are likely to be used in the text to
be committed, for IMEs that support dynamic language switching
(especially without relying on InputMethodSubtype).

It is already obvious that InputMethodSubtype is not working well for
this use case. We need is a simple, easy, and back-portable way that
can be widely accepted by the ecosystem.

Bug: 7031513
Test: atest CtsInputMethodTestCases
Change-Id: Ie86edafd1ed68b58f702116f561fc448fdbb57a8
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
492511701f0bbacfe1e6c5e16a5a94bdc7cdfa6e 19-Dec-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Add popup item content to id/content where applicable"
d6558622e8def43f73a1aba8c60ac1c7c0083671 18-Dec-2017 Alan Viverette <alanv@google.com> Add popup item content to id/content where applicable

Change-Id: I828357dcfd5f89851c6801d2f466fd84821697da
Fixes: 68930822
Test: Visual test in Google Maps
enu/ListMenuItemView.java
2553e48886958039f038d4d10cfb0f7f22b3eb5b 16-Dec-2017 Yohei Yukawa <yukawa@google.com> Make IMM more robust for window focus stealing

This CL is a generalized version of my previous CL [1], which addresed
Bug 31056744 where InputMethodManager (IMM) fails to recover from
failure mode when IMMS#startInputOrWindowGainedFocus() failes because
the app's window is no longer eligible to be the IME target.

This CL finally addressed one TODO in that CL. InputBindResult now has
the error code, which allows us to force restart input upon the next
window-focus-in event. This should make IMM much more robust for
that kind of failure modes. For instance, Bug 70629102 is fixed as
demonstrated in a newly added CTS test case [2]. Hopefully this may
also fix Bug 31056744, which we still do not know how to reproduce.

[1]: I60adb38013b063918b074c7b947649eada77b2c8
8e9214b4bd7e6a9d944ad1527199226e575a7530
[2]: I4ea24c87cbbd05e4e68ad7dfafb774c8520188e2

Bug: 31056744
Fixes: 70629102
Test: Added a test case for Bug 70629102
atest CtsInputMethodTestCases
Test: Manually made sure that Bug 28281870 is still fixed:
1. Open app that has EditText.
2. Start Input.
3. Long press the task switch button to start multi-window mode.
4. Tap the EditText that is used in step 2.
5. Make sure that the IME still works as expected
Test: atest CtsViewTestCates
Change-Id: I7572d4b9d678f3669ca54d55718877b145015777
InputMethodManager.aidl
nputBindResult.java
cf68d52ce8f21ab85468e6bc7e977aa68b7ab32d 12-Dec-2017 Yohei Yukawa <yukawa@google.com> SoftInput flag requires focused View to show IME

Historically SOFT_INPUT_STATE_VISIBLE/SOFT_INPUT_STATE_ALWAYS_VISIBLE
have not required focused editor View [1] to work. This is easy to
use, but also easy to tell IMEs to connect to InputConnection, which
is often recognized as a bug by users because often nothing happens
when the user taps the software keyboard.

This would become more obvious when we start allowing nothing to have
focus (Bug 68841055) in Android P.

Although how we should deal with "dummy InputConnection" is still an
open question, ignoring these SoftInput flags for apps that target P+
when there is no focused editor view is probably better than the
current behavior, where non-functional software keyboard is likely to
be shown. The user is still able to show the IME by explicitly tap
the edit field.

As an implementation note, this CL trusts the targetSdkVersion
reported from the target application process, which is in general
unsafe. That said, for this particular purpose it is acceptable.

[1]: focused View that returns true from View#onCheckIsTextEditor().

Bug: 69256929
Test: atest CtsInputMethodTestCases
Test: atest FrameworksCoreTests:com.android.internal.inputmethod.InputMethodUtilsTest
Change-Id: I56682c7dee71d461687b9e80ab746d382fd55e0c
InputMethodManager.aidl
926488d70d09baefee0489537b2915602deaeebf 12-Dec-2017 Yohei Yukawa <yukawa@google.com> Use IBinder#shellCommand() for 'adb shell ime'

This is a preparation CL to add a new command to 'adb shell ime'.

Currently 'ime' command is written in Java language that relies directly
on the internal Binder IPC interface IInputMethodManager.

This is not ideal because:

1. We have to keep maintaining IInputMethodManager methods used
only by the 'ime' command.
2. Adding new options to the 'ime' command is tedious when it
requires new methods in IInputMethodManager.

With this CL, all features of 'ime' command are re-implemented inside
InputMethodManagerService (IMMS) on top of Binder's "shell command"
feature [1]. Like 'am' command was gone recently [2], now 'ime' command
is also a simple shell wrapper to forward options to 'cmd input_method',
which allows us to 1) reduce the code duplication and 2) give non-zero
status code when the command fails with Java exception.

[1]: I76518ea6719d1d08a8ad8722a059c7f5fd86813a
9461b6f91f37fd32207da1bd734d9ea9629eb8e5
[2]: Ia8187196af597046fd2e7092dbf19ce1dc1ea457
1704e3cf0c445512f0a9644485dd3449e874556b

Bug: 70475949
Test: adb shell ime
Test: adb shell ime help
Test: adb shell ime dump
Test: adb shell ime list -a
Test: adb shell cmd input_method
Test: adb shell cmd input_method help
Test: adb shell cmd input_method dump
Test: adb shell cmd input_method list -a
Change-Id: I9a2dbbf1d4494addbe22c82e2c416eedc4d585f2
InputMethodManager.aidl
ab39cc5797ae7d2298b25f543cbb2e175356ebe7 08-Dec-2017 Tarandeep Singh <tarandeep@google.com> Merge "Add support for VR InputMethod."
89a6c48a8b2e54f9b93211c20a126edab0eefe35 21-Nov-2017 Tarandeep Singh <tarandeep@google.com> Add support for VR InputMethod.

This change adds support for VR-only IMEs in InputMethod framework.
In order to set this VR IME, setVrInputMethod(ComponentName) should be
called by VrManager.

When VrManager calls setVrInputMethod(), IMMS changes updates
the selected input method in a transient way i.e. it doesn't
update the Settings or input history. Once VR mode finishes,
it restores last input from settings.

Bug: 63037786
Test: Manually using the sample app in bug.

Change-Id: I1db7981b5198e7e203d4578cae7e5b6d20037d0d
InputMethodManager.aidl
6e15c2a89ae9733d2552d9d0a20504a4bdf69c29 07-Dec-2017 Mike Digman <digman@google.com> Merge "Extend RotationPolicy to lock the screen at a specific rotation"
5c6b6223281e0669e674df3cb489d8544c20fb84 07-Nov-2017 Adrian Roos <roosa@google.com> Display Cutout: Dispatch Cutout from WindowManager

Adds the logic to dispatch a DisplayCutout from DisplayFrames
through WindowState to the View hierarchy. Does however not yet
change how windows are laid out in response to a DisplayCutout.

The display cutout is currently never present, the following CL
will add logic to emulate a display cutout on devices that do
not have a physical one.

Bug: 65689439
Test: runtest -x frameworks/base/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java
Change-Id: Ie4cd4b575755b66a7ffead31e28640983ef4894e
aseIWindow.java
6ca8711b7b1a87aec2ad81bf07663bb54058eaca 06-Dec-2017 Mike Digman <digman@google.com> Extend RotationPolicy to lock the screen at a specific rotation

Test: manual
Change-Id: Ic39fed014d614c4c473f6728dd922ca0f1ad2244
otationPolicy.java
bdd2c25ef69148e52dd406615efbd4e5ad41b335 29-Nov-2017 Vladislav Kaznacheev <kaznacheev@google.com> Fix horizontal position of tooltip in a Dialog

When calculating the horizontal offset, use the top level view's width
instead of getWindowVisibleDisplayFrame (which is misleading for Dialog
windows).

Bug: 69911773
Test: manual
Change-Id: I040917d5beb123cc137da5a0c926a45a12e66234
ooltipPopup.java
7be787876991819db074bca42782840ac20da08c 24-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Skip blocking InputConnection APIs after unbind"
a18447dd4bda74c6500c4705b9eb54af63deaf3b 20-Oct-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "FloatingToolbar updates"
1d113d041f113feabe0ff4cc57205fe8876b9e0b 13-Oct-2017 Tarandeep Singh <tarandeep@google.com> Skip blocking InputConnection APIs after unbind

InputConnectionWrapper has several synchronous methods which have a
timeout. If the application's UI thread hangs, all these synchronous
methods are blocked and IME stays on-screen.

This CL aims to improve the responsiveness of IMEs by rejecting
any blocking calls of InputConnection APIs once
IInputMethod#unbindInput() is issued by InputMethodManagerService
(IMMS).

Currently #unbindInput() is issued only from
IMMS#unbindCurrentClientLocked(), which basically means that the
previous application is losing the IME focus.

Underlying #onUnbindInput() signal is still immediately delivered
to the IME process, but it's just waiting to be consumed on the UI thread.
Hence in theory we can change the behavior of InputConnection seen
from the IME once the signal is delivered to the IME process.

This CL does not interrupt already blocked API calls, which is one of
future work for this scenario. This CL relies on:

A. IInputMethod is marked as oneway
B. IMMS guarantees that IInputMethod#bindInput() and
IInputMethod#unbindInput() are always paired without nesting,
and IInputMethod#startInput() is called 0 or more times only
during that pair.

In this case, the system guarantees that IInputMethod methods
will be called back in the IME process in the same order, and only
one IPC thread is handling those IPCs at the same time. See the
JavaDoc of IBinder#FLAG_ONEWAY for details.

Bug: 36897707
Test: Manual: using the apk in the linked bug:
1. Make sure that a valid InputConnection is established between
the test app and a test IME.
2. Let the test app start blocking the UI thread.
3. Let the test IME call InputConnection#getTextBeforeCursor()
three times.
4. Tap the Home button on the NavBar.
5. Make sure that the test app is immediately dismissed.
6. Make sure that InputConnection#getTextBeforeCursor() starts
returning immediately, once after the initial call was timed-
out after 2 sec (InputConnectionWrapper#MAX_WAIT_TIME_MILLIS)

Change-Id: I0f816c6ca4c5c0664962432b913f074605fedd27
nputConnectionWrapper.java
930328ca97bd1ea6e1d56743712fb937492c34b7 19-Oct-2017 Yohei Yukawa <yukawa@google.com> Annotate threads for some IME handling methods

This is a preparation to work on Bug 36897707.

For instance, the reason why most of IME-related callbacks in
InputMethodService get called on the main thread is because
IInputMethodWrapper keeps forwarding incoming IPCs into the
main looper of the IME process as follows:

InputMethodManagerService (IMMS)
------
-> one-way binder IPCs over IInputMethod
------
-> IInputMethodWrapper (on the binder thread(s))
-> Handler (to dispatch tasks to main thread)
-> InputMethodImpl.* (on the main thread)
-> InputMethodService.* (on the main thread)

By adding explicit annotations such as @BinderThread and @MainThread
in relevant methods, this CL makes that kind of investigation much
easier than before.

Bug: 36897707
Test: compile
Change-Id: I8f9afe9a1986a9fa41fb66fdc64e8f0f67e45c2e
nputConnectionWrapper.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
enu/MenuItemImpl.java
670ceded12e09219c41f4931b23d1baab6ab2fb0 12-Oct-2017 Tun Zheng <peterzheng@google.com> Fix group divider make chrome crash issue.

ListMenuItemView's group divider is only existed in
popup_menu_item_layout, but Chrome use list_menu_item_layout.
It will make NullPointerException and crash the chrome.
Fix it by check null before using the group divider.

Bug: 66987086
Test: Long click an image from webpage in chrome, click the "Download
image" item, and it works well.

Change-Id: Ie5f19194a968b4fff0126e1cf8bebda5344c8105
enu/ListMenuItemView.java
644b2d1f1e7b4b2fa34fc690ed0054f4001cd4e0 29-Aug-2017 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Fix tooltips for views in a popup window" into oc-mr1-dev am: 6a1dad9194
am: 8e8b215272

Change-Id: I34b9b957b47da302d521b64e80d9e16f094e2b34
0b842b465ee1bd09051921901d52107343c368b5 26-Jul-2017 Tarun Lohani <tlohani@google.com> Adding group divider support in Android Menus

Added a divider view in popup_menu_item_layout.
Hiding divider where they are not required in MenuAdapter.

Bug: 32172964
Test: Added test method testGroupDividerEnabledAPI to PopupMenuTest.java
Change-Id: I9cf0e9a72f085336e9f136a7ed17aead0e30760c
enu/ListMenuItemView.java
enu/MenuAdapter.java
enu/MenuBuilder.java
enu/SubMenuBuilder.java
df6ee1ecbe1d452be1f32bae42871722b2f0de3e 23-Aug-2017 Vladislav Kaznacheev <kaznacheev@google.com> Fix tooltips for views in a popup window

The current implementation is using the anchor view's getWindowToken to
construct the TooltipPopup instance. This does not work if the anchor
view is in a popup window.

Using getApplicationWindowToken fixes the problem.

Bug: 64595364
Test: android.view.cts.TooltipTest#testTooltipInPopup
Change-Id: I1a887c9ae6ac00f2412891f316367acfc56cef94
ooltipPopup.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
loatingActionMode.java
dd469d171d7503da3b8602c3ff0317b81792f2c0 16-Jun-2017 Vladislav Kaznacheev <kaznacheev@google.com> Do not update currently open tooltip.

Currently if View.setTooltipText is called while
the tooltip is being shown for that view, it will
update the displayed text. The tooltip then will
resize to wrap around the new text, but not change
its position. This looks confusing if the new text
is significantly shorter or longer.

Removing this functionality until proper
re-positioning is implemented.

Bug: 38491655
Test: android.view.cts.TooltipTest passes
Change-Id: I79689288185888854b992b89e19fe381d3ac50e4
ooltipPopup.java
d85915f78694dc15ee9ca1bbdbccffc183399810 12-Jun-2017 Vladislav Kaznacheev <kaznacheev@google.com> Pass window token when creating a tooltip popup

This allows using tooltips in System UI.

Bug: 62065980
Test: android.view.cts.TooltipTest passes
Change-Id: If0a76d0806aa92efa4be57204c4517242b0ebb99
ooltipPopup.java
7410170ddc2b19d57e33c04217a721a2572d4853 12-Jun-2017 Vladislav Kaznacheev <kaznacheev@google.com> Revert "Use a PopupWindow to show tooltips"

This reverts commit 77e539775b52da55a8b23f1a9765d471ee782013.

Change-Id: Ic4054e0d507ce95ab93282d4da002dd804aeb26d
ooltipPopup.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
enu/MenuItemImpl.java
77e539775b52da55a8b23f1a9765d471ee782013 01-Jun-2017 Manu Cornet <manucornet@google.com> Use a PopupWindow to show tooltips

This allows tooltips to work even in a context where they don't belong
in any activity (and therefore no window token to use). It also
simplifies a tiny bit the logic of how to get the view to show up.

Test: Checked tooltip behavior in and outside an app
Bug: 62065980
Change-Id: I6c02009c4fdd6d4bc4fa2cf8019955360506f0ee
ooltipPopup.java
17293cc8a214e3ad1e86dd0a4999fa86063bf70f 22-May-2017 Abodunrinwa Toki <toki@google.com> Ensure FloatingActionMode has a non-null FloatingToolbar.

Test: none
Bug: 38472422
Change-Id: I8b1844e0cbbff6dedeb0a89536a4bc27535b56df
loatingActionMode.java
101ab58e260e11bf165e1eb00f58761c8657abce 11-May-2017 Peeyush Agarwal <apeeyush@google.com> Fix broken MenuItem coretests

- Fix MenuItemImpl setShortcut bug caused when method signature was
changed after API review
- Remove outdated MenuItem coretests and move others to CTS

Bug: 38114634
Test: Run `cts-tradefed run cts-dev -m CtsViewTestCases -t
android.view.cts.MenuTest`

Change-Id: Iebb7e314cbb3f812fcfeb3f95797f1cf1bcfbae2
(cherry picked from commit d70d2e6efccf186af08289eb5dc5fe1835b753ed)
enu/MenuItemImpl.java
618cfc122d5ac99c673dc4d38761497fcab10962 29-Apr-2017 Vladislav Kaznacheev <kaznacheev@google.com> Fix submenu position when showing with Gravity.END

Bug: 37792927
Test: manual
Change-Id: I2a1033cb5b78465188958d8f24128d0fe082587f
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
51efddbd3bb304de2dd47fa8cd1114ac555958bb 05-Apr-2017 Alan Viverette <alanv@google.com> Remove unnecessary casts on calls to findViewById

Just frameworks/ this time. More paths to come.

Bug: 24137209
Test: make -j32
Change-Id: Iff27abd26fa43296ac2fff8f534fc6742d2ae80c
enu/ListMenuItemView.java
ed7993b5d147a6741d26fe0b16cc9fa5e34ceaee 28-Mar-2017 Jorim Jaggi <jjaggi@google.com> Introduce android.anim thread in system_server

We create a new thread on which everything is running that
directly impacts window animations, i.e. layout, anim tick and
starting window creation. This is such that any work on
android.display can not lead to jank in the window animation,
specifically lock contention on activity manager lock that blocks
callbacks from android.display into AM can not lead to window
animation jank.

Test: Run animation, take systrace, make sure animation is on
android.anim
Test: AppWindowContainerControllerTestTest: AppWindowContainerControllerTestss
Fixes: 36792959

Change-Id: I5d41419a709b7984724e7053a3afdcc1ffe1aaa2
urfaceFlingerVsyncChoreographer.java
d6d6de6da4c7c32babd65c23804d9fdc6eeed740 31-Mar-2017 Jorim Jaggi <jjaggi@google.com> Schedule window animations at vsync-sf

Test: Run window animation, make sure it's smooth
Test: Take systrace, make sure it runs at vsync-tick
Test: Move divider, make sure it's still smooth

Change-Id: I1600618e074be811134fe4ccb1dfbd5034820c71
Fixes: 36583867
urfaceFlingerVsyncChoreographer.java
55807c973bbe6c0694b0a9a0b4dbb8d6e682ba95 24-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Anchor a cascading submenu to its parent menu item"
9d9430e7f79b6e8b390a7e436a1fe398e0e95a11 22-Mar-2017 Evan Rosky <erosky@google.com> Merge "Hooked-up options menu closing"
6eea0d2a4ce20c9709d2cc9c24c823f7ef795c0a 21-Mar-2017 Kirill Grouchnikov <kirillg@google.com> Add support for tinting icon menus

Test: CTS tests in separate CL (same topic)
Bug: 31545315
Change-Id: I8877c77dab9b7b229b4246012b9380beadeb4790
enu/ActionMenuItem.java
enu/MenuItemImpl.java
41823d19b6d1749158fc1643cf0911a8e961c702 21-Mar-2017 Evan Rosky <erosky@google.com> Hooked-up options menu closing

Options menus weren't closing properly from menu-key (with
CascadingMenuPopup) or from Activity.closeOptionsMenu

Bug: 36398283
Test: Added CTS tests: app.ToolbarActionBarTest and
app.ActionBarTest#{testOptionsMenuKey, testOpenOptionsMenu}

Change-Id: I89f8ed249b505f369a85b899ca7c1b36c863f0c0
enu/CascadingMenuPopup.java
446079600ece83b22cb91865bcbeb694292b0108 16-Mar-2017 Andrii Kulian <akulian@google.com> Separate global and override config sent to client

There is some flakiness in View#onConfigurationChanged callback -
if ViewRootImpl receives config update earlier than ActivityThread,
it may not detect the configuration change and skip inner updates.
Also now ViewRootImpl assumes that it receives the global config as
a param, but instead it gets merged config from WM. This means that
ViewRootImpl#sConfigCallbacks was sending incorrect values to the
recipients.

This CL switches to sending global and override configuration to the
client separately. Also in case if there is a corresponding activity,
it first updates it and waits for update callback to ViewRootImpl.
This way global config and override config for activity will always
be set first and resources will be updated before inner state of
ViewRootImpl is updated.

Bug: 35870157
Bug: 34164473
Test: android.server.cts.ActivityManagerDisplayTests
Test: testOnMovedToDisplayCallback
Change-Id: Ic9e7541cf25ecfac6ec90e48f7efb0ece91f657e
aseIWindow.java
b40e61b77c7109c0b4e50167184e9a64cb20018e 07-Mar-2017 Vladislav Kaznacheev <kaznacheev@google.com> Anchor a cascading submenu to its parent menu item

The current implementation of cascading menus is anchoring
a submenu to the top-level anchor view using a carefully
computed offset. This offset is only correct for the case when
the submenu is being shown normally, but not when it is
flipped due to insufficient space below.

More over, when the window containing the anchor is scrolled,
the pre-computed might become completely irrelevant, as
parent menus might change their above/below state.

This CL allows a PopupWindow to be anchored to a view in
another popup window (previously it was only possible to
anchor to a view in the main app window).

Cascading submenu is now tracking its parent item position
correctly.

Bug: 35768002
Test: android.cts.widget.PopupWindowTest.testAnchorInPopup
Change-Id: Id163d739de05729a9fa7e5fedebc9ec0037ed80e
enu/CascadingMenuPopup.java
d5c7dd6da810a6b89151b337bea79fd817e6b72a 08-Mar-2017 Robert Carr <racarr@google.com> Modify SurfaceView to use SurfaceFlinger child surfaces.

Here we have SurfaceView bypass the WindowManager and speak
directly to SurfaceFlinger using child surfaces. We also
implement some logic in the WM to handle child surfaces
in various Surface replacement scenarios.

For those following along in the revert Saga, this
also includes the follow up CLs to the original CL.
- Surface inset calculation
- Animation fixes.

The error causing the revert was an incorrect JNI signature
around deferTransactionUntilSurface. I've noted it inline.

Bug: 28858420
Bug: 31518219
Bug: 34888808
Bug: 35588318
Bug: 35396882
Test: Existing tests still pass (except for the ones that don't and will be deleted).
Change-Id: Ie56b6f7ab16f32d7fc459b8eba26594337ad55de
urfaceCallbackHelper.java
63976669f56ca3be4604af1d0b052566a15ecd2b 08-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Store alphaChar as lower case in MenuItem's implementations"
5aec7b90310ba05f9816fd89030ba41ce48c568e 08-Mar-2017 Wonsik Kim <wonsik@google.com> Revert "Modify SurfaceView to use SurfaceFlinger child surfaces."

This reverts commit cd4aeef88052571365d4e193a2c41e2e6d145491.

Bug: 36027342
Bug: 36015884
Change-Id: Ifd5b69caf64d65a8cd6570b7fe1fb6abe90e30b8
urfaceCallbackHelper.java
2ef1d0cfca010b398fef5b6ee242c110a823bb95 06-Mar-2017 Peeyush Agarwal <apeeyush@google.com> Store alphaChar as lower case in MenuItem's implementations

We should be working with lowercase everywehre (since SHIFT is also a
modifier). Also, in findItemsWithShortcutForKey, we only compare the
character against the lower case version of key pressed (and not the
upper case version).

Bug: 35992521
Test: Manual
Change-Id: I01f24afc5f6c9ef55d477806a64a4a1ec262f28a
enu/ActionMenuItem.java
enu/MenuItemImpl.java
cd4aeef88052571365d4e193a2c41e2e6d145491 03-Mar-2017 Robert Carr <racarr@google.com> Modify SurfaceView to use SurfaceFlinger child surfaces.

Here we have SurfaceView bypass the WindowManager and speak
directly to SurfaceFlinger using child surfaces. We also
implement some logic in the WM to handle child surfaces
in various Surface replacement scenarios.

For those following along in the revert Saga, this
also includes the follow up CLs to the original CL.
- Surface inset calculation
- Animation fixes.

The error causing revert was a deferTransactionUntil(-1)...-1
cast to uint, defer transaction until MAX_UINT.

Bug: 28858420
Bug: 31518219
Bug: 34888808
Bug: 35588318
Bug: 35396882
Test: Existing tests still pass (except for the ones that don't and will be deleted).
Change-Id: Ib37236950a1dd3c4f9f4b58fd41ef9003c0557ef
urfaceCallbackHelper.java
2ff633cbc3368678133ef94fcc7895183f4ce9b8 03-Mar-2017 Rob Carr <racarr@google.com> Merge "Revert "Modify SurfaceView to use SurfaceFlinger child surfaces.""
3896db14751f16f4053e8fa4a82c3d6803054e5b 03-Mar-2017 Jeff Tinker <jtinker@google.com> Revert "Modify SurfaceView to use SurfaceFlinger child surfaces."

This reverts commit 693f3432ae77d1fcfaaf9d168de861192aacb4c4.

P0: When playing encrypted content the Fugu displays a blank screen.

Test: with topic "surfaceview-without-wm" reverted, encrypted playback
works on ToT oc-release. See repro steps in 35917840#12.

bug:35917840

Change-Id: I37fa1e427daff3a1c18ed1c92d035421d891f67c
urfaceCallbackHelper.java
0e06ccf488bb7744709b8f3421f3a5a2f5ae69f7 01-Mar-2017 Rob Carr <racarr@google.com> Merge "Modify SurfaceView to use SurfaceFlinger child surfaces."
5f9ba4e68e46a0753ccd167aee639d632bdacf74 01-Mar-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "More accurate cascading submenu position"
693f3432ae77d1fcfaaf9d168de861192aacb4c4 19-Dec-2016 Robert Carr <racarr@google.com> Modify SurfaceView to use SurfaceFlinger child surfaces.

Here we have SurfaceView bypass the WindowManager and speak
directly to SurfaceFlinger using child surfaces. We also
implement some logic in the WM to handle child surfaces
in various Surface replacement scenarios.

Bug: 28858420
Bug: 31518219
Bug: 34888808
Bug: 35588318
Bug: 35396882
Test: Existing tests still pass (except for the ones that don't and will be deleted).
Change-Id: Icb7259365b51ebe8c7f6c7cd4f9ba29f9fce08a4
urfaceCallbackHelper.java
41ac866961f5aef3db234dd69951f472b5042123 25-Feb-2017 Vladislav Kaznacheev <kaznacheev@google.com> More accurate cascading submenu position

The current submenu positioning logic is based on the assumption
that the parent menu was displayed at the exact offset which was
passed to the framework. The actual parent menu position
could have been adjusted to fit the screen.

Bug: 35767083

Test: manual
Change-Id: Ib72eb7808ebf894c526d2c44c6116ee72542fd03
enu/CascadingMenuPopup.java
2a00f9807c4f447aa9fd4005b40885d80a7b1635 24-Feb-2017 Vladislav Kaznacheev <kaznacheev@google.com> Do not set tooltips on items in list-based menus.

The presence of a tooltip (specifically, long click detection
logic required by it) interferes with touch processing in
AbsListView.

Bug: 35726766
Test: android.cts.widget.PopupTest#testItemViewAttributes
Change-Id: Ida49c07e5f2e3e06f5994f2cc4aa10ef112376d0
enu/ListMenuItemView.java
3dd5fbc569ac67f34e887da5d101e5984ade3945 23-Feb-2017 Yohei Yukawa <yukawa@google.com> Fix an unintentional switch-case fall-through

This is a follow up CL to my previous CL [1], which introduced a
classical fall through bug due to a missing return statement.

[1]: Ic614f112f960382280acd8891b3af56d47679f08
ce82eb2d865e5ee1b69705ca7a0aedd0e92d0d4e

Test: Manually made sure that calling
InputConnection#performPrivateCommand() no longer causes
IllegalStateException("Already recycled.").
Bug: 35079353
Fixes: 35681994
Change-Id: I9aa3c0497385e053718d829aad49495771b22b59
InputConnectionWrapper.java
b047b8bd7e363081e91ba6cbc8d09cd355624584 09-Feb-2017 Andrii Kulian <akulian@google.com> Report move to display for activities that handle config changes

When activity that is moved between displays handles all configuration
changes, it won't be restarted. This CL adds a callback to the client
to notify it about display change. Usually it will be followed by
onConfigurationChanged, except when configuration didn't actually change.
When activity is recreated, it won't receive onMovedToDisplay.

Bug: 34862802
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testOnMovedToDisplayCallback
Change-Id: I9a9501cab788623ada15a31efb53e4b2378639fe
aseIWindow.java
ff54b306de12066a7bf67bd494ca8971d8c4135c 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Merge "Track event flow to IMMS#setImeWindowStatus"
6db3bfe33d92127d203ec872a0b353585a99f256 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Track event flow to IMMS#setImeWindowStatus

This is part of work to introduce historical debugging infrastructure
for Android IME.

In this CL, we will focus on the following two event flows.

A1. IMMS#attachNewInputLocked() queues MSG_(RE)START_INPUT to deliver
new InputConnection/EditorInfo to the current IME
A2. The IME triggers IMS#onStartInput()/IMS#onRestartInput() and
updates the following fields:
- InputMethodService#mStartedInputConnection
- InputMethodService#mInputEditorInfo

B1. IME is expected to call back IMM#setImeWindowStatus() to notify
its window visibility change to IMMS.
B2. IMMS updates the following field if the caller is still the
current IME.
- InputMethodManagerService#mImeWindowVis

What this CL aims to do is to enable IMMS to access A1 state when it
was in B2 state, by considering that for given a B1 the last A2
happened before B1 is the cause of B1 and B2.

To do this, IMMS issues a binder token in A1 and each IME keeps it
so that it can be passed in B1. By using this Binder token as a key,
IMMS can keep tracking state snapshot taken from each A1. Note that
those state snapshots keep alive until the Binder token's proxy in the
IME process loses strong reference from its GC root.

Test: Make sure `adb shell dumpsys input_method | grep mImeWindowVis`
matches to the IME window visibility.
Test: Make sure the current IME is not receiving any
InvalidParameterException from IMMS.
Bug: 35079353
Change-Id: I9921b381e02106dbffff5e0b3d13f0a1245ce807
InputMethod.aidl
InputMethodManager.aidl
0bb700914cb84b53a93252e5904826c104b8d65b 13-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Rely on com.android.internal.os.SomeArgs"
ce82eb2d865e5ee1b69705ca7a0aedd0e92d0d4e 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Rely on com.android.internal.os.SomeArgs

Before introducing new state tracking IDs to IInputConnectionWrapper,
this CL cleans up IInputConnectionWrapper to use
com.android.internal.os.SomeArgs instead of local-defined one in favor
of possible performance improvement thanks to the process grobal
object pool that com.android.internal.os.SomeArgs has.

This is a mechanical refactoring CL. No behavior change is intended.
Test: No new warnings in `adb logcat` from the following TAGs
- IInputConnectionWrapper
- InputMethodManager
- InputMethodManagerService
- InputMethodService
Bug: 35079353
Change-Id: Ic614f112f960382280acd8891b3af56d47679f08
InputConnectionWrapper.java
d2c47843591f196420211722f7c2e3bcd8ace2ee 13-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Hide logspam due to redundant finishComposingText"
77e51831a448b03cbeeea8ea286b1d584dca74d4 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Hide logspam due to redundant finishComposingText

Currently we see two warning messages
"finishComposingText on inactive InputConnection"
"finishComposingText on inactive InputConnection"
every time every time the View focus is switched from one EditText
to another EditText on the same window, which is really spammy.

This is actually not critical if IInputConnectionWrapper was already
finished, because with my previous CL [1] it is guaranteed that
InputConnection#finishComposingText() was already called followed by
InputConnection#closeConnection(), which means that the connection
is closed and should not accept any further requests. Thus ignoring
further #finishComposingText() only means that the system and/or IME
is calling #finishComposingText() unnecessarily, which is worth
showing spammy warnings in production builds.

To reduce logspam this CL hides warnings from the above case behind
DEBUG flag.

[1]: If2a03bc84d318775fd4a197fa43acde086eda442
aaa38c9f1ae019f0fe8c3ba80630f26e582cc89c

Test: Make sure `adb logcat -s IInputConnectionWrapper:*` does not
show "finishComposingText on inactive InputConnection" warnings
while switching focus across different EditText on the same
window.
Bug: 35079353
Bug: 35301295
Change-Id: I17f3a4f500bc19ebf8bae771bf658a93627b3ba3
InputConnectionWrapper.java
639c371e9615a771e4ad85c32e3e5693c25fe76b 13-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Introduce @SoftInputModeFlags annotation"
618b7a9aec2cda96edbe1d97044f017f605788c6 13-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Track the last softInputMode in IMMS"
22dac1c8df4ec212e8195a69d2de15d313d724fb 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Introduce @SoftInputModeFlags annotation

Doing this allows us to annotate integer values that should corresponds
to WindowManager.LayoutParams#softInputMode.

Test: There should be no behavior change. RetentionPolicy.SOURCE
annotation should change nothing in production code.
Test: checkbuild
Bug: 32784563
Bug: 35079353
Change-Id: I96300b090edce327d0515c740183abe91ded6bac
InputMethodManager.aidl
nputMethodClient.java
22a8923368a41cf50adfbc963c02b66302bb2d41 13-Feb-2017 Yohei Yukawa <yukawa@google.com> Track the last softInputMode in IMMS

A field in WindowManager.LayoutParams softInputMode is something that
definitely needs to be kept tracking in historical debugging
infrastructure across IME-related processes (Bug 35079353) [1]. As a
preparation, this CL enables InputMethodManagerService (IMMS) to
include the last softInputMode specified in IMMS#windowGainedFocus()
in the dumpsys in human readable format.

[1]: As explained in b.android.com/224318, softInputMode misspecified
by app developers is a typical root cause of unexpected behavior
in keyboard visibility. Bugs such as Bug 23168250, Bug 27275709,
and Bug 31770400 fall into this category.

Test: `adb shell dumpsys input_method | grep softInputMode=`
Bug: 35079353
Change-Id: I485ced030def179dad78b4b811c6eb52b5e5c951
nputMethodClient.java
f7526b58960608887b064670bb42f41aa28b8f41 12-Feb-2017 Yohei Yukawa <yukawa@google.com> Merge restartInput into startInput in internal IPC

This is the 2nd attempt to merge restartInput into startInput in
internal IPC after fixing the mistake in new parameter order in
the previous CL [1].

As a preparation to start tracking all the event flows that
cause InputMethodManagerService#setImeWindowStatus(), this CL
merges an internal IPC method IInputMethod#restartInput() into
IInputMethod#startInput() in favor of simplicity.

This is a refactoring CL that should have no behavior change.

[1]: Ifda6f74ac1b1370d9e9a9fe60354b692121fdcb9
1a5838e966eab7a9f0dca71cabbc9922babb995e

Test: Set true to InputMethodService#DEBUG and make sure startInput()
and restartInput() are called in the following scenario.
1. Complete the setup wizard.
2. adb shell am start -a android.app.action.SET_NEW_PASSWORD
3. Proceed to "Choose your password" page
4. Make sure startInput() gets called.
5. Type "aaaa" then hit "CONTINUE" button.
6. Make sure restartInput() gets called.
Bug: 35079353
Change-Id: I476d0cf8cbb0a0134941854f9337d9ad15e66a71
InputMethod.aidl
9a49f85ae4ae45343838b189cdfd884ffabbd5ff 12-Feb-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Revert "Merge restartInput into startInput in internal IPC""
3eaf8674872824e4d44a1de7ad72529c299634f7 12-Feb-2017 Yohei Yukawa <yukawa@google.com> Revert "Merge restartInput into startInput in internal IPC"

This reverts commit 1a5838e966eab7a9f0dca71cabbc9922babb995e [1].

Reason of revert:
There was a mistake in the parameter order of MSG_START_INPUT.

[1]: Ifda6f74ac1b1370d9e9a9fe60354b692121fdcb9

Test: none. This is a revert.
Bug: 35079353
Change-Id: Ic1487768932febe0f1f1b6e71929464e91f357e0
InputMethod.aidl
aab4e11c0ac5a73cd5ab7f6e6fb6b9de8c9ffd84 12-Feb-2017 Yohei Yukawa <yukawa@google.com> Merge "Inline IMMS#resetAllInternalStateLocked()"
1a5838e966eab7a9f0dca71cabbc9922babb995e 10-Feb-2017 Yohei Yukawa <yukawa@google.com> Merge restartInput into startInput in internal IPC

As a preparation to start tracking all the event flows that
cause InputMethodManagerService#setImeWindowStatus(), this CL
merges an internal IPC method IInputMethod#restartInput() into
IInputMethod#startInput() in favor of simplicity.

Test: Done some quick manual testing to make sure that IME is
still working
Bug: 35079353
Change-Id: Ifda6f74ac1b1370d9e9a9fe60354b692121fdcb9
InputMethod.aidl
0d7aff8ab22b25e4215bee1a1f1da830a4d8fbfe 10-Feb-2017 Yohei Yukawa <yukawa@google.com> Inline IMMS#resetAllInternalStateLocked()

Currently IMMS#resetAllInternalStateLocked(boolean, boolean) has
only two call sites, and the first parameter is the constant for
each call site. We can get much simpler code by inlining the
method in question into those two call sites. It actually revealed
that UNBIND_REASON_RESET_IME should have been called
UNBIND_REASON_SWITCH_USER.

Test: no behavior change
Test: adb shell dumpsys input_method | grep "mMethodMapUpdateCount="
to make sure that switching users can cause the same count
increase.
Test: adb shell dumpsys input_method | grep "mMethodMapUpdateCount="
to make sure that switching the device locale can cause the
same count increase.
Bug: 35079353
Change-Id: I63388402369f58d11fdb21b508eb2051ff39fa5b
nputMethodClient.java
efdb4289597ad1594eb906aeafd2ebdf8854bdc7 09-Feb-2017 Yohei Yukawa <yukawa@google.com> Merge "Eliminate out-of-sync IMM#mFullscreenMode error"
651ea36f5aaf5751b16bc98899c31fe2ef3cd5c3 09-Feb-2017 Peeyush Agarwal <apeeyush@google.com> Merge "Extend MenuItem to allow modifier keys for shortcut"
2bc66171cce4d5ae7bee2c3920e82e45a9d245af 08-Feb-2017 Yohei Yukawa <yukawa@google.com> Eliminate out-of-sync IMM#mFullscreenMode error

As explained in the commit message of my previous CL [1], we have
had a design issue in how to notify the full-screen mode change
from the IME to InputMethodManager running in the target application.

Histrically we have done this by using hooking the following IPC
from the IME to the target application.

InputConnection#reportFullscreenMode()

However, since we also want InputConnection to be deactivated in some
situations such as the when the target application is no longer
focused. In other words, InputConnection is not a reliable way to
notify something.

As a result, we have suffered from many stale state issues.
Bug 21455064 and Bug 28157836 are such examples. In Android N, we
introduced yet another hack to work around those issues, but it is
really time to fix the protocol design instead.

The new strategy is to rely on internal IPCs provided by
InputMethodManager to deliver such critical notifications from one
process to the other. This is actually more natural because our goal
is to make sure that InputMethodManager#isFullscreenMode() always
returns the latest value as long as the caller is the focused
application.

For backword compatibility, applications that are monitoring
this callback should continue working, as InputMethodManager emulates
the previous behavior. However, as updated in JavaDoc, IMEs are no
longer allowed to invoke InputConnection#reportFullscreenMode(),
which should be OK because even on previous releases IMEs should rely on
InputMethodService#updateFullscreenMode() instead.

[1]: Iba184245a01a3b340f006bc4e415d304de3c2696
1544def0facda69c210b0ae64b17394ea2860d39

Fixes: 28406127
Test: Make sure Bug 21455064 is still fixed.
1. Input some words in extract mode.
2. Select a word.
3. Perform copy.
4. Select a word.
5. Rotate the device.
6. Try to select a word.
7. Make sure he word is selected and action mode starts.
Test: Make sure Bug 28157836 is still fixed.
1. Rotate device to landscape mode.
2. Tap on EditText and start full screen extracted mode.
3. Rotate device to portrait mode.
4. Long press to start action mode.
5. Make sure Action mode gets started.
Test: `adb shell dumpsys input_method` to make sure that fullscreen
state is synchronized across the app, IMMS, and the IME.
Change-Id: If23e7c7c265ab3dfb48c2fb6fdb361b17d22c594
InputConnectionWrapper.java
InputContext.aidl
InputMethodClient.aidl
InputMethodManager.aidl
nputConnectionWrapper.java
e631e32a1a771a36267af3f8af8b64e9365bc19e 19-Oct-2016 Peeyush Agarwal <apeeyush@google.com> Extend MenuItem to allow modifier keys for shortcut

Before this, CTRL was the default modifier for MenuItem shortcuts.
Now, It's possible to specify the modifier in XML or via MenuItem
methods.
The modifier list includes META, CTRL, ALT, SHIFT, SYM and FUNCTION.

WIP on support library implementation

Bug: 32165848
Test: Run the tests using following commands:
> cts-tradefed run cts-dev -m CtsViewTestCases -t
> android.view.cts.MenuTest#testPerformShortcut
> cts-tradefed run cts-dev -m CtsViewTestCases -t
> android.view.cts.MenuInflaterTest#testInflateShortcutModifiersFromXml

Change-Id: I7db4607d4657451934761914efe4c250de109653
enu/ActionMenu.java
enu/ActionMenuItem.java
enu/MenuBuilder.java
enu/MenuItemImpl.java
87ca8406d4dc711e9c9dba7a5ffccedc9e212021 07-Feb-2017 Yohei Yukawa <yukawa@google.com> Propagate StartInputReason to attachNewInputLocked

As a preaparation to work on Bug 35079353, this CL makes it clear that
IMS#startInput()/IMS#restartInput() can be also be triggered by
IMMS#onSessionCreated().

By doing this, we can now assume that each
IMS#startInput()/IMS#restartInput() event has always one corresponding
StartInputReason. In a subsequent CL, we will pass this to the IME
process (and to the app process) for further traceability.

Test: no behavior change.
Bug: 35079353
Change-Id: I604e35b023d27b77126cd70fe068dc6b5edc2611
nputMethodClient.java
3787de16d24001eeb452e1c711d4290a396e67c9 21-Dec-2016 Vladislav Kaznacheev <kaznacheev@google.com> Implement pointer capture API

When in pointer capture mode, mouse pointer disappears and
further mouse events are dispatched to the focused view
in the window which has requested capture.

The captured events have the source SOURCE_MOUSE_RELATIVE
belonging to SOURCE_CLASS_TRACKBALL. They are
dispatched through dispatchCapturedPointerEvent /
onCapturedPointerEvent. There is also a new listener.

Pointer capture mode may only be granted to a currently
focused window, and will be canceled upon a window focus change.

Test: cts-tradefed ... --test android.view.cts.PointerCaptureTest
Bug: 30897034
Change-Id: I6e5934aa415ac2b6dda1cee173d0f23e5021af84
aseIWindow.java
6a944ca17547e520ed4988125ee4c1f172c87946 19-Jan-2017 Vladislav Kaznacheev <kaznacheev@google.com> Rename View.setTooltip/getTooltip to setTooltipText/getTooltipText

Bug: 34454987
Test: android.view.cts.TooltipTest
Change-Id: I7203d5c61804b79584ba8449643c6c0f27a90747
enu/ActionMenuItem.java
enu/ActionMenuItemView.java
enu/IconMenuItemView.java
enu/ListMenuItemView.java
enu/MenuItemImpl.java
3b6bcfb65d3a869ac36f5fea9a78820e1268470a 11-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Require InputContentInfo.requestPermission()"
6b422e287c984c85f8c1406db7d127e82787826e 10-Jan-2017 Yohei Yukawa <yukawa@google.com> Require InputContentInfo.requestPermission()

This CL logically reverts my previous CL [1], which allowed the system
automatically grant a temporary URI permission to the target
application when the IME calls InputConnection#commitContent() with
InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION.

Based on conversations with application developers who have supported
Commit Content APIs, I concluded that my assumption that automatically
granting the permission without an explicit call of
InputContentInfo.requestPermission() would help application developers
was wrong. They anyway need to take care of the situation where the
app fails to read the data from the given content URI. Thus just
receiving SecurityException() because of not calling it is still one
of such cases that application developers cannot forget about.

Therefore with this CL InputContentInfo.requestPermission() becomes
mandatory when InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION
is specified.

[1]: Id955435dd2e72549ee7134f46b3c6951581694ad
f3806f57a59ede663f3fa2ad1f5080bdbf20e372

Bug: 32315394
Test: By github.com/googlesamples/android-CommitContentSampleApp
Change-Id: I8a3cb79ae6d6c4113914734799b21bfc96e3ca3e
InputConnectionWrapper.java
5df7f1ab6183d5abe50b1bfe00cc86eec23f8cf0 10-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Provide non-blocking SurfaceView draw notification path."
25cfa134835e3791bdb6572f5e25cf4599015678 16-Nov-2016 Robert Carr <racarr@google.com> Provide non-blocking SurfaceView draw notification path.

SurfaceView needs to notify the window manager that
drawing has been completed, so that animations and such
can begin. Currently this is implemented through
having the SurfaceView user block in surfaceRedrawNeeded
(called from UI thread) until a frame has been completed.
This blocking can be unnecessary serialization during startup, and
also clumsy to implement for some users.

Test: GLSurfaceView and takeSurface API Demos, android.server.cts.SurfaceViewTests
Bug: 31850030
Change-Id: Idda02098a635f25cf392f2d59a3abbe54a1d64d4
aseSurfaceHolder.java
urfaceCallbackHelper.java
7039cbc6f3a596aee6851014019849490f358f13 04-Jan-2017 Vladislav Kaznacheev <kaznacheev@google.com> Add content description and tooltip to menu item

Bug: 34076597
Test: manual
Change-Id: Ide32463252457721286c929ab2f8f7bae241835d
ooltipPopup.java
enu/ActionMenuItem.java
enu/ActionMenuItemView.java
enu/IconMenuItemView.java
enu/ListMenuItemView.java
enu/MenuItemImpl.java
20a12da3ce5bf1bea6e580ef36e92ce26b21b0ea 06-Dec-2016 Vladislav Kaznacheev <kaznacheev@google.com> Adjust tooltip layout

Position a mouse hover tooltip closer to the target.
Limit tooltip width and make it multiline (maxLines=3).
Show a long press tooltip above the target, not below.

Bug: 33352391
Bug: 33353823
Bug: 33354000

Test: manual
Change-Id: Ie00353d715d73d432b5d892a0a7c04508a003a78
ooltipPopup.java
d3e2ba30172864943443ed1f4f3d688b7c8ac78f 12-Dec-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Fix blink of final position in activity transitions."
f9c4b57b02d4fff00a5ca0d3dc2899415ec4f1bf 10-Dec-2016 George Mount <mount@google.com> Fix blink of final position in activity transitions.

Bug 33059372

When implementing OneShotPreDrawListener, one of the onPreDraw()
calls was supposed to return false. This CL restores that behavior.

Test: manual against Play Movies app

Change-Id: I416da3bb3e84efb009f0efbacad71d0a2f66fe18
neShotPreDrawListener.java
b265617b810082ec743389fa0468d1df91d66f68 23-Nov-2016 Vladislav Kaznacheev <kaznacheev@google.com> Replace Toast-based cheat sheets with tooltips

Currently ActionMenuItemView, MediaRouteButton and
ScrollingTabContainerView each have their own
implementation of a Toast-based long-press tooltips
(the last two apparently copy/pasted from the first).

Replacing those with the recently introduced tooltips
supported by the framework.

Bug: 31516506
Test: manual in ApiDemos
Change-Id: Ibcb8c5a43577a8b4d30f1a26e48ddcfde015d1dc
enu/ActionMenuItemView.java
e9bf7c843664c16aaeac4cd79550a7461ae00b5d 01-Dec-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Introduce PathInterpolator to native animators"
9e9eeeeb78d94804cda00c2b36e56fdaca5552d6 29-Nov-2016 Doris Liu <tianliu@google.com> Introduce PathInterpolator to native animators

For interpolators defined with a path, PathInterpolator is more accurate
and likely less costly for longer animations than what are currently
using as a substiute - LUTInterpolator.

Test: manual test and added a unit test
BUG: 32830741
Change-Id: I867c7a28e4261392cce9c45a2992ab4fd120c496
nimation/NativeInterpolatorFactoryHelper.java
f847ee3c3d68e58b0a1a545bd7358ebb32f6948a 21-Nov-2016 Vladislav Kaznacheev <kaznacheev@google.com> Implement tooltip support in View

Adding View.setTooltip/getTooltip and 'tooltip' layout attribute.
Following Material Design spec for styles and behavior.

Bug: 31515376
Test: cts-tradefed run singleCommand cts -m CtsViewTestCases
--test android.view.cts.TooltipTest

Change-Id: I2d2527f642cd7446ffc88d4beffc7b81d7a2f6d6
ooltipPopup.java
f0b46b9540b48448c1f1fbe55ca2930770bd72e2 31-Oct-2016 George Mount <mount@google.com> Use safe access to OnPreDrawListener.

Bug 32472451

It is important to remove an OnPreDrawListener from the correct
ViewTreeObserver. When a View is added to the view hierarchy, the
initial ViewTreeObserver is not active. The listener must then be
removed from the current OnPreDrawListener. When a View has been
removed from the hierarchy, it is important to remove the listener
from the orignal ViewTreeObserver.

Test: cts-tradefed run singleCommand cts -d --skip-preconditions
--skip-connectivity-check -m CtsUsageStatsTestCases
Test: cts-tradefed run singleCommand cts -d --skip-preconditions
--skip-connectivity-check -m CtsFragmentTestCases

Change-Id: I735f71d2d9c84e86ef846aab0088a8651300fbe8
neShotPreDrawListener.java
6bc701421047bf881ee16c49b242ea19ae4cd9b9 27-Oct-2016 John Reck <jreck@google.com> Add SurfaceHolder#lockHardwareCanvas()

Bug: 26988043
Test: SurfaceViewTests#testSurfaceHolderHardwareCanvas CTS test
Change-Id: I3e5352d498dbe2fc56a18ca27360d129a14c7784
aseSurfaceHolder.java
c75e8dbf15c2999fe4356a1a84af27c832df2296 15-Oct-2016 Yohei Yukawa <yukawa@google.com> Handle exceptions from #requestPermission() am: 93278ca144 am: f8621ff5bf
am: 36e5feffb7

Change-Id: I31405b72394d8425679e4b39ef89d4c68c2f9e11
93278ca144bef7d8af7a014e278f552da1fcb38c 14-Oct-2016 Yohei Yukawa <yukawa@google.com> Handle exceptions from #requestPermission()

This is a follow up CL to my previous CL [1] that let
IInputConnectionWrapper to call InputContentInfo#requestPermission()
automatically so that temporary URI permissions can be granted
automatically on API 25+ devices whenever
INPUT_CONTENT_GRANT_READ_URI_PERMISSION is specified.

However, in that CL we forgot to handle exceptions thrown from
InputContentInfo#requestPermission(). This is problematic because it is
actually easy for IMEs to cause SecurityException by specifying a
content URI that does not allow grantUriPermission, e.g.:

inputConnection.commitContent(
new InputContentInfo(Uri.parse("content://call_log/test"),
new ClipDescription("test", new String[]{"image/gif"}));

As a result, IMEs can let the application crash at any time because
InputContentInfo#requestPermission() is automatically called inside the
Framework.

This CL makes sure that exceptions thrown from
InputContentInfo#requestPermission() can be handled gracefully.

[1]: Id955435dd2e72549ee7134f46b3c6951581694ad
f3806f57a59ede663f3fa2ad1f5080bdbf20e372

Bug: 32162481
Change-Id: I08916a1f54518390d3b67ab1673dc901e3f9716a
InputConnectionWrapper.java
d1eb19c65e89a67cfc63ed5496825b79a3bfe1ed 21-Jul-2016 Abodunrinwa Toki <toki@google.com> FloatingActionMode: Avoid calling delayed code if view is inactive.

If something's gone wrong with the floating toolbar's host view while
there is logic posted in a runnable, avoid running that code.

These runnable callbacks are currently removed when the action mode
is finished but the issue we're running into is something else.
Seems like the app doesn't get a chance to call finish when something
went wrong with the view or host activity. Anyway, defend against
this case.

Test: Not able to reproduce the issue. This code is a defensive
fix to prevent reported crashes in GSA. Will keep if the crashes no
longer happen or revert if they continue to happen.
Bug: 29951043
Change-Id: I0e7833b8d8a63bf6205b7035b477bd8a3a7968b2
loatingActionMode.java
49f1a76a4412ef4e36f1f647fa7ec182e6cf9b58 04-Aug-2016 Abodunrinwa Toki <toki@google.com> FloatingActionMode: Use DisplayMetrics.getRealSize for screen size.

Change-Id: I841bce64a63460452f378a8f612c386a31e88865
loatingActionMode.java
f9e2c1b326f64cd3805c2ce80a0f13b20a671556 27-Jul-2016 Chris Banes <chrisbanes@google.com> Fix CascadingMenuPopup width if background has padding DO NOT MERGE

Happens because CascadingMenuPopup calls setWidth() rather
than setContentWidth() like StandardMenuPopup does.

BUG: 30365568
Change-Id: Id850baaf1d9c5664220766e5e37869e2ec361a2d
enu/CascadingMenuPopup.java
b95bf3cff4eda8931e22a91806cc097cd3170c2b 27-Jul-2016 Chris Banes <chrisbanes@google.com> Fix CascadingMenuPopup width if background has padding

Happens because CascadingMenuPopup calls setWidth() rather
than setContentWidth() like StandardMenuPopup does.

BUG: 30365568
Change-Id: I349b5cf81982d7efc85342ab672f2b4e65bafd70
enu/CascadingMenuPopup.java
87c60d66f453a909be32ada4c9b7d32330aac069 22-Jul-2016 Vladislav Kaznacheev <kaznacheev@google.com> Revoke drag and drop related grants on client crash

Add a token on the client side, linkToDeath to it on the server
side.

Bug: 29586254
Change-Id: I41ef6dd58352514035c95a4ec9e49c92ea240661
DragAndDropPermissions.aidl
cc59a84490752be0dc33df56eff2f5b4147aea93 17-Jul-2016 Abodunrinwa Toki <toki@google.com> Merge \\"FloatingActionMode: Fix screen coordinates.\\" into nyc-mr1-dev am: 3b8e0fdf92
am: c749762107

Change-Id: If82be88fcf267aef7f239e9ab30e3e594fcf945e
afb38c5cc4226ce82367015f4ce52765018226d6 15-Jul-2016 Abodunrinwa Toki <toki@google.com> FloatingActionMode: Fix screen coordinates.

Use application context to get the screen's display metrics.

Bug: 30127070
Change-Id: I2c453c494ef210c12d89fc7e3ff026728f9ecb0f
loatingActionMode.java
664e6d18dbed91352d6de6258722ef8767d0576f 01-Jul-2016 Yohei Yukawa <yukawa@google.com> Merge \\"Automatically grant URI permission as needed.\\" into nyc-mr1-dev am: d2e046a720
am: 1a932852d4

Change-Id: I1b54d8e32c4813d641df66075f3845f94858c63b
f3806f57a59ede663f3fa2ad1f5080bdbf20e372 01-Jul-2016 Yohei Yukawa <yukawa@google.com> Automatically grant URI permission as needed.

With this CL, the system automatically grants a temporary URI permission
to the target application when the IME calls
InputConnection#commitContent() with
InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION. The temporary
permission will be revoked by any of the following events:
- InputContentInfo#releasePermission() is explicitly called by the
target application.
- The target application returned false in
InputConnection#commitContent().
- All the InputContentInfo instances copied from the original one are
GC-ed.

If we do not do this and there is an application that forgot to call
that method then there is no way for IME developers to prevent
permission denial from happening in the application except for relaxing
the default permission of the ContentProvider just because of such an
application.

Although application developers are still expected to explicitly call
InputContentInfo#{request,release}Permission(), forgetting to call
InputContentInfo#requestPermission() does not hurt the user anymore.

With this CL, calling InputContentInfo#requestPermission() after calling
InputContentInfo#releasePermission() is also allowed.

Bug: 29892936
Change-Id: Id955435dd2e72549ee7134f46b3c6951581694ad
InputConnectionWrapper.java
9758d81dbe8e286684220a96e2a7847c0d1236b2 30-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge \\"Revert \\"Remove InputContentInfo#requestPermission()\\"\\" into nyc-mr1-dev am: 8acb1a7570
am: 359acdee5f

Change-Id: Ia55a7e5095f93cb8f37edca65d2206fbf54316f3
79d1c75a3f774bd8c4742f9d7bbd29161c3f1f68 30-Jun-2016 Yohei Yukawa <yukawa@google.com> Revert "Remove InputContentInfo#requestPermission()"

This reverts commit c4b8f36de5523366e354fc01b6cba81ad72f6423.

Having InputContentInfo#requestPermission() should not hurt developers,
but we can polish the behavior in a subsequent CL without changing
the API.

Bug: 29450031
Bug: 29892936
Change-Id: I1b43c19417b643d0c269af860db2d309b73a90d5
nputConnectionWrapper.java
90471019776a0d0f8c996fe9fa164bf5bee0b083 30-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge \\"Remove InputContentInfo#requestPermission()\\" into nyc-mr1-dev am: c80c64a97b
am: 854e6f8501

Change-Id: Ia84ebe07d1abf469ed461aa524c38ffa76a5ea53
c4b8f36de5523366e354fc01b6cba81ad72f6423 30-Jun-2016 Yohei Yukawa <yukawa@google.com> Remove InputContentInfo#requestPermission()

It turns out that requiring editor authors to call
InputContentInfo#requestPermission() as needed is just confusing and can
cause compatibility issues, because if an editor author forgot to call
that method then there would be no way for IME developers to prevent
permission denial except for relaxing the default permission of the
ContentProvider just because of such an application. This is not what we
want to see.

My conclusion is that the system should automatically call
InputContentInfo#requestPermission() (or do any equivalent operation)
when InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION is
specified, like we have done in Context#startActivity().

With this CL, the system automatically grants a temporary URI permission
to the target application when the IME calls
InputConnection#commitContent() with
InputConnection#INPUT_CONTENT_GRANT_READ_URI_PERMISSION, and the
temporary permission will be revoked by any of the following events:
- InputContentInfo#releasePermission() is explicitly called by the
target application.
- The target application returned false in
InputConnection#commitContent().
- All the InputContentInfo instances copied from the original one are
GC-ed.

Bug: 29450031
Bug: 29892936
Change-Id: I37fb744e4d3d1c59177fb0a9be4ef5c325c9a39f
nputConnectionWrapper.java
79bf9d19f2f76cbfbd6659c9323e519deaa887c7 19-May-2016 Siyamed Sinir <siyamed@google.com> Fix bidi desired width calculation

Layout.getDesiredWidth measured text with TextDirectionHeuristics.LTR,
whereas the real calculations used the active direction heuristic set
in the TextView instance. This CL uses the same heuristics for both of
them by passing the value to Layout.getDesiredWidth function.

Bug: 28845953
Change-Id: I68d23f55fe5a86255d62e83bc62df38a047e4bca
enu/IconMenuItemView.java
a3fd8bfdfeb1cb54da6d6803a97708199efa92a7 27-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge \"Merge \\"Use a flag to grant a temporary URI permission.\\" into nyc-mr1-dev am: cb56978912\" into nyc-mr1-dev-plus-aosp
am: c58ffb3f9c

Change-Id: Iddc693412d20b86c3a916dd09764d14d23c4fcf4
45700fa135e83ed44e4b69ca60cf12960a5898d7 24-Jun-2016 Yohei Yukawa <yukawa@google.com> Use a flag to grant a temporary URI permission.

It turns out that we can let the system to call
InputMethodService#exposeContent(InputContentInfo, EditorInfo), which
added in my previous CL [1], during the IME is calling
InputConnection#commitContent() as follows.

[IME]
InputContentInfo contentInfo = new InputContentInfo(
contentUri,
new ClipDescription(description, new String[]{mimeType}),
linkUrl);
getCurrentInputConnection().commitContent(
inputContentInfo,
InputConnection.INPUT_CONTENT_GRANT_READ_URI_PERMISSION,
null);

[App]
try {
contentInfo.requestPermission();
// Load inputContentInfo.getContentUri() here.
} finally {
contentInfo.releasePermission();
}

This gives us flexibility to let InputConnection#commitContent() do all
the magic for IME developers like other APIs such as
Context#startActivity(), rather than asking them to call one more API to
grant a temporary URI permission like a scenario where
Context#grantUriPermission() is used.

[1]: I2772889ca01f2ecb2cdeed4e04a9319bdf7bc5a6
25e0813e6eb6315b1016db805fa9b791b4ae5cc2

Bug: 29450031
Change-Id: I99536cd58c9984af30b0bafb4a1dd25a26634a2d
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
bf055ba65844f3df53d48554255afd7ba97691ab 23-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge \\"Add InputMethodService#exposeContent()\\" into nyc-mr1-dev am: dc42d7dd13
am: d02470f5a8

Change-Id: Id551d53ae3d7c34157ddf166aa44bdef67d46853
25e0813e6eb6315b1016db805fa9b791b4ae5cc2 23-Jun-2016 Yohei Yukawa <yukawa@google.com> Add InputMethodService#exposeContent()

This is a follow up CL to my previous CLs [1][2] that introduced
InputConnection#commitContent(InputContentInfo, Bundle) API to enable
IMEs to send a content to the target application.

With this CL, IME developers are able to temporarily expose
InputContentInfo object to the target package without permanently
granting URI permission. Although calling IMS#exposeContent() is
allowed only for the IME that is currently selected, the client is able
to request a temporary read-only access even after the current IME is
switched to any other IME as long as the client keeps InputContentInfo
object.

Here is a sample code snippet about how to use this mechanism.

[IME]
InputContentInfo contentInfo = new InputContentInfo(
contentUri,
new ClipDescription(description, new String[]{mimeType}),
linkUrl);
exposeContent(contentInfo, getCurrentInputEditorInfo());
getCurrentInputConnection().commitContent(inputContentInfo, null);

[App]
try {
contentInfo.requestPermission();
// Load inputContentInfo.getContentUri() here.
} finally {
contentInfo.releasePermission();
}

[1]: Iaadf934a997ffcd6000a516cc3c1873db56e60ad
152944f4909c47917473293b258d266435c6ab35
[2]: Ica1ba3154795c1bf44e140dfe639b299f83cd8af
adebb52588b098a1af678d4e33a234ef1ce783b2

Bug: 29450031
Change-Id: I2772889ca01f2ecb2cdeed4e04a9319bdf7bc5a6
InputMethodManager.aidl
045de3f08cd3ca0e884e4e36dff7d448f9788018 18-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge \\"API Rename: IC#inputContent to IC#commitContent.\\" into nyc-mr1-dev am: 01e7c10d37
am: 0d7dcf7bc3

Change-Id: I5c4209a79e7426192da082100ac2a7517de36b81
adebb52588b098a1af678d4e33a234ef1ce783b2 17-Jun-2016 Yohei Yukawa <yukawa@google.com> API Rename: IC#inputContent to IC#commitContent.

As shown in below, we have already used commit* naming convention in
InputConnection.

- InputConnection#commitCompletion(CompletionInfo);
- InputConnection#commitCorrection(CorrectionInfo);
- InputConnection#commitText(CharSequence, int);

Hence renaming IC#inputContent() to IC#commitContent() would make the
new method more consistent.

Bug: 29450024
Change-Id: Ica1ba3154795c1bf44e140dfe639b299f83cd8af
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
nputConnectionWrapper.java
e3d3740f1cd2cd6feef65f6901ab2200a7eaa3c1 14-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge \\"Add InputConnection#insertContent().\\" into nyc-mr1-dev am: 03f759e87e
am: 176642ec2c

Change-Id: I96395b6e883aa7dd462d1281b6859afa7b324937
03f759e87e0701f7237b079c8a5a3cb0a49e951d 14-Jun-2016 Yohei Yukawa <yukawa@google.com> Merge "Add InputConnection#insertContent()." into nyc-mr1-dev
152944f4909c47917473293b258d266435c6ab35 11-Jun-2016 Yohei Yukawa <yukawa@google.com> Add InputConnection#insertContent().

Providing an official protocol for IMEs to insert an image to the
application is something that has been requested from many IME
developers to Android OS. With this CL, IMEs are able to ask
applications to insert a content including image files as follows.

1. An application that opts in to this protocol specifies a list of
supported content MIME types in EditorInfo#contentMimeTypes.
2. When an IME is actively interacting with such an application, the
IME can call InputConnection#insertContent() with a InputContentInfo
that contains content URI, metadata (ClipDescription), and an
optional link URI.
3. The application can read the stream data from the given content URI
to insert the content into somewhere in the application.

Detailed design background can be found in the JavaDoc of
InputConnection#insertContent().

Bug: 22830793
Change-Id: Iaadf934a997ffcd6000a516cc3c1873db56e60ad
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
nputConnectionWrapper.java
c9493879d7b38b9d0b5b09aa3760966a3ca33eac 03-Jun-2016 Doris Liu <tianliu@google.com> Support Keyframe definition for AVD on RT

BUG: 27441613
Change-Id: Iece386f65f3704d1b7caa2b3690a8d3048ccf6e2
nimation/FallbackLUTInterpolator.java
7e1d49326719076401b43b28649a827478ea6487 09-Jun-2016 Doris Liu <tianliu@google.com> Merge "Support Keyframe definition for AVD on RT"
a6b967cfc54408f6ee78ae0e4695eca6efd62e89 03-Jun-2016 Doris Liu <tianliu@google.com> Support Keyframe definition for AVD on RT

BUG: 27441613
Change-Id: Iece386f65f3704d1b7caa2b3690a8d3048ccf6e2
nimation/FallbackLUTInterpolator.java
e051f6f1fdb5e21cbed394d29dfcab5c642e4129 13-May-2016 Michael Wright <michaelwr@google.com> Rename PointerIcon and Pointer Capture APIs

This is a response to API council feedback.

Bug: 26830970
Change-Id: I1be541a53e3943d06640169671824f7daea15462
aseIWindow.java
32c0e434a77d7e637a5bebedaa5848715fe1a628 25-May-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Set input method mode for CascadingMenuPopup." into nyc-dev am: edebcae978 am: 66e5b59d85
am: c2a363fd24

* commit 'c2a363fd24a95e8afd9124e88e7c8227849744cf':
Set input method mode for CascadingMenuPopup.

Change-Id: If142a782c2cf9b930e16382ab3986dd11821ed1b
edebcae9781fa897914952e9346a14afd2e08967 25-May-2016 Keisuke Kuroyanagi <ksk@google.com> Merge "Set input method mode for CascadingMenuPopup." into nyc-dev
24b260de62c63dd10a22837b15a029db25957b8b 19-May-2016 Keisuke Kuroyanagi <ksk@google.com> Set input method mode for CascadingMenuPopup.

Set INPUT_METHOD_NOT_NEEDED not to steal input focus.

Bug: 28638654
Change-Id: Ic5070b309de459914d2670bd20a9af568438a843
enu/CascadingMenuPopup.java
aff5daf558fdd091c309f33b3bcd992d74eb981d 16-May-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Show tooltip when mouse is hovering over an ActionMenu item"
1a6c27281b399a971674beac634f3d9a703bdd77 14-May-2016 Vladislav Kaznacheev <kaznacheev@google.com> Show tooltip when mouse is hovering over an ActionMenu item

Tooltips are already being shown on long press. This CL
invokes the same logic on mouse hover (but with a longer
tooltip duration).

Bug: 24339237
Change-Id: Icba33b317fe737953c6dace91cfe3539a14a1959
enu/ActionMenuItemView.java
7e4ef1a3198daee07c768806dd1f7c9f628bd0f7 16-May-2016 Yohei Yukawa <yukawa@google.com> Merge "Make IMS#clearInsetOfPreviousIme() reliable." into nyc-dev am: cef3337cb5 am: a1c905caf3
am: c7aeaff113

* commit 'c7aeaff113ab3c525bab5ad79fce05ae895d93a7':
Make IMS#clearInsetOfPreviousIme() reliable.

Change-Id: I188b8ebb263d67c1bdcefcd4e9fedf390a199969
833bdcedceee60a873694a77587393abfc830eb5 16-May-2016 Yohei Yukawa <yukawa@google.com> Make IMS#clearInsetOfPreviousIme() reliable.

This is a follow-up to my previous CL [1] for Bug 15922840 so that we
can clear the following variables in a more reliable way.
- PhoneWindowManager#mLastInputMethodWindow
- PhoneWindowManager#mLastInputMethodTargetWindow

The idea behind CL [2] is that when InputMethodManagerService (IMMS) is
switching from an IME to another IME, IMMS can send a signal to
WindowManagerService (WMS) to remember the current IME's inset so that
the system can continue using it to reduce jank until the new inset is
specified by the next IME. As summarized in Bug 28781358, however, if
the next IME does not show the window after the IME switch, WMS (or
PhoneWindowManager to be precise) keeps using the previous IME's inset
unexpectedly until the new IME shows its window. All we have seen in
Bug 15922840 and Bug 26663589 fall into this category.

The idea of this CL is just adding a hidden API to InputMethodManager so
that InputMethodService#clearInsetOfPreviousIme() can surely terminate
the IME transition state managed in PhoneWindowManager, rather than
relying on a hack of calling SoftInputWindow#show() and
SoftInputWindow#hide(), which actually does not work for Bug 26663589.

[1]: Ib04967f39b2529251e4835c42e9f99dba2cf43f2
2977eb7b6ce82309a1bb1ba4ab698f503cb0388a
[2]: I5723f627ce323b0d12bd7b93f5b35fc4d342b50c
792faa2c16d319e874a1d633f964a78266d5f3f2

Note that addressing all the corner cases in [2] still requires lots of
non-trivial change. Hence this CL focuses only on Bug 26663589 (and
the case we handled in Bug 15922840).

Bug: 26663589
Change-Id: Ib567daa009c1139858dccadcfc6a04465ebecf36
InputMethodManager.aidl
10b889de7d0c9271e3fb47c87a8ed140bee9c271 12-May-2016 The Android Automerger <android-build-merger@google.com> stephenli Manually merge commit '68fffa5'

* commit '68fffa5': (23 commits)
Fix smallest width configuration calculation
docs: DoDS, wearable reference docs
Switch the default text selection handles to Material style.
docs: Noted minor API changes in release notes
docs: added "billions" doc in Distribute>Essentials
Remove wear design pages redirecting to design/wear
correct the support library redirects to redirect whole path
Stop saving ActionMenuItemView state.
Fix iterator double-advance in ContentObserverController
TIF: Remove the uniqueness check for track ID from notifyTracksChanged
Update and add attributes to the JavaDoc for VectorDrawable
Use Q=100 JPEG instead of PNG for wallpaper display
Fix issue #28400000: Settings memory UI still showing z-ram...
docs: Updated support library revision history for 23.4.0
docs: Updates to notifications for DP3
docs: Added emoji section to api overview.
Fixed a bug where the QS was animating wrong when closing
Fix KeyguardManager.isSecure() to observe work profile
cherrypick from mnc-docs docs: Updated APK Signature Scheme v2 doc.
Docs: Added new Whitelist feature to Data Saver for DP3
...
9c661a40c1f8adfbf84883fbf5efb51ed0cf2fe2 11-May-2016 Aurimas Liutikas <aurimas@google.com> Stop saving ActionMenuItemView state.

There is no useful state to be saved for these views.
This fixes a crash where we try to restore the state of an
ActionView (that shares the same ID as ActionMenuItemView).

Framework version of ag/1020805

Bug: 28110832
Change-Id: I4a09786a1c08bef1765fd8be3affb21dce296272
enu/ActionMenuItemView.java
7a7f7412cf82c1bed7b9953d4e327fe7dbb90d75 06-May-2016 Yohei Yukawa <yukawa@google.com> Merge "Merge "Fix stale InputMethodManager#mFullscreenMode." into nyc-dev am: 9f76abc8ab am: 94c9aadc99" into nyc-mr1-dev-plus-aosp
am: 20fce5ed58

* commit '20fce5ed585ae0200927b50122366fd0196c565f':
Fix stale InputMethodManager#mFullscreenMode.

Change-Id: I4f1a8071c8cb2c02cb6f8a6ef614363ae73682c3
9f76abc8ab9db3306c8061e9719dbe2a998031f3 05-May-2016 Yohei Yukawa <yukawa@google.com> Merge "Fix stale InputMethodManager#mFullscreenMode." into nyc-dev
b970e9bf0190f990ce3a387e05214c578d759fa5 03-May-2016 Abodunrinwa Toki <toki@google.com> Merge "Implement alternative ViewGroup.getChildVisibleRect." into nyc-dev am: f62dd564ed am: a04fe4fc92
am: 6609b23ae0

* commit '6609b23ae0ce114cd44c4cef1e3c4ebd98bc1623':
Implement alternative ViewGroup.getChildVisibleRect.

Change-Id: I08542776d74a1804e8787458f5f1688fafc34f18
4e7a1208eaa81f684485ee23ba681dab6419973f 03-May-2016 Abodunrinwa Toki <toki@google.com> Implement alternative ViewGroup.getChildVisibleRect.

This CL allows getChildVisibleRect to optionally always call the
view's parent. The previous version attempted to optimize the call
by not calling further up the view heirarchy when the rect isn't
visible in the current view.

The call is hidden and the previous behaviour is preserved to limit
the bits of code that this change affects.

Bug: 28514727
Change-Id: I49550ed4082bcbdcfe4643b962b50f3308092525
loatingActionMode.java
efbebb8c9d6b1d1d83eac9082dc7b9249bb38042 30-Apr-2016 Vladislav Kaznacheev <kaznacheev@google.com> Handle drop correctly in BaseIWindow

Bug: 28475039
Change-Id: I6a30be0f2c5fe694e85681af387abeabacff9fc9
aseIWindow.java
1544def0facda69c210b0ae64b17394ea2860d39 27-Apr-2016 Yohei Yukawa <yukawa@google.com> Fix stale InputMethodManager#mFullscreenMode.

The current mechanism to sync InputMethodService#mIsFullscreen to
InputMethodManager#mFullscreenMode is really fragile because
1. Currently the state change is notified via
InputConnection#reportFullscreenMode(), where InputConnection is
designed to be valid only while the IME has input focus to the
target widget.
2. In favor of performance InputMethodService (IMS) calls
InputConnection#reportFullscreenMode() only when #mIsFullscreen
changed. If InputConnection#reportFullscreenMode() failed, there
is no recovery mechanism.
3. Screen oriantation change is likely to cause Window/View focus
state change in the target application, which is likely to
invalidate the current InputConnection.

What our previous workaround [1] did for Bug 21455064 was actually
relaxing the rule 1 only for InputConnection#reportFullscreenMode().
However, my another CL [2] made the lifetime check of InputConnection a
bit more strict again, which revived the issue as Bug 28157836.

Probably a long-term fix would be to stop using InputConnection to sync
that boolean state between IMS and the application. However, it's too
late to do such a refactoring in N, hence this CL relaxes the rule 1
again keeping it as secure as possible.

The idea is that we allow InputConnection#reportFullscreenMode() to
update InputMethodManager#mFullscreenMode regardless of whether
InputConnection is active or not, as long as the InputConnection is
bound to the curent IME. Doing this as a short-term solution is
supporsed to not introduce any new risk because the active IME is
already able to mess up the InputMethodManager#mFullscreenMode by
calling InputConnection#reportFullscreenMode() on any other active
InputConnection. Bug 28406127 will track the long-term solution.

[1]: Id10315efc41d86407ccfb0a2d3956bcd7c0909b8
da589dffddaf4046d3b4fd8d14d5f984a1c4324a
[2]: If2a03bc84d318775fd4a197fa43acde086eda442
aaa38c9f1ae019f0fe8c3ba80630f26e582cc89c

Bug: 28157836
Change-Id: Iba184245a01a3b340f006bc4e415d304de3c2696
InputConnectionWrapper.java
6183b722de89d69ce16890db809a14ac03ab89fe 27-Apr-2016 Justin Klaassen <justinklaassen@google.com> Support view transformations when positioning floating CAB

Bug: 24088745

Use ViewGroup#getChildVisibleRect to transform the reported content
rect into the coordinate system of the root view. This allows the
floating CAB to be positioned correctly for views that may have a
scale (or other transforms) applied.

Change-Id: Ia6733a461b44070e7f6bab42f0b6fe2aed6870e5
loatingActionMode.java
c71b6302fe368ca2fbd4555177acf3cd157f6340 27-Apr-2016 Oren Blasberg <orenb@google.com> Merge "Show cascading popup menus if screen is big enough." into nyc-dev
0967da398901dd2ac626152a4802c822ca36c63b 27-Apr-2016 Oren Blasberg <orenb@google.com> Merge "Don't show icons for top level menus unless forced." into nyc-dev
7b457455c40a6f159d9d82b2fe2e03bc26e9c55e 20-Apr-2016 Oren Blasberg <orenb@google.com> Don't show icons for top level menus unless forced.

Prior to this CL, the cascading implementation would evaluate the
contents of the menu to determine whether to show an icon for this case.
However, the policy we have upheld is that top level menus should
never show an icon for this case. (Unless setForceShowIcon(true) was
called.)

Bug: 28275346
Change-Id: I09423596d49742aa7a9ba7245702c099581c0b48
enu/CascadingMenuPopup.java
enu/MenuPopupHelper.java
93c195894de323b039ff62eb5c62bf9aeed2abf0 14-Apr-2016 Oren Blasberg <orenb@google.com> Show cascading popup menus if screen is big enough.

...even if in split screen mode.

Bug: 28175404
Change-Id: I63ff60090e299e48f2273477dc3b820d4d95db8d
enu/MenuPopupHelper.java
729c640cc887da9fe7a1b57121167a7bf83fee97 21-Apr-2016 Vladislav Kaznacheev <kaznacheev@google.com> Merge "Rename DropPermissions to DragAndDropPermissions" into nyc-dev
377c32845bffaf68d5751d8cdf6fd60b8b3f5dc3 20-Apr-2016 Vladislav Kaznacheev <kaznacheev@google.com> Rename DropPermissions to DragAndDropPermissions

Bug: 28296057
Change-Id: Ic95cb4ae9c351d903df78628e983dec2bacd0ad5
DragAndDropPermissions.aidl
DropPermissions.aidl
d7b2599285cf0affd6013a58497ff5fabdf41125 19-Apr-2016 Alan Viverette <alanv@google.com> Don't overwrite vertical and horizontal offsets unless explicit

Bug: 28194522
Change-Id: I14c8b719a0fca03da6d9834d07948a5513241b26
enu/CascadingMenuPopup.java
enu/StandardMenuPopup.java
3610d06239e72bb51e4150889864d2b2c18347d5 14-Apr-2016 Oren Blasberg <orenb@google.com> Don't show icons in overlay popup menus.

This was a "regression" in CascadingMenuPopup specifically.
We now check for the overflow case and don't show icons.
This preserves the behavior from Marshmallow.

Bug: 28026351
Change-Id: Ifbc9a20b0dadd19ef7b727023b1b0cfa45ebf993
enu/CascadingMenuPopup.java
enu/MenuPopup.java
7ce082a46259e948e4ea6a12f327f32aecaf167a 08-Apr-2016 Oren Blasberg <orenb@google.com> Merge "Fix top level menu lingering when submenu opens." into nyc-dev
ddf6b8130f62c82241544bef19bcee4ef3171a82 06-Apr-2016 Oren Blasberg <orenb@google.com> Fix icon spacing on both MenuPopup implementations.

Ensure we calculate based on the actual menu items in a particular menu
or submenu, not based on whether the parent menu had icon spacing
enabled.

Bug: 28026351
Change-Id: Ie6e56eb142f0b82de38bf39ee848ddd26df2bf1c
enu/CascadingMenuPopup.java
enu/MenuPopup.java
enu/StandardMenuPopup.java
9022c7129ec763c9485f3a2de67b1e19eb77f462 05-Apr-2016 Oren Blasberg <orenb@google.com> Fix top level menu lingering when submenu opens.

We should be calling close(false), not dismiss(), when the submenu is
opened.

This change brings the code closer to what it was before the prior
change to StandardMenuPopup, but preserves the ondismiss behavior we
want for popup menus. The net change so far is that StandardMenuPopup,
not MenuBuilder#performItemAction, handles closing the top level menu
when a submenu is opened. But nonetheless, the onDismiss is not called
when a submenu is opened; only when an actual real "dismiss" occurs.

Bug: 28001958
Change-Id: Ia0f89f8fd4bc5494f6a048c993792adfe42d88ec
enu/StandardMenuPopup.java
f6f0f5fbe988cede008168438e469657c62ac51b 30-Mar-2016 Yohei Yukawa <yukawa@google.com> Merge "Add IC#closeConnection()." into nyc-dev
9f9afe526d1f8ad17c628fc9e1e839725ffe913e 30-Mar-2016 Yohei Yukawa <yukawa@google.com> Add IC#closeConnection().

It turns out that BaseInputConnection has still depended on a private
API named BaseInputConnection#reportFinish(), which was introduced
4 years ago to work around a UI freeze due to an unbalanced batch edit
count [1]. Note that such an unbalanced batch edit count cannot always
be avoidable. It can easily occur in the following situations.
- The current IME crashed during batch edit.
- The user changed the View focus during batch edit.
- The current IME called IMM#switchToNextInputMethod() during batch
edit.

The remaining problem is that #reportFinish() is still an internal API
and only subclasses of BaseInputConnection can implement it, and IMM
calls it when and only when the current InputConnection is
BaseInputConnection or its subclass. InputConnectionWrapper and any
other InputConnection implementations will never receive such a callback
to clean up InputConnection#{begin, end}BatchEdit(), which is considered
to be a major contributor to UI freeze.

To address the above issue, we unhide BaseInputConnection#reportFinish()
as InputConnection#closeConnection() so that application developers can
receive an appropriate callback to clean up internal state including
unfinished batch edit.

[1] I5525d776916f0c42d5e6d4a4282aed590d7f0e9a
9d69ecbf61a4a142c3f4cbb9d5659faa6f85e832

Bug: 24688781
Bug: 25332806
Change-Id: I234309c5880c9fe0b299b8bd0f8862796d4dda0d
InputConnectionWrapper.java
nputConnectionWrapper.java
a5dcc6c25d38fe63a15f1b5920c439696726d3da 30-Mar-2016 Teng-Hui Zhu <ztenghui@google.com> LUTInterpolator needs to have 2 frame at minimal

Otherwise, it could be having invalid data, here NAN.
Fix:27343522

Change-Id: I5bb17f04c62f268ec633675015ef589be2413338
nimation/FallbackLUTInterpolator.java
d86fd61cd865b4515760d48f9137ad80c7b23e97 29-Mar-2016 Oren Blasberg <orenb@google.com> Merge "Call the onDismiss listener in submenus." into nyc-dev
4348688ed351e32ac6c478deb92be7579a1131ea 28-Mar-2016 Oren Blasberg <orenb@google.com> Call the onDismiss listener in submenus.

For StandardMenuPopup, if user opens a submenu, the ondismiss listener is no
longer called. Instead, it is called when the submenu (which is now open in
the top level menu's place) is dismissed.

Bug: 27877103

Change-Id: I069388fd173142620c667fa8d1cb21e88d5266fe
enu/MenuBuilder.java
enu/StandardMenuPopup.java
736a85f166d0a9701f93e9a480c914e0246409e1 29-Mar-2016 Alan Viverette <alanv@google.com> Use default implementation for onForwardingStopped() in action menu

Otherwise we never exit forwarding if the popup has already been
dismissed.

Bug: 27886370
Change-Id: I3a7a51c18c15e12e2e9ef4cac853b87eb46d36de
enu/ActionMenuItemView.java
aaa38c9f1ae019f0fe8c3ba80630f26e582cc89c 28-Mar-2016 Yohei Yukawa <yukawa@google.com> Ensure IC#finishComposingText() is called on the correct Handler.

This attempts to reland previously reverted CLs [1][2] due to an
unexpected regression (Bug 27824691).

The Bug 27868748 we want to address by this CL is that currently
InputConnection#finishComposingText() can be called on the root view's
Handler no matter what Handler is associated with
ControlledInputConnectionWrapper. Actually the root cause of
Bug 6789252 is the same, but there we worked around it by not calling
InputConnection#finishComposingText() in certain situations [3].
With this CL we should be able to logically revert that workaround.

This CL also removes redundant IMM#mServedInputConnection. This is safe
because the following two fields have the same lifetime.
- InputMethodManager#mServedInputConnection
- InputMethodManager#mServedInputConnectionWrapper
We do not need to maintain both of them. This also allows us to use a
strong refecente in IInputConnectionWrapper#mInputConnection instead of
a WeakReference. To understand why this is safe, we need to understand
how things previously worked, which is as follows:

1. InputMethodManager#mServedInputConnection becomes non-null.
-> IInputConnectionWrapper#mInputConnection.get() is guaranteed to
be alive.
2. InputMethodManager#mServedInputConnection becomes null or another
object.
-> IInputConnectionWrapper#mInputConnection.get() may not be alive.

Since we know exactly when InputMethodManager#mServedInputConnection is
updated, in theory we do not need to use WeakReference here, and
with this CL we do not use WeakReference anymore. Actually the initial
commit [1] accidentally removed the last strong reference to the active
InputConnection and WeakReference could be null at any time, which was
what we observed in Bug 27824691.

[1]: I1181e067aa5bedbdf0c7ec1bcec479257aea511c
afb6558c8f5e0ee797b252558d7e529e3d946d8f
[2]: Ibe94f115e607a198d12ecd3d4e4f91a7d9469c98
16e2c7b59aacf44df7aaa0d04e0228240907487f
[3]: I66f51da1299532793ef8fa700f35b0811670f235
4e5184f929d2498714bc7734fe10b9b8810cb071

Bug: 27868748
Change-Id: If2a03bc84d318775fd4a197fa43acde086eda442
InputConnectionWrapper.java
cdf90bb6747aa100305def66a7984522600d803e 24-Mar-2016 Yohei Yukawa <yukawa@google.com> Merge changes I16312592,Iadfc226e into nyc-dev

* changes:
Revert "Remove redundant IMM#mServedInputConnection."
Revert "Make sure to call back reportFinish() on the desired Handler."
223db8b6f5a6be51eac16d1f38cf01e4466a4233 24-Mar-2016 Yohei Yukawa <yukawa@google.com> Revert "Remove redundant IMM#mServedInputConnection."

This reverts commit afb6558c8f5e0ee797b252558d7e529e3d946d8f.

It turns out that this CL caused a serious regression Bug 27824691.

Bug: 25332806
Bug: 27824691
Change-Id: I16312592743a6673449c492ee5ba533256d343ea
InputConnectionWrapper.java
1fa5f594a26b00aa137703bb21e186910c1242c6 24-Mar-2016 Yohei Yukawa <yukawa@google.com> Revert "Make sure to call back reportFinish() on the desired Handler."

This reverts commit 16e2c7b59aacf44df7aaa0d04e0228240907487f.

It turns out that I1181e067aa5bedbdf0c7ec1bcec479257aea511c caused
a serious regression Bug 27824691. To revert that CL, we have to revert
this one first.

Bug: 25332806
Bug: 27824691
Change-Id: Iadfc226eb91cc969b77c9d98e04ec3c76fe86ead
InputConnectionWrapper.java
3e5bf786b7ca36fa0cc150fcd8d0e7a69ecb9db0 24-Mar-2016 Clara Bayarri <clarabayarri@google.com> Merge "Keyboard Shortcuts: plumb deviceId through" into nyc-dev
fcd7e80b21cc9db6be00e37371401ea1d0938796 10-Mar-2016 Clara Bayarri <clarabayarri@google.com> Keyboard Shortcuts: plumb deviceId through

Bug: 27673736
Change-Id: Ie72807aa8c2bfd142b081a6a915e101c16d31473
aseIWindow.java
16e2c7b59aacf44df7aaa0d04e0228240907487f 23-Mar-2016 Yohei Yukawa <yukawa@google.com> Make sure to call back reportFinish() on the desired Handler.

Before exposing #reportFinish() as a public API, we have to fix an
existing bug that my previous CL [1] for Bug 26945674 forgot to take care.

Currently BaseInputConnection#reportFinish() is always called by using
the root view's Handler. We should move the logic to call
BaseInputConnection#reportFinishInputConnection() from ViewRootImpl to
IInputConnectionWrapper to make sure that the method in question can
always be called on the desired Handler.

To make things simple, instead of explicitly calling #reportFinish()
from IMM, this CL let ControlledInputConnectionWrapper#diactivate()
internally call #reportFinish() as needed. This makes it easier to make
sure that #reportFinish() is called after all the queued method calls
are handled.

[1]: Id9e579bb3e2966986cdcb1c34bc8cacfeca2e1a9
612cce92ad96eda1146c3abd2afa7aaa4d4f2b3f

Bug: 25332806
Change-Id: Ibe94f115e607a198d12ecd3d4e4f91a7d9469c98
InputConnectionWrapper.java
afb6558c8f5e0ee797b252558d7e529e3d946d8f 23-Mar-2016 Yohei Yukawa <yukawa@google.com> Remove redundant IMM#mServedInputConnection.

Following two fields have basically the same lifetime.
- InputMethodManager#mServedInputConnection
- InputMethodManager#mServedInputConnectionWrapper
Hence we do not need to maintain both of them.

This is a preparation CL for Bug 25332806 and does not change any
user-visible behavior.

Bug: 25332806
Change-Id: I1181e067aa5bedbdf0c7ec1bcec479257aea511c
InputConnectionWrapper.java
19a80a1e807acd00bec999eaac7812da6ffce954 15-Mar-2016 Yohei Yukawa <yukawa@google.com> Tell IMS about missing InputConnection methods.

Summary:
This CL introduces a unified mechanism to deal with the situation
where the application directly implements InputConnection but some of
methods are not implemented. Note that there should be zero overhead
when the application extends BaseInputConnection or
InputConnectionWrapper.

Background:
When ever we add a new method to InputConnection, there has been a
risk that existing applications that directly implement
InputConnection can get java.lang.AbstractMethodError exception at
runtime, because older SDKs do not require the application developer
to implement the methods that are newly added in later SDKs. Because
of this we strongly discouraged developers to directly implement
InputConnection interface, and encouraged them to subclass
BaseInputConnection or InputConnectionWrapper instead. That said, as
requested in Bug 26945674, there is a certain demand to be able to
implement InputConnection without depending on BaseInputConnection.
The goal of this CL is to provide a reliable and sustainable solution
to above missing method scenario in InputConnection.

One of the reasons why dealing with missing InputConnection methods is
so difficult is that what InputMethodService receives to communicate
with the target application is actually a proxy class
com.android.internal.view.InputConnectionWrapper
that runs in the IME process and immediately returns true for most of
methods in InputConnection such as #commitText() and
#finishComposingText(). Because of this asynchronous nature, it is
too late to change the actual return value that the IME receives when
the application receives those one-way asynchronous IPC calls.

Solution:
To handle those cases, this CL checks the availability of
InputConnection methods that did not exist in the initial release
before the target application calls startInput(), and let the
application to send its availability bits to IMMS so that
InputConnectionWrapper running in the IME process can be initialized
with such availability bits. Note that we do know that
BaseInputConnection and its subclasses support all the InputConnection
methods, hence for most of applications we can just assume that all
the methods are available without reflection.

With such availability bits, InputConnectionWrapper is now able to
gracefully return failure code to the IME because the availability of
those methods is immutable, except for a tricky case where the
application relies on a proxy object that dynamically changes the
dispatch target.

Here is the list of APIs that we start checking the availability in
this CL.
[API Level 9+]
- InputConnection#getSelectedText(int)
- InputConnection#setComposingRegion(int, int)
[API Level 11+]
- InputConnection#commitCorrection(CorrectionInfo)
[API Level 21+]
- InputConnection#requestCursorUpdates(int)}
[API Level 24+]
- InputConnection#deleteSurroundingTextInCodePoints(int, int)
- InputConnection#getHandler()

Ideas alternatively considered: Default methods in InputConnection
We once considered having default methods in InputConnection but
abandoned this idea because it does not directly solve the problem
about how to tell the that the API does not take effect.
Also having default methods would make it difficult for application
developers to be aware of newly added methods in InputConnection.

Bug: 27407234
Bug: 27642734
Bug: 27650039
Change-Id: I3c58fadd924fad72cb984f0c23d3099fd0295c64
InputMethod.aidl
InputMethodManager.aidl
nputConnectionWrapper.java
0ffd49cbe0ab4c13fd5528abacade898a8cff481 13-Feb-2016 Jorim Jaggi <jjaggi@google.com> Always consume bottom insets when navigation bar is force shown

When an app requests SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION but we
force show the navigation bar, we need to treat for the app like
there is no virtual navigation bar on the device. Because if you
combine it with FLAG_HIDE_NAVIGATION, you'd expect the navigation
bar gets hidden but it doesn't, so there could be content that
overlaps with the navigation bar.

Bug: 27157904
Change-Id: I088e02eae2e723c35e9cb4873de6b1325458533b
aseIWindow.java
05c25f8a3a033816ac25aa5cd7db5b1ab495bc3f 22-Feb-2016 Yohei Yukawa <yukawa@google.com> Unify windowGainedFocus() and startInput().

This is a safe refactoring that changes nothing.

In order to improve the keyboard dismissal lags [1][2], we have used
IMMS#windowGainedFocus() as a combined event to do startInput() in
certain situations.

To make the intent of those CLs clear, this CL renames
IMMS#windowGainedFocus() to IMMS#startInputOrWindowGainedFocus(). Note
that these are @hide internal IPC protocols. Hence this change is never
observable to application developers.

[1] I8494cbd6e19e2ab6db03f2463d9906680dda058b
a82ba54b0bbc3ff41f29db3998806cb45b261d58
[2] Icb58bef75ef4bf9979f3e2ba88cea20db2e2c3fb
7663d80f6b6fd6ca7a736c3802013a09c0abdeb9

Bug: 25373872
Change-Id: I56934f18e30d90fcdf77bcbb0c35a92a5feb1b82
InputMethodManager.aidl
612cce92ad96eda1146c3abd2afa7aaa4d4f2b3f 12-Feb-2016 Yohei Yukawa <yukawa@google.com> Introduce InputConnection#getHandler().

Currently there is an internal hidden class named
ControlledInputConnectionWrapper which works as a proxy in the
application process to receive incoming binder calls from input method
and dispatch those method calls again on an appropriate thread.
Although this is a kind of implementation details, basically you can see
the same design everywhere in the Android.

Currently ControlledInputConnectionWrapper is initialized with
view.getHandler(), where the view here is the View which was used to
call View#onCreateInputConnection(). This is actually a reasonable
behavior because we have generally assumed that there the only
reasonable way to implement InputConnection is to extend
BaseInputConnection, which is designed to be able to work only on the
UI-thread associated with the target view.

However, on Android N and onward, we are going to ensure that
BaseInputConnection can be re-implemented on top of public APIs [1].
Although most of applications should not try to do that, for certain
applications such as web browsers and WebView it may make sense to let
custom InputConnection implementation run with a custom Handler so that
the application can respond to the IME without blocking the UI thread.

To do that, this CL introduces a new method
InputConnection#getHandler(), which changes nothing as long as it
returns null, but if it returns non-null Handler, InputMethodManager
will use it to initialize ControlledInputConnectionWrapper.

Note that InputConnection#getHandler() is not for IME developers.
It just returns null when called in the IME process.

[1] See Bug 24688781 for details.

Bug: 26945674
Change-Id: Id9e579bb3e2966986cdcb1c34bc8cacfeca2e1a9
nputConnectionWrapper.java
64b715736847ca53864e86b78e94b685ada0e5c8 28-Jan-2016 Alan Viverette <alanv@google.com> Don't move non-modal popups in response to global layout

Bug: 26799074
Change-Id: Id363342f65b89c624f672ec0276408003e41008f
enu/CascadingMenuPopup.java
enu/StandardMenuPopup.java
a4a58efe8203d63a9a6bf78b0fa9f2992b25871b 27-Jan-2016 Jorim Jaggi <jjaggi@google.com> Fix app staying in drag resizing when undocking

When dismissing the docked stack, the fullscreen stack stayed in drag
resize mode because it got a relayout, but because the bounds didn't
change (it switches to the fullscreen layout a bit earlier) it never
called WM.relayoutWindow, so it stayed in drag resize mode indefinitely.

To fix this, introduce forceRelayout in Window.resized(), which makes
sure the client always calls relayoutWindow. Set this to true whenever
drag resizing is changing.

For some very weird reason this also broke that home button was not
responding anymore.

Bug: 26806532
Change-Id: I4b39c1c419a166aa7093c31226f2a4915f642328
aseIWindow.java
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
DropPermissions.aidl
ec6a447c86b03f5896fdb717de530c8abf8887f9 22-Jan-2016 Vladislav Kaznacheev <kaznacheev@google.com> Restore correct mouse pointer after drag and drop

This CL introduces IWindow.updatePointerIcon method.
When the drag is complete, this method is called on the window
directly under the pointer.

Same method can be used in the future to update mouse pointer
when a window appears or disappears.

Bug: 24415739
Change-Id: Ia7b0522448cb3cd754da5e24696060d3b3bf2e50
aseIWindow.java
91098574f90277128415e9593cce1e495cc51465 19-Jan-2016 Alan Viverette <alanv@google.com> Animate context popup menu around origin point

Also enables the context popup menu enter transition.

Bug: 25801140
Change-Id: Id7fb384e8ac8974189b32a052352bd2f6cbb176e
enu/CascadingMenuPopup.java
enu/MenuPopup.java
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
ac3e599069e1b87ea190f008aef60a506c8561c7 18-Jan-2016 Yohei Yukawa <yukawa@google.com> Merge "Introdude IC#deleteSurroundingTextInCodePoints()."
f1fc5a0fe802f8cbf477b1ef54b25127818e091d 15-Jan-2016 Yohei Yukawa <yukawa@google.com> Merge changes Ib5ea8131,I571d6cc9

* changes:
Add a new API IMM#dispatchKeyEventFromInputMethod().
BaseInputConnection shouldn't rely on @hide APIs.
c89e22a6ff227089fde26daea186346029d1b32c 14-Jan-2016 Yohei Yukawa <yukawa@google.com> Introdude IC#deleteSurroundingTextInCodePoints().

This CL introduces a API variant of IC#deleteSurroundingText(), named
IC#deleteSurroundingTextInCodePoints(). Major differences from
the existing one are:
- The lengths are supplied in code points rather than code units.
- This API does nothing if there are one or more invalid surrogate
pairs in the requested range. (Failure Atomicity)

Note that due to the asynchronous nature of the input method
architecture in Android, implementing the same logic in the input method
side basically ends up with unreliable and unpredictable results.

Bug: 6526420
Change-Id: I7f6a2c5d3d52079ae71623fd5e40d60c688dd5fb
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
7a66ba9ddb06eea777585df98019e06a92a0587d 13-Jan-2016 Alan Viverette <alanv@google.com> Merge "Clean up lint warnings in popup menu presenter classes"
02cd0f91059f04136bb3817b41305c2909f4f1d5 13-Jan-2016 Alan Viverette <alanv@google.com> Clean up lint warnings in popup menu presenter classes

Change-Id: I6b4cce1c4788b408615af0c93575e02e75b4c3ca
enu/StandardMenuPopup.java
75e097965cc273d33192555b0e65de3dbc1753ce 29-Jul-2015 Clara Bayarri <clarabayarri@google.com> Request Keyboard Shortcuts for SysUI Dialog via Window

Keyboard shortcuts are requested via WindowManager, and
the request pipes through to the view root and the window
callback.

Bug: 22405482
Change-Id: Ic0071e91c7b554be3ac9df71e9539ee8a60e822e
aseIWindow.java
159dd47db34151314e2449347251ad32b30e5ea1 08-Jan-2016 Yohei Yukawa <yukawa@google.com> BaseInputConnection shouldn't rely on @hide APIs.

This is a part of effort to reduce the number of dependencies on @hide
method in BaseInputConnection.

In a nutshell, IMM#notifyUserAction() and IMM#setFullscreenMode() are
something that IME developers should not care about, hence ideally
BaseInputConnection should not rely on them.

IMM#setFullscreenMode():
This @hide method is just for updating an internal state flag about
whether the current IME is in full screen mode or not.

IMM#notifyUserAction():
This @hide methods is just for sending a signal to IMMS so that IME
rotation list (for globe button) can be updated based on the user's
action.

Depending on those @hide methods in BaseInputConnection is problematic
because:

A. We cannot implement InputConnection without relying on
BaseInputConnection, which forces developers to use Editable to
maintain internal text representations.
B. If BaseInputConnection#commitText is overridden,
those @hide method calls can be missed.
C. Currently some method calls of BaseInputConnection() even from
application itself can trigger those @hide method calls. Ideally
those internal events can be dispatched only when those methods are
called from the input method rather than the application itself.

With this CL, those @hide API calls will be moved from
BaseInputConnection to ControlledInputConnectionWrapper so that
developers can forget about them.

Note that BaseInputConnection#sendKeyEvent() still relies on @hide
internal details of IMM. It should be addressed in a subsequent CL.

Bug: 24688781
Change-Id: I571d6cc9c6e461d8994aa7496e7e18be13766411
InputConnectionWrapper.java
28a8468995c71ba3fbba12557d143e7599db38d8 04-Jan-2016 Alan Viverette <alanv@google.com> Avoid NPE when ActionMenuPresenter is intialized with null MenuBuilder

Also adds annotations to accurately reflect nullability.

Bug: 26318920
Change-Id: Ia3b170dd301edfc0088a11ee5764c24bab2f10aa
enu/BaseMenuPresenter.java
enu/IconMenuPresenter.java
enu/ListMenuPresenter.java
enu/MenuBuilder.java
enu/MenuPopup.java
enu/MenuPresenter.java
b23a757aa2f3088c9e9fd226e806aa5963b68d93 18-Dec-2015 Vladislav Kaznacheev <kaznacheev@google.com> Bind DropPermissions life cycle to Activity

Move requestDropPermissions from DragEvent to Activity.
Permissions will be granted using UriPermissionOwner
associated with this activity and revoked when the activity
is destroyed (if DropPermissions.release is not called before that).

Change-Id: Ic8f8fc3f56f57e83b9bc34ae8c96d82c2c9c4e1d
DropPermissions.aidl
9149d2b117aef40f38a7d62c0f8c2bb76eb4e244 15-Dec-2015 Vladislav Kaznacheev <kaznacheev@google.com> Rename and simplify DropPermissionHolder

Rename DropPermissionHolder to DropPermissions and move
all server-side implementation details into a separate class.
Rename DragEvent.getDropPermissionHolder to
requestDropPermissions and make it take the permissions
implicitly.

Change-Id: Ia83f7cb8af07ce13ba9536d24b0f9d63331d8736
DropPermissionHolder.aidl
DropPermissions.aidl
db08925a8fc1fb336b04aaae9da25ffd2fb5fbb7 15-Dec-2015 Alan Viverette <alanv@google.com> Fix build

Change-Id: I3e1708a9e41155b9b00e0365e4392ae66202fdbb
enu/CascadingMenuPopup.java
ecfdaa9157cbc2e108a4b2530f9a3ff8a7469f8b 15-Dec-2015 Alan Viverette <alanv@google.com> Postpone CascadingMenuPopup window creation until show()

This ensures that addMenu() and setters can be called in any order
as long as they occur before the show() call.

Bug: 25853211
Change-Id: I9a643d37c60046326b7d97a38026c27ba247a1b0
enu/CascadingMenuPopup.java
77fb85eda9923970d6f8f699e8d628d37c3dd764 14-Dec-2015 Alan Viverette <alanv@google.com> Only handle Context submenus as dialogs when parent is a dialog

Bug: 25656520
Change-Id: I5841d8f0c3d4a537e2d94aacddb1687d05d5c258
enu/StandardMenuPopup.java
b635fdaf22795817f9417c475e82bfb0191dd5bd 04-Dec-2015 Filip Gruszczynski <gruszczy@google.com> Remove some sized based resource (match support lib removal).

Bug: 25394588
Change-Id: I5b5b446667fc6ec028ec259da236967d3b2d22d2
ctionBarPolicy.java
enu/ActionMenuItemView.java
9643e73951384a0f07364bec8c4f48130478a133 03-Dec-2015 Alan Viverette <alanv@google.com> Merge "Ensure only one context menu is shown at a time"
0466206a6a0d2f6fddf88b9da534a57ba9958ea8 25-Nov-2015 Yohei Yukawa <yukawa@google.com> Merge "Tell the reason why IMM called startInput()."
021627eb5875372dea57ba91fa782fffbfbbc559 25-Nov-2015 Alan Viverette <alanv@google.com> Ensure only one context menu is shown at a time

Refactors the menu helper classes. Both classes now implement a common
MenuHelper interface, which eliminates the need to keep separate helpers
on PhoneWindow and unifies the DecorView showContextMenuForChild()
implementations.

We now explicitly dismiss any previously shown context menu before showing
a new context menu. Previously we relied on the modal nature of the dialog
context menu to prevent multiple menus from being opened at once, but this
is no longer reliable with popup context menus.

Bug: 25656520
Change-Id: Idab3daa6d6888f803f2e33660fe1dd488e4c28d1
enu/ContextMenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuHelper.java
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
35d3f37bd51268cc99d81a3f537ac364d178e851 25-Nov-2015 Yohei Yukawa <yukawa@google.com> Tell the reason why IMM called startInput().

As a preparation to fix Bug 25373872, this CL introduces an additional
int parameter into the following two methods
- IInputMethodManager.startInput()
- IInputMethodManager.windowGainedFocus()
so that IMMS can know why IMM needs to start input. Currently the
"startInputReason" parameter is used only for debug message only when
the OS is rebuilt with flipping IMMS#DEBUG to true. Basically this
should have no impact in production builds except for a tiny overhead
of having one int parameter in some internal IPC calls.

Note that since 7663d80f6b6fd6ca7a736c3802013a09c0abdeb9 [1] basically
IMMS#windowGainedFocus() has been a superset of IMMS#startInput().
Hence we should pass to "startInputReason" parameter to
IMMS#windowGainedFocus() as well as IMMS#startInput().

[1]: Icb58bef75ef4bf9979f3e2ba88cea20db2e2c3fb

Bug: 25373872
Change-Id: Ia1fe120af7d71495c5f3a4fc0ec6390efb8240ca
InputMethodManager.aidl
nputMethodClient.java
708aa9d96441fe359a4c2a2c89e2ab709b367f8a 20-Nov-2015 Alan Viverette <alanv@google.com> Dispatch the actual PopupWindow dismiss callback to PopupMenu

Previously the dismiss callback was called immediately after the menu
received a close request; however, the dismiss callback implies that
the menu's window has finished animating and been removed from the
window manager.

Also cleans up handling of mPopup in MenuPopupHelper to prevent
unnecessary MenuPopup allocations and convert unnecessary fields into
method arguments.

Bug: 25323707
Change-Id: I8e3877ae6c40b4d0f1df23a4ff4fa48a7df34e0d
enu/MenuPopupHelper.java
d6443f60e1d556a772a8b33ec172d2bae44de63a 20-Nov-2015 Alan Viverette <alanv@google.com> By default, display PopupMenu at Gravity.START and resolve X offset

Bug: 25801269
Change-Id: I8c8090a59780c131cee2d56b668f1c4e062b8ebe
enu/MenuPopupHelper.java
711bcdea5f1549f10220315ce840fd553ba83769 18-Nov-2015 Yohei Yukawa <yukawa@google.com> Merge "Tell the reason why IMMS unbinds IME client."
33e81798fa85947f934e262174184b11f97ca7a3 18-Nov-2015 Yohei Yukawa <yukawa@google.com> Tell the reason why IMMS unbinds IME client.

As a preparation to fix Bug 25373872, this introduce an additional
parameter to IInputMethodClient.unbind() so that the IME client
that is running in the application side can know why IMMS needs
to unbind the connection.

In future the "unbindReason" parameter is supposed to be used to
optimize the behavior of IMM runtime running in the application process,
but for now it is not used unless we build the sytem with debug message
enabled. Hence there should be no user-visible change with this CL.

Bug: 25373872
Change-Id: I74e83c8ca9d1d53e31e9c7b5bda1dec6274e59c8
InputMethodClient.aidl
nputMethodClient.java
6c54e72892bdddd8453cfce40725ed3159d53b11 17-Nov-2015 Filip Gruszczynski <gruszczy@google.com> Swtich from max_action_buttons resource to a method.

We want to limit the number of size thresholds that an application will
report. Instead of using a dimen resource that will increase the number
of thresholds, we calculate the max number of action buttons dynamically
in code.

Bug: 25394588
Change-Id: I8ece331cd02fb116b49734003cec112708d27f85
ctionBarPolicy.java
253a20fad8703e21c7298fe66e0f3f53d4e63c14 03-Nov-2015 Jorim Jaggi <jjaggi@google.com> Fix black holes and flickering in docked resizing

When we start a resize with the docked stack divider,
set the surface background to be full-screen, and use
the traditional surface clipping/positioning in window
manager to adjust the size. This ensures that we don't
have any black holes because of asynchronicity (except
at the very beginning, but this can be worked around
later), and the position of the right/bottom activity
is always in sync with the position of the divider.

Also fix a bug in NonClientDecorView where the first
request to draw was dropped (because the thread hasn't
started up yet), and the main thread was waiting for it
indefinitily.

Bug: 24507122
Change-Id: I623bd48d5be64fac2fba45241b84f265944d200d
aseIWindow.java
00aa5103e2f71ad3f29f53168e37ef7da8ca03f2 03-Nov-2015 Alan Viverette <alanv@google.com> Reduce CascadingMenuPopup's reliance on internal ListView state

Bundles cascading menu information and stores it in a stack representing
the hierarchy of added menus.

Bug: 23970448
Change-Id: I1621d9eb30ff173767b6ebad2a1977127c42d0ad
enu/CascadingMenuPopup.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuPresenter.java
1aba36d721b71de24335bf23aad8692c4fb24421 08-Oct-2015 Alan Viverette <alanv@google.com> Merge "Revert "Reduce CascadingMenuPopup's reliance on internal ListView state""
2ac975deb3d5833ad3daf7f4325f062d875b6036 08-Oct-2015 Alan Viverette <alanv@google.com> Revert "Reduce CascadingMenuPopup's reliance on internal ListView state"

Introduced some regressions. Reverting until we can do better testing.

This reverts commit 8375d639986529969ea5e118de548d29db16ec97.

Change-Id: I9b15d63e52c814ef8985b86f8a50359e39355d39
enu/CascadingMenuPopup.java
enu/MenuBuilder.java
enu/MenuPresenter.java
266cdd4839decf02a142dae250cd78e09d1a0c96 06-Oct-2015 Alan Viverette <alanv@google.com> Merge "Reduce CascadingMenuPopup's reliance on internal ListView state"
8375d639986529969ea5e118de548d29db16ec97 06-Oct-2015 Alan Viverette <alanv@google.com> Reduce CascadingMenuPopup's reliance on internal ListView state

Bundles cascading menu information and stores it in a stack representing
the hierarchy of added menus.

Bug: 23970448
Change-Id: Icc0a96ea2dd4320fd4dae9626435ed82a6165480
enu/CascadingMenuPopup.java
enu/MenuBuilder.java
enu/MenuPresenter.java
9c450411058ab9af71932c756fb0f478b3988f1b 01-Oct-2015 Chet Haase <chet@google.com> Enable activity rendering during window animations

A change was made back in ICS that prevents the view hierarchy from rendering
during window animations. Specifically, it allows the hierarchy to render once (to draw
the results of its first layout), but further drawing is suppressed at the
ViewRoot/performTraversals level until the window animation is complete.

This change was introduced to avoid jank problems that were resulting from
thrashing the GPU by issuing drawing commands from multiple processes simultaneously,
and limited the number of rendering processes to mainly the system server (and
possibly the System UI), which allowed window animations to be much smoother.

This fix contributed to another source of jank, however, in which applications
which attempt to animate when they first appear will not render any frames of
animations until the window animation is done, resulting is a snapping to the resulting
state once the window animations are complete.

Meanwhile, hardware has gotten faster and GPUs have gotten better, and it is time to
revisit this logic. This change disables the earlier fix and allows view hierarchies
to draw normally, regardless of whether window animations are taking place.

Issue #22232939 Remove flag that prevents drawing during window animations

Change-Id: I4c960180771ff09a7088abd77b437586e835a991
aseIWindow.java
ed3912692f0ba8a647d795462e20fcdb67adbacb 01-Sep-2015 Oren Blasberg <orenb@google.com> Make context menus show as popup menus.

This means that right-clicking/long pressing on a view that is registered for
context menu will show the context menu as a popup menu instead.

Bug: 20016398
Change-Id: I96fea60435fff2f981d288521f490f8ff24ada15
enu/CascadingMenuPopup.java
enu/ContextMenuBuilder.java
enu/MenuPopup.java
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
8f3976c8756e85864f49c5fde2f9ff1bbe53d30d 24-Sep-2015 Oren Blasberg <orenb@google.com> Merge "Cascading submenus: Fix a few small issues."
734320d06be5ad6365e6997b4ddbcbdb2778809c 21-Sep-2015 Oren Blasberg <orenb@google.com> Cascading submenus: Fix a few small issues.

1. Open submenus now disappear instantly rather than fading out when
mouse hovers over a non-submenu item.

2. When a submenu is opened on hover, the item that was hovered now
will remain selected instead of being deselected.

3. Fix an issue where if the same chain of submenus was opened more
than once, the submenus could open in a different direction each
time. To fix, we keep track of the direction of opening along the way
and make sure to reset the preferred direction when a submenu is
closed.

Bug: 20127825
Change-Id: I99972cce4ddabe316c5148f1dd79a5d7b3e64b87
enu/CascadingMenuPopup.java
b9acbe40d298612a2ab6bfb15842e63ff8f09af5 16-Sep-2015 Abodunrinwa Toki <toki@google.com> Reduce delay of floating toolbar appearance.

Bug: 21956394
Change-Id: Ide7ee2daffbf618b0a483c377032bf25b20d5b8e
loatingActionMode.java
53023ffdeae781e9750a5ef90a31ee3f5e0c2b4c 18-Sep-2015 Alan Viverette <alanv@google.com> SubMenuBuilder.getRootMenu() should return root menu, not parent

Also fixes incorrect call from MenuItemImpl to dispatchMenuSelected,
which should according to the documentation be passing the direct
parent menu of the menu item.

Bug: 23725571
Change-Id: I2d1f04b80ce05d141ba2dfd77f62bb13b2268625
enu/MenuItemImpl.java
enu/SubMenuBuilder.java
ede5f5480e58dac9f6ddbd36a3085592d79c98ef 16-Jul-2015 Vladislav Kaznacheev <kaznacheev@google.com> Handle content URI permissions on drop

Change-Id: I846071f01ecd1eff8e3a54a1806e68e1a4b335d2
DropPermissionHolder.aidl
23087be7792c2d22173cf022a72d0648aa430ab5 08-Sep-2015 Oren Blasberg <orenb@google.com> Cascading popup menus: open submenu on mouse hover.

When the cascading feature is enabled, users can mouseover a
submenu item in a popup menu to expand and open the new submenu
(after a short timeout). Similarly, if a user mouseovers a
different menu item in the original menu, the submenu gets closed
(again, after a short timeout).

This should complete the implementation of cascading submenu
functionality.

Also fix two other issues:

(1) Update some oudated code in PopupMenu that was still opening
the submenu when a user clicks on a submenu item; this
responsibility now lives within the MenuPopupHelper's delegate
MenuPopup class, so it doesn't need to live in PopupMenu anymore.

(2) Fix an issue where icons would be force-set on a submenu when they
should not be. Instead, decide whether to show icons in a submenu
based on whether to show them in the top level menu, as intended.

Bug: 20127825
Change-Id: Ia46852c7f99436065ab4bc234de94dffc0019666
enu/CascadingMenuPopup.java
enu/MenuAdapter.java
enu/StandardMenuPopup.java
9916282bac8ac8fab7ce5b649c049842acffa29b 10-Sep-2015 Oren Blasberg <orenb@google.com> Fix broken popup menu in Shelf (andromeda).

This addresses a few oversights from an earlier CL:
1. In MenuPopupHelper#show() make sure to create a new MenuPopup in
case the earlier one was dismissed.
2. Ensure the on-dismiss listener gets called even if the MenuPopupHelper's
MenuPopup was previously closed and if a new one is opened.
3. Handle global layout changes properly by having the MenuPopup
re-drawing/positioning itself.

Bug: 23973158
Change-Id: Iee866079770026f0fe17814892abc9825f9760a2
enu/CascadingMenuPopup.java
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
96b22a98cee35c07e2f4507a7841af476c5811ac 10-Sep-2015 Oren Blasberg <orenb@google.com> Merge "Add Cascading submenus implementation."
8e12f8df076d38853e0fedde7ed79e2e8689d59e 02-Sep-2015 Oren Blasberg <orenb@google.com> Add Cascading submenus implementation.

This change adds a new Cascading implementation of MenuPopup. When
enabled, submenus will show up in a cascading side by side fashion
when opened next to popup menus.

Bug: 20127825
Change-Id: Ie3c797fb5dbada7521cd93dc4171950af2be2ff7
enu/CascadingMenuPopup.java
enu/MenuBuilder.java
enu/MenuPopup.java
enu/MenuPopupHelper.java
13612c332a132a20d504e3b9977fbedd2ddeb833 03-Sep-2015 Clara Bayarri <clarabayarri@google.com> am 3b60f72f: am 9b126882: am 01232c50: am 582b186c: am f7b220ab: Merge "Fix Custom action mode menu item onclick is not working" into mnc-dev

* commit '3b60f72fbaaeb7c52f5e86ff9f8d5dade0d0b444':
Fix Custom action mode menu item onclick is not working
c2dde0ae7871bb0e189cdb713b9e24635451eb90 02-Sep-2015 Oren Blasberg <orenb@google.com> Merge "MenuPopupHelper: Factor out a MenuPopup interface."
b23976efdd6ffe42cb3b8fe6650fc77bd9a161e8 01-Sep-2015 Oren Blasberg <orenb@google.com> MenuPopupHelper: Factor out a MenuPopup interface.

Move much of the responsibility into implementations of this interface.
Delegate functionality to it where appropriate.
Provide a standard (non-cascading) implementation for this interface.

This CL should have NO BEHAVIOR CHANGES.

A follow-up CL will provide a cascading implementation, whereby a
config variable will enable submenus to open side by side with their
parent menus. That CL will be the first with functional/ actual behavior
changes.

Bug: 20127825
Change-Id: Iecac2d340dd8750ebe4e99162d447c9411f09227
enu/MenuPopup.java
enu/MenuPopupHelper.java
enu/StandardMenuPopup.java
ddc453a342c4eab5b44dc1c3e96b767203725237 31-Aug-2015 Oren Blasberg <orenb@google.com> Add a new submenu arrow for popup menu items.

This arrow is shown when the item corresponds to a submenu.

Bug: 20127825
Change-Id: Ida70d7707e00e1cda84ed6135333f09a511cd6c5
enu/ListMenuItemView.java
ea2d64492399f336c996a1af511c7acd2ad0192c 01-Sep-2015 Clara Bayarri <clarabayarri@google.com> Fix Custom action mode menu item onclick is not working

BUG: 23575152
Change-Id: I7c07a769bd03c2d756e04f16296f418e965a993f
loatingActionMode.java
f44d90b5c247f0629201d1fa322b83fa55b20608 31-Aug-2015 Oren Blasberg <orenb@google.com> Pull out widget helpers into their own classes.

This is in service of desktop-style submenus. Follow up CLs will make
use of the newly independent classes. MOST of the changes in this CL
are simply moving code from one place to another. Below are
descriptions of the new files added:

DropDownListView:
Decouple this from ListPopupWindow, so other "menu popup"
implementations [forthcoming] may make use of it.
This class is UNCHANGED except for the addition of the
setListSelectionHidden method.

ForwardingListener:
Decouple this from ListPopupWindow, so that other clients of this
listener can expect a more general ShowableListMenu rather than a
concrete ListPopupWindow. This will be useful later when we want to
use something other than ListPopupWindow to show a menu.
This class is UNCHANGED, except for (1) using the getListView() on
popup rather than accessing its mDropDownList member, and (2)
replacing ListPopupWindow return values with ShowableListMenu.

MenuAdapter:
Decouple from MenuPopupHelper so it may be used by forthcoming "menu
popup" implementations rather than just by MenuPopupHelper itself.
This class is UNCHANGED.

ShowableListMenu:
A new interface to encapsulate a menu that can be shown or hidden.
This will be implemented by both ListPopupWindow and a forthcoming
"menu popup" class.

Bug: 20127825
Change-Id: I565b444d25e966ff8b8c6ceac7be8de56a9116df
enu/ActionMenuItemView.java
enu/MenuAdapter.java
enu/MenuPopupHelper.java
enu/ShowableListMenu.java
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
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
loatingActionMode.java
e7998fb00f8f8c75388cb1e2d3cb107a0d01cffb 14-Jul-2015 Yohei Yukawa <yukawa@google.com> am a6b4eaf5: am 1e01d621: am 17dce343: am be27832b: am 12952c79: Merge "Allow FloatingToolbar to be outside of the attached window." into mnc-dev

* commit 'a6b4eaf5bbcef6331981da5c52c1375c6f2b700c':
Allow FloatingToolbar to be outside of the attached window.
bafc908304d49e8f7f7c5e52772c75da66e4daa3 14-Jul-2015 Yohei Yukawa <yukawa@google.com> Allow FloatingToolbar to be outside of the attached window.

Currently PopupWindow used for the floating toolbar specifies
neither FLAG_LAYOUT_NO_LIMITS nor FLAG_LAYOUT_IN_SCREEN.
As a result, the floating toolbar can overlap the selected
text when the attached window does not have enough height.

Here is the repro code.

final TextView textView = new TextView(this);
textView.setLayoutParams(
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
textView.setText("A test sentence.");
textView.setTextIsSelectable(true);
final AlertDialog dialog = new AlertDialog.Builder(this)
.setView(textView)
.create();
dialog.getWindow().setGravity(Gravity.BOTTOM)
dialog.show();

If you tap a word in the dialog, the floating toolbar
unintentionally overlaps the selected text due to the limited
height of the AlertDialog.

It also turns out that just calling
PopupWindow.setClippingEnabled(false)
to specify FLAG_LAYOUT_NO_LIMITS is not sufficient and ends up
showing the toolbar on the NavBar because we have mistakenly
compared bounds in window-local coordinates
(e.g. FloatingActionModemContentRectOnWindow) with bounds in
screen coordinates (e.g. FloatingActionMode#mScreenRect).
Hence the confusion of window-local coordinates and screen
coordinates in FloatingToolbar and FloatingToolbar also needs
to be addresses.

To summarize here are the notable changes in this CL:
- Specify FLAG_LAYOUT_NO_LIMITS so that the floating
toolbar can be placed outside of the attached window.
(We do this with PopupWindow#setClippingEnabled)
- Switch to use screen coordinates from window-local
coordiantes in FloatingToolbar and FloatingActionMode
because some system components such as WindowManager
prefer screen coordinates.
- Put -OnScreen suffix for Rect and Point variables
as long as they are in screen coordinates.

Bug: 22335001
Change-Id: I71a8d356e868dc7715b030ca1078da4ec39368c3
loatingActionMode.java
31f581c5a64320d9a90ce3fb1a4625f94f4f8021 02-Apr-2015 Jun Mukai <mukai@google.com> Introduces mouse actions for popup menu.

- mouse hover moves the selected item in the menu. It moves
the selection rectangle, and further up/down key or enter
key will start from the hovered item.
- when the mouse exits from the entire popup window, the
selection is canceled. Further up/down key will start from
the first item.

To implement these behaviors, and consider about other keyboard
behaviors which is special to menus, I believe it justifies
to create another class for the menu popups rather than using
ListPopupWindow directly.

Bug: 19642104
Change-Id: I5e405c0491c67fdef9764898701119979ec13a9f
enu/MenuPopupHelper.java
4603bd34ce8a5557729e3912a081ec9f8c0d7ab5 07-Jul-2015 Abodunrinwa Toki <toki@google.com> Merge "FloatingToolbar: Offset visible rect by the rootview's offset" into mnc-dev
2bc8485ba79cf6fa95f80b105ed914d245178a0c 01-Jul-2015 Chris Banes <chrisbanes@google.com> Merge "Fix memory leak in setActionProvider() - framework edition" into mnc-dev
5e2310030b538d934606e29dbd11bc5736c3c1c5 01-Jul-2015 Abodunrinwa Toki <toki@google.com> FloatingToolbar: Offset visible rect by the rootview's offset

windowSoftInputMode="adjustPan" config causes the root view to be
offset if necessary when the soft keyboard is shown to keep the text
selection visible. Account for this offset when calculating the
global visible rect of the textview in relation to the screen.

Bug: 21687644
Change-Id: Id44cad387d0a3f1f063880497c234052924717ea
loatingActionMode.java
c8f6ecc265656cdf68d2010a4e04666017c3b907 30-Jun-2015 Chris Banes <chrisbanes@google.com> Fix memory leak in setActionProvider() - framework edition

Caused by ActionMenuItem's SubUiVisibilityListener
not being nulled when it is replaced via setActionProvider().

BUG: 22189734
Change-Id: Id4deaa05cd5554ca7bdf969a592e4812e39dcb75
enu/MenuItemImpl.java
1b57653b50892f143241ae0f0beb2246ca4b2aa7 30-Jun-2015 Abodunrinwa Toki <toki@google.com> Fix floating toolbar flicker in ExtractEditText mode.

Fixed by making sure to update visibility immediately after setting a
hide flag on the FloatingToolbarVisibilityHelper.

Bug: 22101632
Change-Id: Iea2d9786c14f6451da836e55f0d880025aa00ed2
loatingActionMode.java
c107b0ecdcd4e2f89ae4bec818c3a94f45c3c15e 26-Jun-2015 Abodunrinwa Toki <toki@google.com> Fix FloatingToolbar flicker in reaction to text cursor blink.

1. Reposition the toolbar on predraw only when positioning has changed.
2. Update the toolbar popup's position only if the content rect changed.
3. Fix FloatingToolbarPopup.cancelOverflowAnimations().
The previous implementation wasn't actually cancelling the animation.

(1) is enough to fix the bug. But (2) and (3) fix issues in the
toolbar directly related to this bug.

Bug: 22039189
Change-Id: I84ec793d788f9402a1f8635e68e3344746f6af07
loatingActionMode.java
07e440b2786a5104129a8776a21172539fb4c4a0 19-Jun-2015 Abodunrinwa Toki <toki@google.com> Merge "Fix FloatingToolbar flickers." into mnc-dev
50057943fbf36c84c220d47115e7cdd13fa01a4c 19-Jun-2015 Andrei Stingaceanu <stg@google.com> Merge "Cannot select text after rotation in extract mode" into mnc-dev
972ab4f8588c365cf9c06e1f22b30a96fb0a06fc 17-Jun-2015 Abodunrinwa Toki <toki@google.com> Fix FloatingToolbar flickers.

This is fixed by avoiding calling toolbar.show() in PhoneWindow.
FloatingActionMode coordinates whether or not the toolbar should be
visible. PhoneWindow differs to it.

This CL also adds a new API:
ActionMode#onWindowFocusChanged(boolean)

Bug: 21617792
Change-Id: Ic49ce1000ce9c782d0f9e17e3d024d462c7b758b
loatingActionMode.java
da589dffddaf4046d3b4fd8d14d5f984a1c4324a 17-Jun-2015 Andrei Stingaceanu <stg@google.com> Cannot select text after rotation in extract mode

The InputConnection did not report the fullscreen mode to
the InputMethodManager if the connection was not active
which ended up feeding the Editor false information about
when extracted mode will be started.

Bug: 21455064
Change-Id: Id10315efc41d86407ccfb0a2d3956bcd7c0909b8
InputConnectionWrapper.java
15a6c89f46420371115b1648bd2f3925f4bcf7ed 17-Jun-2015 Abodunrinwa Toki <toki@google.com> Allow content rect to overshoot the bottom view bounds by 20dp.

Bug: 21816429
Change-Id: I84013286896d145c9501351bc6a638cbda12e8c0
loatingActionMode.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
loatingActionMode.java
a41b78973db3dfde159f7d641f794f462ad323d3 09-Jun-2015 Chris Banes <chrisbanes@google.com> API council review feedback for ActionMenuView

Reverts "MenuItem, navigation and overflow icon tinting" CL,
and adds getter and setter for the overflow icon to ActionMenuView
and Toolbar.

BUG: 21571899

Change-Id: I591f43650356443fa3256e4d74e28b6ddd8c2b33
enu/ActionMenuItem.java
enu/MenuItemImpl.java
d9b0acd2eb8d844b9f901fc62e0de74c1a7d8430 10-Jun-2015 Chris Banes <chrisbanes@google.com> Merge "Fix location for ActionMenuItemView cheat sheet" into mnc-dev
d74f960eceb98042ede53f74d02e174eb1ad5944 08-Jun-2015 Chris Banes <chrisbanes@google.com> Fix location for ActionMenuItemView cheat sheet

Currently handling does not take the screen position into
account.

BUG: 21690674
Change-Id: I7e957d453bffd5c9bf5ac61a17fcab7d00fec5b6
enu/ActionMenuItemView.java
7d3b8833df5857f5cc70d6c101abe7501fa22b49 08-Jun-2015 Abodunrinwa Toki <toki@google.com> Merge "Fix ActionMode.snooze API" into mnc-dev
9e211282d3ee54c9840947951593554c3bd5a77c 05-Jun-2015 Abodunrinwa Toki <toki@google.com> Fix ActionMode.snooze API

Bug: 21572677
Change-Id: If9fdb8ace3773b983418b0148082712644fd1fa5
loatingActionMode.java
601523ad007923779d156aaa8dc229468773e48c 04-Jun-2015 Abodunrinwa Toki <toki@google.com> TextView: Make sure the contentRect is within visibile bounds.

Bug: 21620604
Change-Id: Idd0d891e423316b2ebacf883fd3cbfff9ef69743
loatingActionMode.java
2217f61e51ba4b19c56b19297c1e9cf74d7d860f 26-May-2015 Filip Gruszczynski <gruszczy@google.com> Revert "Revert "resolved conflicts for merge of 47249f2a to mnc-dev""

This includes the fix for the broken dialog windows. The outsets will
only be calculated and applied if the window is full screen, since
they don't make much sense otherwise.

This reverts commit 4bb6b751fbbb218e8a298db4aa008472a0aa8d31.

Change-Id: I977a85a78c990c1840784dc0be0dddd5a6d84e6b
aseIWindow.java
6a0b277c7c5759cae8151e87cbc11c5a2c7332a2 26-May-2015 Abodunrinwa Toki <toki@google.com> Hide the floatingtoolbar when content rect is invisible.

Hide the floating toolbar when the content rect is outside the
source view's visible area.

Bug: 21304845
Change-Id: I0dd10ad2cda7a8d9b05c81334cdfbd68c22dbc6a
loatingActionMode.java
4bb6b751fbbb218e8a298db4aa008472a0aa8d31 23-May-2015 Dianne Hackborn <hackbod@google.com> Revert "resolved conflicts for merge of 47249f2a to mnc-dev"

This reverts commit c7becb7ee78881646251ff4846e63eb6b96bf7ec, reversing
changes made to 8562b08f04c1309cf40db1e749d612b6824f1d12.
aseIWindow.java
c7becb7ee78881646251ff4846e63eb6b96bf7ec 21-May-2015 Filip Gruszczynski <gruszczy@google.com> resolved conflicts for merge of 47249f2a to mnc-dev

This is a merge of chin support.

Change-Id: I436b751b3c4aaa6b46cfcdb475e02eedfa5a5635
47249f2a9e49aa9626369517315eafc6b42fd8e9 21-May-2015 Filip Gruszczynski <gruszczy@google.com> am cb89ac84: Merge "Support for devices with a chin." into cw-d-mr1-dev

* commit 'cb89ac84c621e047d81873428325dfd747b90a6b':
Support for devices with a chin.
3e11bf33a6094da92d97702213aa12c67b21c4d1 20-Apr-2015 Filip Gruszczynski <gruszczy@google.com> Support for devices with a chin.

Information about the chin is now part of the config.xml instead of the
theme. It is retrieved by WindowManagerService and passed to the clients
as insets. Clients can adjust their behavior in a way that makes it
invisible to the user, that part of the surface doesn't actually exist.

Bug: 19908853

Change-Id: Iedf57bf3c848201b854f91ffeb3b59187d375c1f
aseIWindow.java
a8151e4ef7987faa7d0ee31bc3013a05e5b76a05 06-May-2015 Abodunrinwa Toki <toki@google.com> Hide floating toolbar when selection is out of bounds.

Bug: 20212141
Change-Id: I7844308e339ba9a5027c629da8090053011e019d
loatingActionMode.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
loatingActionMode.java
827e0facfefd0c0033dcfb1747b4fa6f80f9e0e2 07-May-2015 Jorim Jaggi <jjaggi@google.com> Make sure the app can draw a frame before unlocking

- The mechanism to stop windows drawing while window animator was
animating was somehow flaky. It relied on the fact that the client
would call relayout() whenever the animating state changed. This is
mostly the case, but not for lockscreen animations. Instead, we now
use a push model, where window manager tells the app that the state
has changed.
- In addition, it only stopped drawing if that window was animating,
but then only resumed drawing after all windows have finished
animating. Now, we do this per window, so we only stop drawing for
windows that are currently animating.
- We resume the top activity now at the very beginning of the
unlocking sequence. This gives the app a chance to draw a frame
before the user sees anything. If it's to slow, then we just use the
outdated framebuffer.

Bug: 19964562
Change-Id: Ifef8abd189a3146d854b81b9b948861e4d38c155
aseIWindow.java
0d7d4ef56083543d58ef5835ec594865a547347c 13-May-2015 Clara Bayarri <clarabayarri@google.com> Fix Floating Toolbar appearing after ActionMode was cancelled

The Views created for the Toolbar were not cleaned up properly when the
mode was cancelled by the client in onCreateActionMode, leading to the
toolbar appearing over other views when it shouldn't due to
onWindowFocusChanged showing the Toolbar if it exists.

We don't actually need the views if we don't know whether they are
going to be shown yet, so moved view creation to after onCreateActionMode

Bug: 20713912
Change-Id: Ic0c31d1634e1e96d9981a77b2c769306a8bf1a8d
loatingActionMode.java
14e139179be7daab6ed452105387a3922752c219 07-May-2015 Seigo Nonaka <nona@gogole.com> Retry "Always show auxiliary subtypes from NavBar keyboard icon."

This CL relands I1e50ee42838a1bf64a612da4904aa93458d44ea4, which was
reverted by I3decaf37198e5864a1763a059df4a36ebc70c5a7 due to the build
breakage in 'layoutlib' target, with a proper fix.

Hereafter the original CL description is repeated.

The auxiliary subtypes should be listed if the input method picker is
opened from NavBar keyboard icon. However there is only
IMM#showInputMethodPicker() API to open input method picker and this is
also used from LockScreen or Settings UI. Auxiliary subtypes should not
be listed there(Id7cf5d122). Thus framework shows auxiliary subtypes
based on IMMS#mInputShown and LockScreen state, but it is not a perfect
solution. If a physical keyboard is connected, the soft input may be
gone. As the result, auxiliary subtypes won't be listed even if it is
opened from NavBar keyboard icon.

To fix this issue, this CL introduces IMM#showInputMethodPicker(boolean)
to be able to decide showing auxiliary subtypes by caller.
Note that IMM#showInputMethodPicker(boolean) is still hidden with @hide.
There is no public API change in this CL.

Bug: 20763994
Change-Id: Id156c85535a221235737ea6dcc15a67f1c4b9f71
InputMethodManager.aidl
d130bdc462b163f9afcaf144b477be80959e04d6 07-May-2015 Bart Sears <bsears@google.com> Revert "Always show auxiliary subtypes from NavBar keyboard icon."

CL is breaking the build. Discussed with Seigo and verting until he can take a look at it.

This reverts commit 80ff4ed6bb8dbdad7192d679a01096aa888e090b.

Change-Id: I3decaf37198e5864a1763a059df4a36ebc70c5a7
InputMethodManager.aidl
80ff4ed6bb8dbdad7192d679a01096aa888e090b 04-May-2015 Seigo Nonaka <nona@google.com> Always show auxiliary subtypes from NavBar keyboard icon.

The auxiliary subtypes should be listed if the input method picker is
opened from NavBar keyboard icon. However there is only
IMM#showInputMethodPicker() API to open input method picker and this is
also used from LockScreen or Settings UI. Auxiliary subtypes should not
be listed there(Id7cf5d122). Thus framework shows auxiliary subtypes
based on IMMS#mInputShown and LockScreen state, but it is not a perfect
solution. If a physical keyboard is connected, the soft input may be
gone. As the result, auxiliary subtypes won't be listed even if it is
opened from NavBar keyboard icon.

To fix this issue, this CL introduces IMM#showInputMethodPicker(boolean)
to be able to decide showing auxiliary subtypes by caller.
Note that IMM#showInputMethodPicker(boolean) is still hidden with @hide.
There is no public API change in this CL.

Bug: 20763994

Change-Id: I1e50ee42838a1bf64a612da4904aa93458d44ea4
InputMethodManager.aidl
838e36cda7af884233c06c5b2b5e43ffbed4715b 18-Mar-2015 Clara Bayarri <clarabayarri@google.com> Floating toolbar: Create the FloatingActionMode and use it in DecorView.

This CL
- Creates a new FloatingActionMode
- Uses it for action mode requests of type floating
- Plumbs in the positioning invalidation logic

Change-Id: I379de5b0a87b256946d0a6d8014299cfb78e6734
loatingActionMode.java
4d3494000c8b84d6e6475bf2c938fffeab727ed6 17-Mar-2015 Clara Bayarri <clarabayarri@google.com> Merge "Delete the ActionModeWrapper now that it is not needed anymore."
2c528c2175ec6d49e2db9be807dbc88ba07b5b4c 16-Mar-2015 John Reck <jreck@google.com> am 059ba981: am 386dcbdd: Merge "Frameworks/base: Fix missing cast"

* commit '059ba9814bb07aeebd8bf697fc05ff833c63033b':
Frameworks/base: Fix missing cast
65ac8a2bd77015b4f77acc02276be1c6f07c78f5 15-Mar-2015 Andreas Gampe <agampe@google.com> Frameworks/base: Fix missing cast

Without a cast, the division is integer division.

Change-Id: I050e53778de8b1591a0be16ebbee8eed70eb1528
nimation/FallbackLUTInterpolator.java
af9047161acbd05f1bbc8950955e42e321cddced 13-Mar-2015 Clara Bayarri <clarabayarri@google.com> Delete the ActionModeWrapper now that it is not needed anymore.

Change-Id: I7fcd6cb92a7259168d9f45d9bdfd9ab155a25d0f
ctionModeWrapper.java
4423d91de5300d3fd318bf5bc2d4d7e5bb856abf 02-Mar-2015 Clara Bayarri <clarabayarri@google.com> Add a type parameter to startActionMode() calls.

This requires adding a new method to View and Window.Callback to pass
down the type as a parameter.

For compatibility purposes, the new method implementations keep the
type and call the old method, in case clients have subclassed it.

Change-Id: If5d857f131e33be8cc6a8814f2e9c4e85ad2da25
tandaloneActionMode.java
8fd949e680c15d397084430d4907c16cedfacdda 11-Mar-2015 Alan Viverette <alanv@google.com> Various fixes for popup monkey testing

Ensures PopupMenu works correctly when multiple calls are made to show
and dismiss. Ensure PopupWindow works correctly when multiple calls are
made to showAsDropDown and dismiss (fixes multiple clicks on Spinner).

Bug: 19672907
Bug: 19671831
Change-Id: Ib92accd8fd70a1ff1f8cda27155347b007a4d25b
enu/MenuPopupHelper.java
727899fd0d6fe0de81bb329280e21b5152a1ae52 02-Mar-2015 Clara Bayarri <clarabayarri@google.com> Merge "Floating Toolbar: Wrap the ActionBar ActionMode handling."
c57e7bc3389aeb158cacc54fd1e7e9b5ffdfc01f 13-Feb-2015 Clara Bayarri <clarabayarri@google.com> Floating Toolbar: Wrap the ActionBar ActionMode handling.

Refactor the ActionBar handling of startActionMode to allow handling by
the ActionModeWrapper, using the previously created infrastructure.

Things pending after this CL:
- Representing the floating type
- Supporting two ActionModes in parallel in DecorView, one of each type

Change-Id: Ic126e004bdef5d91d8be3d6a07eea34aa97a611e
ctionModeWrapper.java
9cc36ca1b520c06f882e84b909f3a2b75d303a06 23-Feb-2015 Chris Banes <chrisbanes@google.com> MenuItem, navigation and overflow icon tinting

- iconTint and iconTintMode attrs for MenuItem, with
associated setters.
- navigationTint and navigationTintMode attrs for Toolbar
with associated setters.
- overlflowTint and overflowTintMode attrs for Toolbar
with associated setters.

BUG: 18126050
BUG: 19148351
BUG: 19305408

Change-Id: Ibd1fae7cdbc7a7c42809e52541fae5d8beb18e92
enu/ActionMenuItem.java
enu/MenuItemImpl.java
399b51397b98f9e225410adf11b80c8b9c4b1a91 17-Feb-2015 Clara Bayarri <clarabayarri@google.com> Floating toolbars: Encapsulate StandaloneActionMode view creation.

This CL defines a new interface to be used by ActionModeWrapper.
This allows each client to inject a different primary ActionMode to
the wrapper and keep view creation code next to ActionMode
creation.
The interface method is only called when the wrapper actually
knows that will be the used type, avoinding unnecessary view
creations.

Things pending after this CL:
- Correct handling of ActionModes created by
callback.onWindowStartingActionMode(). This includes all current usages
in an existing ActionBar, as it is handled by Activity. In the current
state, we do not intercept these ActionModes and hence cannot change the
representation.
- Representing the floating type
- Supporting two ActionModes in parallel in DecorView, one of each type

Change-Id: Ic38e209877c3876161d8dd56902e25b51fbe40b6
ctionModeWrapper.java
ed2a54cfd336bb935f281c04509ecd48c8cf116d 05-Feb-2015 Clara Bayarri <clarabayarri@google.com> Floating Toolbars: Wrap the ActionMode creation in DecorView

This change will allow us to create ActionMode representations on the
fly after onCreateActionMode by using the Decorator pattern. The new
ActionModeWrapper will be responsible for the creating the
appropriate ActionMode depending on the type chosen by the client,
and setting it up.

Things pending that are NOT addressed by this CL:
- ActionModes created by callback.onWindowStartingActionMode(). This
includes all current usages in an existing ActionBar, as it is
handled by Activity. This requires some additional refactoring.
- Representing the floating type
- Moving the view creation code specific to StandaloneActionMode
from DecorView to ActionModeWrapper, decoupling DecorView from
StandaloneActionMode completely
- Supporting two ActionModes in parallel in DecorView, one of each type

Change-Id: I1a8db711f53b771eac74f0e6496106acf1ca2727
ctionModeWrapper.java
tandaloneActionMode.java
4456b81f22b67d124b85e1a7b1a15a877b604e8b 08-Jan-2015 Alan Viverette <alanv@google.com> Merge "Add popup window accessors for anchor overlap, gravity, window"
a54956a0bc611b1e9b3914edc7a604b59688f6b7 08-Jan-2015 Alan Viverette <alanv@google.com> Fix accessibility delegation

Ensures that delegate code is run last. Previously, calling the super
method from an accessibility delegate set on a widget would only run
code in the widget's parent. Next, the delegate code would run. Finally,
the widget's code would run. As a result, the widget code would override
any data supplied by the delegate.

By moving all overridden code to internal methods, we ensure that the
call chain for super includes the widget's parent code followed by the
widget's code. The delegate code will always run last.

BUG: 17641433
Change-Id: Ib9d403156c1fc4fb04f65f3c126d1277a44b3740
enu/ActionMenuItemView.java
enu/ListMenuItemView.java
75d837954c3673647e3a899f03cd56c0892066e0 08-Jan-2015 Alan Viverette <alanv@google.com> Add popup window accessors for anchor overlap, gravity, window

Cleans up comments and some code in PopupWindow.

BUG: 18245054
Change-Id: I2111d0c194ee1a39aaa721083041fc139efcf630
enu/MenuPopupHelper.java
808fe6f99fba753e0ec4c5e90de0ff7a2140e8a6 03-Nov-2014 Adrian Roos <roosa@google.com> Merge "Fix colored status bar panning issues" into lmp-mr1-dev
9c79504225f60c72c947220b6aca928f11279e1c 29-Oct-2014 Craig Mautner <cmautner@google.com> Add enter-animation-done callback for system windows

Existing hidden methods allow activities to be notified when their
windows have completed animating in. This change adds that capability
to system windows using a ViewTreeObserver callback since system
windows lack an activity token.

The first subsystem to use this is the UserSwitchingDialog which was
previously using a 250 msec timeout to dismiss the dialog. That
deadline was often missed leaving the user with no dialog on the
screen during the transition.

Fixes bug 16661752.

Change-Id: I70789e0d9c07112f275e76fb82850926305f290d
aseIWindow.java
0e7ae4efe8f424fa1ced8f7e5f3d8ae78066592b 01-Oct-2014 Adrian Roos <roosa@google.com> Fix colored status bar panning issues

Bug: 17695293
Change-Id: I6a1267f8dff27e7b78ab312a71648ef16ab9483b
ootViewSurfaceTaker.java
e38eb4d4ef504c0b72d51dfcc8fcd06cf73c0d50 23-Oct-2014 Alan Viverette <alanv@google.com> Revert "Check MenuItem.isVisible() for keyboard shortcuts"

Just kidding we do want this to work like it used to.

This reverts commit e354a9e4da56da45d7035e1e93301554c5faf32e.

Change-Id: Ia51050a93e25c1ad16144b0da3f6178a98ad971a
enu/MenuBuilder.java
e354a9e4da56da45d7035e1e93301554c5faf32e 21-Oct-2014 Alan Viverette <alanv@google.com> Check MenuItem.isVisible() for keyboard shortcuts

Parity with support-v7 change.

BUG: 18021345
Change-Id: I583b586d451a21bbd207d2b0584a396e1125ee59
enu/MenuBuilder.java
29632521c36548d71b610fc4de864281bab4dfb4 16-Oct-2014 Alan Viverette <alanv@google.com> Add style support to PopupMenu, clean up constructor javadoc

BUG: 18002523
Change-Id: Ice492686b814460248ccbe9727c64dd002e7ed7a
enu/MenuPopupHelper.java
a9ddb8dc23b253c53f24ceb81e9d596c072d834e 18-Sep-2014 Alan Viverette <alanv@google.com> Use action bar theme for action modes, fix ViewStub inflation theme

BUG: 17262483
BUG: 17513621
Change-Id: I74764570a11da162a224e94978e21e52d17e2e84
tandaloneActionMode.java
3fadee479107f0494e1e190aba2a1eea12cb0a75 08-Sep-2014 Yohei Yukawa <yukawa@google.com> API Review: Clean up removed APIs

This CL removes old API signatures marked as @removed
in the follow CLs.
- Ic8c6fab58c01206872a34e7ee604cdda1581364d
- Ia8cbb9f6b41cd9509fc0147fd68763dfde593ffc
- I772c48ff18918e48a81e807b48ff907614485c09

This is just a clean-up CL. No behavior change is intended.

BUG: 17200900
BUG: 17320996
BUG: 17365414
Change-Id: Ibfbd5cc1cdebb8851c73477cff55c9b2d631fdea
nputConnectionWrapper.java
d8636ea7ca78df83d6b04088eab7853f15f3e999 03-Sep-2014 Yohei Yukawa <yukawa@google.com> API Review: InputConnection

This CL does nothing but rename some L API candidates
in InputConnection class, as per requested.

- requestUpdateCursorAnchorInfo()
-> requestCursorUpdates()
- REQUEST_UPDATE_CURSOR_ANCHOR_INFO_IMMEDIATE
-> CURSOR_UPDATE_IMMEDIATE
- REQUEST_UPDATE_CURSOR_ANCHOR_INFO_MONITOR
-> CURSOR_UPDATE_MONITOR

BUG: 17320996
Change-Id: I772c48ff18918e48a81e807b48ff907614485c09
InputConnectionWrapper.java
nputConnectionWrapper.java
1960b324345cd4b1808393a783ec4b84be9dd7de 22-Aug-2014 Yigit Boyar <yboyar@google.com> Merge "Fix RTL bug for actionbar tooltips" into lmp-dev
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
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
nputConnectionWrapper.java
d719539f91d4f5cf6c0f9be0b68b750dcd443433 22-Aug-2014 Yigit Boyar <yboyar@google.com> Fix RTL bug for actionbar tooltips

Bug: 12570378
Change-Id: I13ba94c8b736a3a80a8d79e95bd18b93a1157303
enu/ActionMenuItemView.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
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
InputMethodClient.aidl
InputMethodManager.aidl
nputConnectionWrapper.java
3d0f21dab8d891b9aebdd5277348d549eeb843e6 11-Jul-2014 Alan Viverette <alanv@google.com> API for inflating action bar menus against a different theme

BUG: 16162344
Change-Id: I5bf9f133de56a1830028bca6326cc2c50888a052
enu/MenuBuilder.java
enu/MenuPopupHelper.java
enu/MenuPresenter.java
fa10423fa00f3495e451016acba9b6848eb995c9 21-Jun-2014 Adrian Roos <roosa@google.com> Add stable insets for stable system windows

Adds a new kind of inset that only accounts for stable system
windows like the system or navigation bar.

Bug: 15457292
Change-Id: I681b711f6f40a94c25b7acd3a44eb3539486afab
aseIWindow.java
cb923d99e9ec2f7b6b40a7c89c83a6caaa03b016 01-Jul-2014 Chet Haase <chet@google.com> null-check before derefing title in MenuItemImpl

The toString() method in MenuItemImpl returns mTitle.toString(),
which crashes when the title is null (which it can be, since there
is no requirement that a title be non-null, and you can get one
by simply not assigning a title to begin with or by setting it
to null).

Issue #13420311 MenuItemImpl can't handle a null title

Change-Id: I701d1d565f1d254ffdd41ca64c1abaf2906edb79
enu/MenuItemImpl.java
3d1e8129ebd69db49d80e5d598f608c59b884cdf 06-Jun-2014 Yohei Yukawa <yukawa@google.com> Introduce a sequence number to avoid redundant IPCs

This CL introduces a sequence number to avoid redundant IPCs
between IMM and IMMS. The basic concept is that:
1. IMMS maintains a sequence number for #notifyUserAction.
2. IMMS increases the sequence number whenever the current
IME/subtype is changed.
3. IMMS notifies the new sequence number to IMM.
4. IMM maintains the last sent sequence number and the next
sequence number. IMM should call #notifyUserAction only
once per particular sequence number.
5. IMMS ignores #notifyUserAction if the specified sequence
number is not the expected one.

BUG: 7043015
Change-Id: I19ad8542659bc092b92ee13eb9f1d68ddd4b815a
InputMethodClient.aidl
InputMethodManager.aidl
nputBindResult.java
0297051162193ef2b7d906409868e404f77e4c31 05-Jun-2014 Yohei Yukawa <yukawa@google.com> Trivial method renaming for notifyTextCommitted

This CL does not change existing behavior but only renames
notifyTextCommitted with notifyUserAction so that we can use
not only text commit but also other actions such as just typing
a character will be used as a trigger to update the IME
rotation order for better IME switching experience.

BUG: 7043015
Change-Id: I7f3e13a7226ef0dceee82b67e8a0d8536f7e9807
InputMethodManager.aidl
918988c1ce5af002d41c7ac37f3fa490558b0c90 19-May-2014 John Reck <jreck@google.com> Baby steps

Run ViewPropertyAnimators with no listeners on the RenderThread

Change-Id: I7ff5300db96c7f4b59b09e3fff8a0df173f132dd
nimation/FallbackLUTInterpolator.java
ad2f8e334f3ef22d3e412b0660a2e1f996f94116 16-May-2014 Alan Viverette <alanv@google.com> Update ripple behavior, use render thread animation

Change-Id: Ib6bc1e08b05d29606f452961963d58b8fc866746
nimation/FallbackLUTInterpolator.java
c8ac775659fd252ce2cc9a61837c170ff70f0a1a 13-May-2014 John Reck <jreck@google.com> More native interpolators

Gotta collect 'em all

Change-Id: I3ccc2b5c842b27b906c8a0470fbedc2bf285bc38
nimation/NativeInterpolatorFactoryHelper.java
315c329544d7c593d1072b071cbb92d9afe74021 10-May-2014 John Reck <jreck@google.com> Add TimeInterpolator support to RNA

Bug: 14678626

Change-Id: I6554e7fcd42c49fac3618ca792083bb68e358f55
nimation/FallbackLUTInterpolator.java
nimation/HasNativeInterpolator.java
nimation/NativeInterpolatorFactory.java
nimation/NativeInterpolatorFactoryHelper.java
c2ddd6023688db5ecf6c586e05f55e262b4a802e 06-May-2014 Yohei Yukawa <yukawa@google.com> Introduce new API for floating window support

This CL introduces a new API IMM#updateCursorAnchorInfo for
floating window support.

BUG: 14579622
Change-Id: I61dec2f8fa671ba891da1d4af08975750e3acb04
InputMethodSession.aidl
560f17098f90b15c8894cce127f2fed85f7aeb6b 05-May-2014 Alan Viverette <alanv@google.com> Add support for popups overlapping anchors

BUG: 14471731
Change-Id: I16e8d76caedfebd0c38b8c0b22cd9619d70877c8
enu/MenuPopupHelper.java
1001961f904bac5294aaf73a47c2497aa764bf7f 18-Apr-2014 Deepanshu Gupta <deepanshu@google.com> Add view cookies for action bar menus.

The change adds the view cookies for the menus rendered in the action
bar. This enables the IDE to map the menu to the relevant XML Tag in the
menu xml and show the highlighting accordingly.

Change-Id: Idcfc263a8ebe0a4f25afa3a1eb085fa628fd03ca
enu/MenuBuilder.java
15b0bef9250e084bfbceb388716d28ed62ca018f 12-Apr-2014 Jeff Brown <jeffbrown@google.com> am 9e2fde9c: am d912e1f6: Use the display\'s actual state in the view hierarchy.

* commit '9e2fde9c8a3557d6e8d1f3971a421ecdf5c2ce07':
Use the display's actual state in the view hierarchy.
d912e1f6a111fb33118d116bd72da1a328041bca 12-Apr-2014 Jeff Brown <jeffbrown@google.com> Use the display's actual state in the view hierarchy.

Previously, the view hierarchy would suppress drawing whenever the
PowerManager.isScreenOn() method returned false. However, this method
really describes the interactive state of the device rather than the
actual display state. This is especially a problem when there are
multiple displays but it also breaks drawing while in doze mode.

This change makes the view hierarchy consider the actual state of the
display instead on an individual basis.

Bug: 13133142
Change-Id: I69870b6b14a3504607a30562aa48c3452f777c1f
aseIWindow.java
59fee2d5534965f0986e68e0c3562da5e65e6c45 08-Apr-2014 Yohei Yukawa <yukawa@google.com> Merge "Allow IMEs to start/stop receiving onUpdateCursor callback"
e43340c80dc66c45edc793ecd0343774aa34d108 18-Mar-2014 Adam Powell <adamp@google.com> android.widget.Toolbar

Add the new Toolbar widget for use in app layouts.

ActionBar can now be used as a point of control for either a
traditional window decor action bar or for a Toolbar that appears
inline in an Activity's layout.

ToolbarActionBar is currently WIP.

Change-Id: I0da093e5645840f4fd032aa34efa0ae5f1825ff2
enu/ActionMenuItemView.java
b7b7907fb5e4b2252b3c594a6bc4402217fe662a 25-Mar-2014 Yohei Yukawa <yukawa@google.com> Allow IMEs to start/stop receiving onUpdateCursor callback

This CL introduces an API which allows IMEs to start/stop
receiving onUpdateCursor callback upon their request.

BUG: 13388665
Change-Id: I987326872def181dda5d9d701b762f088e0d9c39
InputMethodClient.aidl
InputMethodManager.aidl
77943308f5661636d85cb5e78188dbbc8f0e329e 14-Mar-2014 Yohei Yukawa <yukawa@google.com> am fd2f8d43: am 51b921d0: DO NOT MERGE - Preserve the order of InputMethodManager method calls

* commit 'fd2f8d43419d1f25ced8b2bac96407925dd4c471':
DO NOT MERGE - Preserve the order of InputMethodManager method calls
51b921d0e33302b3f431dcfa15bd6588408525ea 05-Mar-2014 Yohei Yukawa <yukawa@google.com> DO NOT MERGE - Preserve the order of InputMethodManager method calls

Cherrypick of I0f8d33b0c77129f72581bc43e7f4fdc25469b520

This CL allows the Framework class InputMethodManager to behave
in a more deterministic way, that is to say, with an I/O barrier.

InputMethodManager#setAdditionalInputMethodSubtypes is internally
implemented as a RPC to the corresponding counterpart in
InputMethodManagerService. The problem here is that this RPC is
marked as "oneway". As a consequence, this public API call
returns immediately without waiting the additional subtypes are
actually added. This behavior is also not documented so far
unfortunately.

See the following demo code:

Final InputMethodManager imm = ...;
imm.setAdditionalInputMethodSubtypes(id, subTypes);
Final List<InputMethodInfo> ims = imm.getInputMethodList();

Currently, it is not guaranteed that the InputMethodInfo returned
from #getInputMethodList reflects the result of the previous call
of #setAdditionalInputMethodSubtypes because of its undocumented
asynchronous nature.

With this CL, InputMethodManager#setAdditionalInputMethodSubtypes
behaves as if it has I/O barrier. This change should make it easy
for IME developers to use additional subtype mechanism.

BUG: 13033954
BUG: 13291370
Change-Id: I0455b176bfb3176c533ba3241881f05092b98abc
InputMethodManager.aidl
68ec033b7c9ea28155bbb007b01d5dbce2239392 13-Mar-2014 Adam Powell <adamp@google.com> am 75958c29: am 3a153c0d: Merge "Fix a bug in submenu presenter priority handling" into klp-dev

* commit '75958c298477a3d1e556c4fe36e516b9e828c311':
Fix a bug in submenu presenter priority handling
de69575dd1bdafabda8afda8b4251b830ba0c551 12-Mar-2014 Yohei Yukawa <yukawa@google.com> Merge "Preserve the order of InputMethodManager method calls"
190909f2c1b47a0ac9e50a2012cc8eae34391fa7 04-Dec-2013 Adam Powell <adamp@google.com> Fix a bug in submenu presenter priority handling

Now that overflow menus and the PhoneWindow-level ListMenuPresenter
can coexist, make sure that ListMenuPresenter handles submenus spawned
by itself. Introduce an internal API for menus to prefer a specific
presenter when performing item actions.

Bug 11979407

Change-Id: Id0b8fcbb8b310cbb3a63a1e5ea7a89de5d53f86f
enu/ListMenuPresenter.java
enu/MenuBuilder.java
71c8fb92a151f2f64ffbaf551c072179bc46c0da 07-Mar-2014 Jeff Brown <jeffbrown@google.com> am 2b27ef97: am c969450a: am 840c8474: Merge "Add config_supportAutoRotation." into klp-modular-dev

* commit '2b27ef979dba3808cdae6dce32fe27b59197e34c':
Add config_supportAutoRotation.
bcdfc62ae3ac3809e883fc0b4c71ab52a0cdacf8 07-Mar-2014 Jeff Brown <jeffbrown@google.com> Add config_supportAutoRotation.

On some products, it may not make sense to use the accelerometer
to perform auto-rotation. In that case, the product's config.xml
framework resource overlay should set config_supportAutoRotation
to false.

Setting this to false also disables auto-rotation settings.

Bug: 13211999
Change-Id: If9d7d72f2a2c576b14a4ff0afb61ea52c42c3357
otationPolicy.java
c9e5f540a954a878365e88e42f78800d4eafa188 10-Jan-2014 Adam Powell <adamp@google.com> Fix a bug where OnTouchListeners in action views could be removed

ActionMenuPresenter should only replace the touch listener when binding
a generated item view.

Bug 12470259

Change-Id: I8c4c6110065605225a20cb7ed872255282085661
enu/ActionMenuPresenter.java
f06569561fe1c6e898debf8bb9f37331a9f87323 03-Mar-2014 Yohei Yukawa <yukawa@google.com> Introduce InputMethodSubtypeArray for memory efficient IPCs

This CL introduces InputMethodSubtypeArray which compresses
multiple instances of InputMethodSubtype to reduce the risk
of TransactionTooLargeException during IPCs.

There are some IMEs which rapidly adding new subtypes into
their supported language list. One problem here is that each
instance of InputMethodInfo internally owns the list of
supported subtypes. Basically it requires additional
200 ~ 300 bytes for each subtype when InputMethodInfo is
transffered via IPCs. We should keep the size less than
100 KB in typical scenario.

With this CL, the list of InputMethodSubtype is marshalled
with GZIP compression. Approximately one InputMethodInfo is
marshalled within 10 KB even when it has 100 subtypes.

No negative performance impact is observed so far. The cost of
decompression seems to be compensated by another optimization
in this CL. Actually marshalling cost is reduced with this CL
by caching the compressed data on demand.

BUG: 12954290
Change-Id: Ibb2940fcc02f3b3b51ba6bbe127d646fd7de7c45
InputMethodManager.aidl
9e9fbb26395eb983e17a415cf78b3c2ee060ee0e 05-Mar-2014 Yohei Yukawa <yukawa@google.com> Preserve the order of InputMethodManager method calls

This CL allows the Framework class InputMethodManager to behave
in a more deterministic way, that is to say, with an I/O barrier.

InputMethodManager#setAdditionalInputMethodSubtypes is internally
implemented as a RPC to the corresponding counterpart in
InputMethodManagerService. The problem here is that this RPC is
marked as "oneway". As a consequence, this public API call
returns immediately without waiting the additional subtypes are
actually added. This behavior is also not documented so far
unfortunately.

See the following demo code:

Final InputMethodManager imm = ...;
imm.setAdditionalInputMethodSubtypes(id, subTypes);
Final List<InputMethodInfo> ims = imm.getInputMethodList();

Currently, it is not guaranteed that the InputMethodInfo returned
from #getInputMethodList reflects the result of the previous call
of #setAdditionalInputMethodSubtypes because of its undocumented
asynchronous nature.

With this CL, InputMethodManager#setAdditionalInputMethodSubtypes
behaves as if it has I/O barrier. This change should make it easy
for IME developers to use additional subtype mechanism.

BUG: 13033954
BUG: 13291370
Change-Id: I0f8d33b0c77129f72581bc43e7f4fdc25469b520
InputMethodManager.aidl
8eea3ea5591e59f55cbb4f6b2b7e9363a285ced3 04-Feb-2014 Alan Viverette <alanv@google.com> Add APIs for obtaining themed Drawable from Theme, Context

BUG: 12611005
Change-Id: Ic0057be4e4c2d0c61ce02a019b3f7d0625e3a016
enu/ActionMenuItem.java
enu/MenuBuilder.java
enu/MenuItemImpl.java
56110725f2a0b3f09703f2cbe9705d97609ee1e5 10-Jan-2014 Alan Viverette <alanv@google.com> Move drag-to-open handling into ActionMenuItemView

This prevents the menu item's OnClickListener from being overwritten,
allows the client to override item invocation, and prevents showing
multiple popups when items are re-initialized.

BUG: 11969895
BUG: 12489213
Change-Id: I97ca737810073df348171cdba5442f24a5527f89
enu/ActionMenuItemView.java
efc3bb06127a6640afe4985b2b2fc03c5ecc5dee 10-Jan-2014 Adam Powell <adamp@google.com> Fix a bug where OnTouchListeners in action views could be removed

ActionMenuPresenter should only replace the touch listener when binding
a generated item view.

Bug 12470259

Change-Id: I8c4c6110065605225a20cb7ed872255282085661
enu/ActionMenuPresenter.java
fa18d182a3f37505940e73ae6cd76c2e939f7f7c 08-Jan-2014 Adam Powell <adamp@google.com> Move ActionMenuView into android.widget and make it public

Expose ActionMenuView as a way for applications to present
ActionBar-style menus in other embedded or repeating contexts.

Change-Id: I54b7ccd9b2116ca68bc72956da9262bca9d5085f
enu/ActionMenuItemView.java
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
enu/MenuBuilder.java
8ab172e8d9c2e926921bb52838c2322142fb3c65 19-Dec-2013 John Spurlock <jspurlock@google.com> Add rotation-lock to Quick Settings on phones.

Make the rotation-lock QS tile available for display on phones.

Devices < sw600dp are only allowed to lock rotation to their
natural orientation (i.e. portrait on most phones), so tweak
the QS tile label to make this clear. e.g. "Locked to Portrait"
instead of "Rotation Locked" on portrait phones.

Simplify RotationLockController now that the sw600 check is no
longer hardcoded in RotationPolicy.

Remove redundant sw600dp check in SystemUI, everything driven
from the RotationPolicy helper, though SystemUI can still
choose not to display the tile at all with a resource config.

Clean up some of the docs in RotationPolicy to make clear the
subtle distinction between the two ways of locking rotation:
- From Accessibility (locks to natural orientation on all devices)
- From System UI (locks to natural < sw600dp, else current rotation)

Bug:11062710

Change-Id: I5caa4485c9501315da9fed964d6667d3012b43cb
otationPolicy.java
c0cc68053e5013c207be6f64ffd2ad9e8c467def 04-Dec-2013 Adam Powell <adamp@google.com> Fix a bug in submenu presenter priority handling

Now that overflow menus and the PhoneWindow-level ListMenuPresenter
can coexist, make sure that ListMenuPresenter handles submenus spawned
by itself. Introduce an internal API for menus to prefer a specific
presenter when performing item actions.

Bug 11979407

Change-Id: Id0b8fcbb8b310cbb3a63a1e5ea7a89de5d53f86f
enu/ListMenuPresenter.java
enu/MenuBuilder.java
6090995951c6e2e4dcf38102f01793f8a94166e1 19-Nov-2013 John Spurlock <jspurlock@google.com> Remove unused imports from frameworks/base.

Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
ctionBarPolicy.java
otationPolicy.java
enu/ActionMenuPresenter.java
enu/ListMenuPresenter.java
enu/MenuPopupHelper.java
b530aeb0feab5d371684ee8040b2f11e654ae4df 12-Nov-2013 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of f0b9ee96 to master

Change-Id: I1b347e895049474e11076c60074dc5918cfe1405
0abd3a6ce83ed23abe614155e776b600ef2a66c3 10-Nov-2013 Jeff Brown <jeffbrown@google.com> Update the media router dialogs and integrate into system UI.

Port the new style UI back into the framework from the support library.
There are now two dialogs: a chooser and a controller. We use the
same dialogs for selecting routes within app and within quick settings.

Note that the new UI does not support any grouping features since they
are deprecated and unused.

Bug: 11257292
Change-Id: I64e936a18d25ab75f0c470cbc1e7085f67004863
heckableLinearLayout.java
307182870ddbfc32ab3b18e697ab85c8e88a4fe5 05-Nov-2013 Adam Powell <adamp@google.com> am a20bfd96: am fe803958: am 1262d0c8: Merge "Fix action menu visibility callbacks for nested popups" into klp-dev

* commit 'a20bfd96bae95bd54b20ebd184655d7211cedcb4':
Fix action menu visibility callbacks for nested popups
b411b32861e7794a59fa7558dbe9d97407eccf23 02-Nov-2013 Adam Powell <adamp@google.com> Fix action menu visibility callbacks for nested popups

When opening a submenu from a popup in ActionMenuPresenter, delegate
the submenu callbacks to the presenter callback registered on the
ActionMenuPresenter. This allows menu visibility callbacks to
propagate properly so that apps that hide their action bars after a
timeout can detect open menus that are deeply nested.

Bug 11429613

Change-Id: I3332886f08d4f9010f0875057c457566301d12ec
enu/ActionMenuPresenter.java
enu/BaseMenuPresenter.java
d7443c83ceae0bdd20d68bf84648cf3b40115d85 15-Oct-2013 Satoshi Kataoka <satok@google.com> Notify commitText event to InputMethodManagerService

for the intelligent subtype switching

Bug: 7043015
Change-Id: I11ed9a767588f8080753cd9bce011dac7db579ad
InputMethodManager.aidl
658c7b896a751b971db1292d86655dbb97f00067 10-Oct-2013 Satoshi Kataoka <satok@google.com> Introduce an API to get the recommended height of the InputMethodWindow

Bug: 11035379
Bug: 5137498

Change-Id: I0e920ee79c526c3aea6872b063cf294e2ab081c8
InputMethodManager.aidl
d2d0b5843d3c88d881c67d165bf2539dcda6e8a9 11-Oct-2013 Adam Powell <adamp@google.com> am 7b3cdb0f: am 6f090af3: am ebd1dca5: Merge "Re-enable ActionMenuPresenter view recycling" into klp-dev

* commit '7b3cdb0fb7cd7fab647de09e6a64ce59555ed733':
Re-enable ActionMenuPresenter view recycling
c3ca3ea3a937a20666e4f01fb1a9efb503ec274e 11-Oct-2013 Adam Powell <adamp@google.com> Re-enable ActionMenuPresenter view recycling

Since action bar transitions are turned off again for now, re-enabling
item view recycling fixes an unfortunate regression with submenus.

If a menu view is invalidated while a submenu is open we need to keep
its anchor consistent. With view recycling active we preserve status
quo and the previous anchor view instance for the popup window remains
in place.

In the future this will need to get more sophisticated;
ActionMenuPresenter will need to re-parent an open submenu against the
proper anchor view by menu item id. But that is a change for another
day.

Bug 11174504

Change-Id: I7e8a444f6996ec95417d20e87938f496e9c3a4dd
enu/ActionMenuPresenter.java
e580a2f1a16f125862357af9778e9d73594d4398 04-Oct-2013 Adam Powell <adamp@google.com> am bf7116a9: am 049e663c: am 8c5b15c6: Merge "Fix a bug in action menu measurement" into klp-dev

* commit 'bf7116a9ddeff368b6a33fabfaa82ce974d5ee0d':
Fix a bug in action menu measurement
da9710806bc7874b8c553f4daf9cf14f35ae1b07 04-Oct-2013 Adam Powell <adamp@google.com> Fix a bug in action menu measurement

Thanks to a measurement optimization in KK, the view recycling
behavior of ActionMenuPresenter could get into a state where the
resulting ActionMenuView had changed but no layout was
requested. Explicitly request a layout during menu update. Also fix an
ancient typo.

Bug 11047996

Change-Id: I6289fd2d142ac7d2101fbec6de19b7d3d7fbd6a2
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
enu/MenuBuilder.java
66d1cd9da1f5bd3aa3c70a28cbd6bd8801049ace 30-Sep-2013 Adam Powell <adamp@google.com> am 8fb6d97a: Merge "Add gravity settings to PopupWindow/ListPopupWindow/PopupMenu" into klp-dev

* commit '8fb6d97ad5671b4abc1940d8bc56cf7448e45c35':
Add gravity settings to PopupWindow/ListPopupWindow/PopupMenu
54c94dea8a26e66fa59a31fd9170ca221052d3aa 27-Sep-2013 Adam Powell <adamp@google.com> Add gravity settings to PopupWindow/ListPopupWindow/PopupMenu

Allow calling code to specify left/right/start/end gravity when
showing a popup attached to an anchor. This allows easy alignment of
either the right or left edges of the popup and anchor view.

Bug 10728401

Change-Id: Ie0844a04ea0576fa67b0972f5873aaa4c5b823f6
enu/ActionMenuPresenter.java
enu/MenuPopupHelper.java
e4039cc6bce84c1aded1ea7e18a013aa71c40615 24-Sep-2013 Chet Haase <chet@google.com> am 5c69fd7d: am cfdc0369: Merge "Disable ActionBar usage of transitions" into klp-dev

* commit '5c69fd7d36af2d186fa3b654cf8b3e6eeb5596b9':
Disable ActionBar usage of transitions
d8d7c38533d20062166e5e7ef89b80ff9dbd8903 23-Sep-2013 Chet Haase <chet@google.com> Disable ActionBar usage of transitions

Various artifacts across apps were coming from ActionBar's use of
the new transitions framework. Disabling transitions for now to get
things back to a more stable state.

Also, fixed some related bugs in transitions themselves, including
a change in TextChange to account for text selection, which was causing
errors in Keep's SearchView.

Issue #10860557 TextChange animator may old stale value
Issue #10819685 sometimes icons are lighter
Issue #10750525 Share and Settings icons overlap when stopping slideshow
Issue #10839551 Sometimes the search text box is right-aligned in Keep
Issue #10727484 Cursor incorrectly positioned after entering first letter during search action in keep app

Change-Id: Iad7cbf3297e18018308b8148b3519b032e63dace
enu/ActionMenuPresenter.java
f206b5935e702d9b0bf9ce23166017a54ff4880e 14-Sep-2013 Adam Powell <adamp@google.com> am 3cfc5995: am 3157e73f: Merge "Don\'t recycle action button views" into klp-dev

* commit '3cfc5995bfa5d9d4c9203991131d76947c572b58':
Don't recycle action button views
76d915955f04f841161b054e6c249a65c78ba0fd 13-Sep-2013 Adam Powell <adamp@google.com> Don't recycle action button views

Recycling action button views interferes with transition
animations. Suppress menu item view recycling for them.

Change-Id: I69d7561e337be7e4a89b7cf30b6c9439f2d49cc2
enu/ActionMenuPresenter.java
d488b785dfd7aadbb4dac69eeb2537182d814979 12-Sep-2013 Adam Powell <adamp@google.com> am 179ba0c0: am a2906cb4: Merge "Show alternate menu panel on devices with menu key" into klp-dev

* commit '179ba0c04b446406d226cdfe866317d0d2bcecce':
Show alternate menu panel on devices with menu key
a2906cb4d9355b7a08e7fdec1924c2dbc7fda622 12-Sep-2013 Adam Powell <adamp@google.com> Merge "Show alternate menu panel on devices with menu key" into klp-dev
5fcf5b9fd3ff6757090c6bd166b60c18eda0b3ef 11-Sep-2013 Adam Powell <adamp@google.com> Show alternate menu panel on devices with menu key

Provide a softer transition to the overflow-everywhere world for
devices with menu keys. The panel menu will still be used on these
devices in response to a menu key press even in the presence of an
action bar with overflow.

Fix a few lingering bugs around dispatching the open-overflow
transition that caused problems with this along the way.

Change-Id: I9d77c70f6d15c47160ac06292984101d619c44e6
enu/ActionMenuPresenter.java
a395e70109c904c223bb0575e2447fd249701d0d 12-Sep-2013 Adam Powell <adamp@google.com> am 18149fcf: am 6847447d: Merge "Action bar refactoring and transitions" into klp-dev

* commit '18149fcf86eee3335b28b2c2373b585c4e18745a':
Action bar refactoring and transitions
ad79b90f21dcde6f741c47a251882c0a47c5f698 19-Jun-2013 Adam Powell <adamp@google.com> Action bar refactoring and transitions

* Remove the extra occurrence of the Up caret view and reuse the
standard home view.

* Use new transition APIs to animate changes in action bar content.

Change-Id: I7af3bb580ef4bff7d8dec9e21649b856fe73c77b
enu/ActionMenuPresenter.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
heckableLinearLayout.java
enu/ActionMenuItemView.java
enu/IconMenuItemView.java
enu/ListMenuItemView.java
fbe4a586c29b6e415e8d39d73d19bd7f0215a851 06-Sep-2013 Alan Viverette <alanv@google.com> Add drag-to-open for action bar submenus

BUG: 10649895
Change-Id: I5076e0d09453a75ed20c44eede4b43e8a2f535fd
enu/ActionMenuPresenter.java
6b8c69edd210ad86eb659e06681422bb29ba2123 27-Aug-2013 Svetoslav Ganov <svetoslavganov@google.com> Merge "Update AccessibilityNodeInfo API as per API council request" into klp-dev
cb8ed39b3fb591be60b9fb1799d4ea4530eab758 24-Aug-2013 Svetoslav Ganov <svetoslavganov@google.com> Update AccessibilityNodeInfo API as per API council request

bug:10461302

Change-Id: I9709a271ab3720e064b98c79c0950d811fe37b73
enu/ActionMenuPresenter.java
enu/ListMenuItemView.java
9212e350d52ea98cb673280870c54319b03ccad3 26-Aug-2013 Alan Viverette <alanv@google.com> Merge "Reconcile drag-to-open and touch event interception" into klp-dev
69960142efa8d228adbfcbabdcf618426e31e1f5 23-Aug-2013 Alan Viverette <alanv@google.com> Reconcile drag-to-open and touch event interception

Changes behavior such that dragging on a Spinner that's inside
of a ScrollView will only scroll after a tap delay.

BUG: 10442971
Change-Id: I9fa9c5f0cf99e0cd158f52b6fa7a109ce1b6b8b1
enu/ActionMenuPresenter.java
2b10b52f6c08eb79f48f7388e2f1c69f58a9c96d 21-Aug-2013 Satoshi Kataoka <satok@google.com> Add new API shouldOfferSwitchingToNextInputMethod

Bug: 8364845
Change-Id: I6767f5640a07aa515a930645b0cf0b36fbe94831
InputMethodManager.aidl
a2e88ef89611d69b65b1830cc5ffebfb679e9d4d 21-Aug-2013 Alan Viverette <alanv@google.com> Merge "Move forwarding code to ListPopupWindow, add drag-to-open in Spinner" into klp-dev
058ac7cfe5bb7b9ecc411b94622ac3f31a7fa25e 20-Aug-2013 Alan Viverette <alanv@google.com> Use MULTI_LINE and OPENS_POPUP accessibility properties

BUG: 10391326
Change-Id: Ib2deeeef401802b6dde646e14ee5367141469a58
enu/ActionMenuPresenter.java
enu/ListMenuItemView.java
ca6a3611cdb28a514834adba35fcce2da6f2e7c2 16-Aug-2013 Alan Viverette <alanv@google.com> Move forwarding code to ListPopupWindow, add drag-to-open in Spinner

BUG: 9437139
Change-Id: I4599cf65a472b2ce74d2301988359d87917a6eec
enu/ActionMenuPresenter.java
enu/MenuPopupHelper.java
enu/TouchForwardingListener.java
c05027214f1f4dda67296a072dfc9af9176dc590 16-Aug-2013 Alan Viverette <alanv@google.com> Forward events to ListPopupWindow, highlight touched items

Moves most of the drag-to-open behavior into ListPopupWindow's
particular implementation of ListView. Uses hidden View API for
forwarding events between different windows.

Overflow menu opens on first touch, closes on touch end outside
the overflow button. Clicks that occur during drag-to-open mode
result in alpha animation of the selector drawable.

BUG: 9437139
Change-Id: I70f540555a03450638a27880b3ae3b031ca6e2ed
enu/ActionMenuPresenter.java
enu/MenuPopupHelper.java
b3c21ac7c661022534135bf688a75ec35fe3a8f2 07-Aug-2013 Satoshi Kataoka <satok@google.com> Reduce the transaction fee of getEnabledInputMethodSubtypeList

Bug: 8467480
Change-Id: If18cce8fbe567df51f29adcdcedff3f743460b8b
InputMethodManager.aidl
c3a1914bd777575cee1917d99d14f05bfd128717 07-Aug-2013 Ken Wakasa <kwakasa@google.com> Revert "Reduce the transaction fee of getEnabledInputMethodSubtypeList"

This reverts commit e9a6f9713ca48aab9a6c87e0645cb0a0af946a11.

Change-Id: I611d31086d4f02aae5c7021ac92975bd92a59f34
InputMethodManager.aidl
e9a6f9713ca48aab9a6c87e0645cb0a0af946a11 07-Aug-2013 Satoshi Kataoka <satok@google.com> Reduce the transaction fee of getEnabledInputMethodSubtypeList

Bug: 8467480
Change-Id: Ic1fddfe433e097041fcb09d1fd341d77d7d8b13b
InputMethodManager.aidl
80e72700858eb58b379f77a0da5fd3a98e1aa07c 29-Jul-2013 Alan Viverette <alanv@google.com> Implement drag to open overflow menu, lift to select

BUG: 9437139
Change-Id: Iaa962453ba1b2c739a04b6b1be4f6de1fb2fa752
enu/ActionMenuPresenter.java
enu/MenuPopupHelper.java
enu/TouchForwardingListener.java
2dc27f22c9f2ff5de9f9e7d578391ba2abb9815c 16-Jul-2013 Adam Powell <adamp@google.com> Fix collapsible action views.

Fix a regression caused by a previous overzealous refactoring. (Oops.)
Watch those conditionals, everyone!

Bug 9866559

Change-Id: Ia88a4ee38edef378e70bdc7151c825375a3d482d
enu/MenuItemImpl.java
d9ddf52c1281db14d9243ecef6c07bdeed1e6e34 16-Jul-2013 Alan Viverette <alanv@google.com> Revert "Update ListMenuItemView to use a single RelativeLayout"

This reverts commit 8933efd49a0b2c10ddb30b23b57f5676634d0277.

BUG: 9774755
Change-Id: Ib6481e396092da81edd2c69f619f45f61e8fa393
enu/ListMenuItemView.java
cc5b49f07ff856677cdfdbb0ecff1dcaeaaedc66 12-Jul-2013 Adam Powell <adamp@google.com> Merge "Fix MenuItemImpl#hasCollapsibleActionView for action providers"
b4c8ba49ac6ccce8e5c7904741f4adff05e37640 12-Jul-2013 Adam Powell <adamp@google.com> Fix MenuItemImpl#hasCollapsibleActionView for action providers

hasCollapsibleActionView was previously checking only that mActionView
was not null, even if the item had a valid ActionProvider that would
later lazily create an action view when prompted. Account for this and
attempt to create the action view if needed when
hasCollapsibleActionView is called.

Bug 8732876

Change-Id: Idf7b329770f686208882509b82a4cb13c70ef32c
enu/MenuItemImpl.java
ea04f3cfc6e245fb415fd352ed0048cd940a46fe 11-Jul-2013 Adam Powell <adamp@google.com> Always show overflow buttons on action bars

The menu button is not pining, it's passed on! This button is no more!
It has ceased to be! It's expired and gone to meet its maker! It's a
stiff! Bereft of life, it rests in peace! If you hadn't nailed it to a
flagship device it'd be pushing up the daisies!

THIS IS AN EX-BUTTON!!

Change-Id: Id523ef8efa7d0fa7120f8430222ac892fcafefda
ctionBarPolicy.java
c39451267bd0c484f7d9a7ae6475533268be6640 10-Jul-2013 Adam Powell <adamp@google.com> Fix ListMenuItemView regression from patch 8933efd49

Passing 'true' as the third parameter of LayoutInflater#inflate does
cause it to add the inflated view to the parent in a single step, but
it also changes the return value to be the root of the resulting
hierarchy after the add rather than the root of the inflated layout.

Return to adding the view to its parent as a separate step.

Bug 9754101

Change-Id: I7ca4c921993594931f5007af69d45e9ff06065df
enu/ListMenuItemView.java
673e64dd627d4d6effc17648b2246d3b0af679b7 27-Jun-2013 Alan Viverette <alanv@google.com> Merge "Optimize width measurement and cache result in MenuPopupHelper"
0bce6ab8cd8aadc9784dda2f3f4cc9dd91b796c7 27-Jun-2013 Alan Viverette <alanv@google.com> Optimize width measurement and cache result in MenuPopupHelper

BUG: 9591217
Change-Id: I0cc2fad39f967e92b2c954f6417430a42dce8e43
enu/MenuPopupHelper.java
8933efd49a0b2c10ddb30b23b57f5676634d0277 27-Jun-2013 Alan Viverette <alanv@google.com> Update ListMenuItemView to use a single RelativeLayout

BUG: 9591217
Change-Id: If5d301f70ac3806ab14e309affa57c625d897c7d
enu/ListMenuItemView.java
6196cfdb528d662741c68126062dd34d78641a5b 30-May-2013 Svetoslav <svetoslavganov@google.com> Merge "Remove Auto-rotate screen setting if a required feature is missing."
dcc55855bc660fc2f45d02a1398be2e4fcf5fcb5 03-May-2013 Adam Powell <adamp@google.com> Fix a NPE in MenuItemImpl when setting null ActionProvider

Change-Id: I00be010b2197d0f41d0e45b3814474d3ad0c3295
enu/MenuItemImpl.java
79578b29bf4ba1d210586b9d7bb832eddf0960b7 30-Apr-2013 Svetoslav <svetoslavganov@google.com> Remove Auto-rotate screen setting if a required feature is missing.

It is possible that a device running Android does not support rotation,
for example a Google TV box. The change adds a check to the rotation
policy to take this into account.

The SystemUI was not respecting the fact that the user has turned off
screen rotation, i.e. locked the rotation, from the accessibility
settings. In this case we should not show the affordance to toggle
screen rotation in the quick settings to minimize the risk of a blind
user accidentally turning screen rotation on. For a blind person
screen rotation adds 2X complexity since he/she should learn two
different layouts for the app.

bug:8051556

Change-Id: If1b3c092476932f91b0345fb9bfbbf6ed33d0df9
otationPolicy.java
e0e2f4fd3ac8e70e341ae52d6376d8d67bd9edce 06-Apr-2013 Adam Powell <adamp@google.com> Fix accessibility in action bars and add extra customization

Fix a bug where the content description of the big unified Home/Up
button was not getting set properly.

Add the ability to change the home-as-up glyph from ActionBar.

Add the ability to set a custom action description for the home-as-up
button, useful if the above functionality is used.

Bug 8548229

Change-Id: I0635799772c7234b68247dfc105dce7f11acda32
enu/ActionMenuItem.java
1951ce86c21445ac191e4d2d95233f4f5c096b56 05-Apr-2013 Jeff Brown <jeffbrown@google.com> Correctly manage the lifecycle of IME InputChannels.

InputChannels are normally duplicated when sent to a remote process
over Binder but this does not happen if the recipient is running within
the system server process. This causes problems for KeyGuard because the
InputMethodManagerService may accidentally dispose the channel
that KeyGuard is using.

Fixed the lifecycle of InputChannels that are managed by the IME
framework. We now return a duplicate of the channel to the application
and then take care to dispose of the duplicate when necessary.
In particular, InputBindResult disposes its InputChannel automatically
when returned through Binder (using PARCELABLE_WRITE_RETURN_VALUE).

Bug: 8493879
Change-Id: I08ec3d13268c76f3b56706b4523508bcefa3be79
nputBindResult.java
c28867a1d67121ce5963de135e3ae2b1dbd9a33d 26-Mar-2013 Jeff Brown <jeffbrown@google.com> Use input transport for communications between app and IME.

The input method manager service now supplies an input channel for
communication while creating an IME session on behalf of the
application.

This change significanly reduces the overhead of IME event dispatch
by using a standard input channel to send input events rather than
using binder. This results in fewer thread context switches
and fewer object allocations.

What's more, the IME may perform additional batching of the motion
events that it receives which may help it catch up if it is
getting behind while processing them.

Bug: 7984576
Bug: 8473020
Change-Id: Ibe26311edd0060cdcae80194f1753482e635786f
InputMethod.aidl
InputMethodCallback.aidl
InputMethodSession.aidl
nputBindResult.java
52a53526265c801b70eaf6dab1acf5c3f628f8a6 14-Mar-2013 Michael Wright <michaelwr@google.com> Separate sessionCreated and finishedEvents callbacks

Bug: 8276952
Change-Id: If7051086c060fcce5d1e958ebbddec0784c851da
InputMethod.aidl
InputMethodCallback.aidl
InputSessionCallback.aidl
e4bbb1cc451c7ebdad9f92968732fc4f6c21a70c 15-Mar-2013 Craig Mautner <cmautner@google.com> Catch BadTokenException and continue.

BadTokenException is a normal consequence of swapping IMEs while there
is a DO_SHOW_SOFT_INPUT message in the IIMethodWrapper queue. This
race condition cannot be avoided without an unacceptable lock down of
InputMethodManagerService.

Fixes bug 8387663.
Fixes bug 8263462.

Change-Id: I2c21573cf972145ab08e66604cdb9344139a3f31
InputMethod.aidl
ca0ac718cbc2ad3e7ad2400f5fa34068f154ee20 14-Mar-2013 Craig Mautner <cmautner@google.com> Remove WindowManager messages from remote queue.

When a new IME is attached it is not enough to remove the
WindowManager messages from the local queue, but the ones in
the previous IME queue must also be removed.

Fixes bug 8263462.

Change-Id: I9e916c6052a83dc7691bcba0b6ab8328b9b7cc36
InputMethod.aidl
e8cc96b8f8b26d0dcf3a2abff9104ed0bb6f6bbd 12-Mar-2013 Michael Wright <michaelwr@google.com> Remove unused interface IInputConnectionCallback

Bug: 8276952
Change-Id: I3755df557388bee55f0cc4780adc300672cbe9a1
InputConnectionCallback.aidl
4207fda51babb3892652fcdc901295c81876a38f 01-Mar-2013 Justin Koh <justinkoh@google.com> Add policy check to always show overflow menu button on TV devices.

Add policy check to always show overflow menu button on TV devices.
Bug: 8236681

Change-Id: I4f92eef7a6d530feb698f83b0720b36115f7a04a
ctionBarPolicy.java
c4aad01cbbb69c916ef323693e1fd0560b0eccba 23-Feb-2013 Dianne Hackborn <hackbod@google.com> Formalize overscan metrics.

The window manager now maintains and reports a new formal
"overscan insets" for each window, much like the existing
content and visible insets. This is used to correctly
position the various UI elements in the various combination
of layout options. In particular, this allows us to have
an activity that is using fitSystemWindows to have the content
of its UI extend out to the visible content part of the screen
while still positioning its fixed UI elements inside the
standard content rect (and the entire window extending all
the way into the overscan area to fill the screen as desired).

Okay, maybe that is not written so clearly. Well, it made
my head hurt too, so suffer!

The key thing is that windows now need to know about three
rectangles: the overall rectangle of the window, the rectangle
inside of the overscan area, and the rectangle inside of the
content area. The FLAG_LAYOUT_IN_OVERSCAN option controls
whether the second rectangle is pushed out to fill the entire
overscan area.

Also did some improvements to debug dumping in the window
manager.

Change-Id: Ib2368c4aff5709d00662c799507c37b6826929fd
aseIWindow.java
eb573418a7a727fb44720514da8ebc1dc37388f7 19-Apr-2011 Mattias Falk <mattias.falk@sonyericsson.com> Re-read shortcut labels if the language has changed

The shortcut label isn't updated to the current language
if the phone's language has changed.

The problem was that the shortcut label is stored in a
static variable which is set once and kept throughout the
life time of the process.

Change-Id: I89c5875fbf28fb82e073166c472ca205d28674fb
enu/MenuItemImpl.java
14c4669916ae993b248f00c55daf0f17069903d9 10-Oct-2012 Svetoslav Ganov <svetoslavganov@google.com> Cannot force a shown item from an ActionMode into the overflow menu.

1. An app showing an action mode with a visible item that decides to move this item
to the overflow menu cannot do so since the action menu is not updated properly.
Specifically, ActionMenuPresenter does not clear the "is action button" property
of a menu item neither requires nor requests an action button, i.e. the item's
"show as action" property changed to be never shown on the action bar.

bug:7319766

Change-Id: I5cfda6269466fafca1f039a3bab6397392ae9f17
enu/ActionMenuPresenter.java
5e08af03a3dffff8b8fc098790e5133589601d8f 22-Sep-2012 Christopher Tate <ctate@google.com> Respect per-user rotation lock et alia

Various per-user settings such as rotation lock are relevant to the
singleton PhoneWindowManager object. We now listen for user-switch
broadcasts and reconfigure the active state based on the newly-
active user's settings.

The RotationPolicy toolset has also been updated to do the right
thing, as has the Quick Settings UI.

Bug 7213638

Change-Id: Iee2109e48df550b4c979d3f9c91b5d2b71a6a08e
otationPolicy.java
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
enu/IconMenuItemView.java
b250e94fdced2bd753eeb75f378abfab8b17cc2c 18-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> Merge "Fix bug #7112174 ActionMenuView should be aware of layout direction" into jb-mr1-dev
b38070caa5143ab9fd1883e0c7c879533a480bc7 24-Aug-2012 Victoria Lease <violets@google.com> IME support for trackball and generic motion events

Trackball and generic motion events now pass through the IME in case
it would like to handle them before passing them on to the view
hierarchy.

While I was at it, I also...
...fixed the documentation on InputMethodService.onKeyUp()
...added documentation to InputMethodService.onTrackballEvent()
...added trackball and generic motion events to the "input" command
...fixed input consistency verification involving ACTION_OUTSIDE

Bug: 7050005
Change-Id: I40ab68df4a9542af6df25de6ec2ec500e4c02902
InputMethodSession.aidl
0762cec04fa5ce65a2adc6d70ea1396041b1a88d 06-Sep-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug #7112174 ActionMenuView should be aware of layout direction

- do correct layout of action items depending of layout direction

Change-Id: Iff0181ffa2cb69884920edd5c37eb1a8a8196816
enu/ActionMenuView.java
98365d7663cbd82979a5700faf0050220b01084d 20-Aug-2012 Jeff Brown <jeffbrown@google.com> Refactor for multi-display support.

Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class. This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault(). This represents the
bulk of this change. Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids. Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
otationPolicy.java
9951b7c4f094d39db70626ed665f848971220c48 08-Aug-2012 Jean-Baptiste Queru <jbq@google.com> am e5c46fae: am 6d0dd51e: Merge "Return early when checking divider before child zero."

* commit 'e5c46faefb9deda885cff308ec9b1926636ca8bc':
Return early when checking divider before child zero.
758143ecfedbe08cc6c4fed0ad8ad7a854194ca4 07-Aug-2012 Svetoslav Ganov <svetoslavganov@google.com> Window position not reported if the window is not moved.

1.If a window is shown but never moved the window window
is never notified for its current location. Therefore,
accessibility nodes do not contain correct bounds in
screen coordinates.

bug:6926295

Change-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393
aseIWindow.java
d5c81db1e78e98f3e0a1a5cf206865c3056294c4 02-Aug-2012 Adam Powell <adamp@google.com> Fix some ActionBar menu issues around config changes

Bug 6904212

Update allow-text and max item height properties for action bar menu
item views properly.

Fix an ActionMenuItemView measurement bug that could cause items to
measure too small.

Change-Id: Ibac8491f7670969b0ae4584fff5e44ebd1435abd
enu/ActionMenuItemView.java
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
c1eea136eaae62091b44d7b06a3d61ac694e4fd7 31-Jul-2012 Adam Powell <adamp@google.com> Fix bug 6906134

Change-Id: I47dfa1e503e502fe348a350dad960fbb112435e7
enu/ActionMenuItemView.java
c0047d4e111b8cfbffdbebb55f846c7ae935e53e 30-Jul-2012 Adam Powell <adamp@google.com> Enforce a maximum size for action button icons.

Change-Id: Id9b5c1573cd40012229921fa8497cbe5ce340b1e
enu/ActionMenuItemView.java
825992f503439bc87d9d7e698a487f17b5acc243 29-Jul-2012 Jake Wharton <jakewharton@gmail.com> Return early when checking divider before child zero.

Previously the `getChildAt` method would be called with an index of -1 which
would lead to an exception being thrown and caught. This is unnecessary since
we know there will never be a divider before the first child. It also avoids
additional object creation since this method can be invoked quite frequently.

Change-Id: Iab44520d5d52f96a829a009cdd1201696edbf9a4
enu/ActionMenuView.java
aac0d4ed026d1cfbcf3fa81c6e4eb96f4347ca17 20-Jul-2012 Fabrice Di Meglio <fdimeglio@google.com> Replace left/right with start/end for Gravity / LayoutParams / Padding

- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)

Change-Id: Id9af5375fb9b0edeae5232c77e52ecd497bd2e67
enu/ActionMenuItemView.java
enu/IconMenuItemView.java
8c1b02e7592dd02f30750c56bf88c65f8acbd3c9 17-Jul-2012 Adam Powell <adamp@google.com> Fix MediaRouteActionProvider button sizing

Bug 6768999

Use proper layout height for MediaRouteButtons generated from
MediaRouteActionProvider.

Update ActionMenuView's LayoutParams handling to correctly propagate
width/height values if the supplied LayoutParams is of a different
type.

Change-Id: I1e1b250d873869ca27f59ffb06ccf2299d57b40d
enu/ActionMenuView.java
5702d4dfb5b81491f873a3617f8d8fc8dc5279e6 30-Jun-2012 Craig Mautner <cmautner@google.com> Notify client side of window movement.

Add a one way method to notify Views that the window has moved
on the screen. Fixes issues arising from the IME popping up and
translating the window that uses it. Accessibility was left unaware
of these movements and was drawing the box around the wrong widgets.
Similarly PopupWindow used getLocationOnScreen to determine how
much screen real estate was above and below the anchor point to
determine where to put an anchored window.

Fixes bug 6623031.

Change-Id: I4731a94d5424c1ec77bf1729fba8fc9ea34cae46
aseIWindow.java
8f695c525f5baa623a8b951bd3a1fd2b5efd1ceb 18-Jun-2012 Adam Powell <adamp@google.com> am 706a8699: Merge "Make MediaRouter UI more robust around route count changes" into jb-dev

* commit '706a8699008ce416a7fbd9a4215726fdb00ee803':
Make MediaRouter UI more robust around route count changes
bb20575f85ada8ccdacefc53f0da7e00fdf12a16 18-Jun-2012 Adam Powell <adamp@google.com> am 130b4572: ActionProvider API update

* commit '130b4572d1f3df702e5b296a655d15a41f6d4c66':
ActionProvider API update
772ddc0cf28625964435edc5e86048e353c425fa 18-Jun-2012 Adam Powell <adamp@google.com> am fd4df469: Merge "Remove workaround for bug that was fixed a while ago." into jb-dev

* commit 'fd4df46917c79067416985ac53a3da6b27e8c333':
Remove workaround for bug that was fixed a while ago.
39d5c6172503620ac3761148adac5fd7fa20d02d 16-Jun-2012 Adam Powell <adamp@google.com> Make MediaRouter UI more robust around route count changes

Improve the API around ActionProvider visibility overriding. Allow the
application to notify whatever is hosting the ActionProvider that
visibility has changed in a way that is friendly to alternate support
library-style reimplementations of MenuItem.

Allow MediaRouter.Callback implementations to add or remove themselves
or other Callbacks during dispatch of callback events.

Make MediaRouteActionProvider track the visibility of corresponding
menu items more accurately.

Change-Id: Ic7ddb6a87c3637904750d2661e4a9fa323b09ea0
enu/MenuItemImpl.java
130b4572d1f3df702e5b296a655d15a41f6d4c66 16-Jun-2012 Adam Powell <adamp@google.com> ActionProvider API update

* Add ActionProvider#overridesItemVisibility and isVisible.
These methods allow an ActionProvider to override the
visibility of a MenuItem that it is bound to. If a MenuItem
has been explicitly hidden by the application, it will not
be visible.

* Change MediaRouteActionProvider to not require a MediaRouter
callback, to avoid extra lifecycle management headaches.

Change-Id: I606fa98b3a6a3e60a953dd024274f9bf9c67acdd
enu/MenuItemImpl.java
307c5cfcdd275e56c6a11056ac4f6d6eb2758ee0 16-Jun-2012 Adam Powell <adamp@google.com> Remove workaround for bug that was fixed a while ago.

Change-Id: I368dd8fea6b33af6908b6fe3b7691104166a707a
mageButtonNoParentPress.java
0f03d771b29ff0fc6919a514c56128de9a5ecd5e 14-Jun-2012 Adam Powell <adamp@google.com> am f9b7f9f5: Merge "Support route grouping in the MediaRouter dialog UI." into jb-dev

* commit 'f9b7f9f5080100043df3c8868bca4df84becf5a1':
Support route grouping in the MediaRouter dialog UI.
d6d0bddee363e0c7fe61f63bd9d9864a71d887d6 14-Jun-2012 Adam Powell <adamp@google.com> Support route grouping in the MediaRouter dialog UI.

Change-Id: Idcae12cedfb7ca13950e7fa45441fba2029a9f68
heckableLinearLayout.java
mageButtonNoParentPress.java
72329952168fd86b911109602882b92494e9ccc5 07-Jun-2012 Adam Powell <adamp@google.com> am 4c38fe36: Merge "Protect against bogus input for ListViews" into jb-dev

* commit '4c38fe369fee76b8d4fca5a7b0b8d81a96f0219f':
Protect against bogus input for ListViews
28048d011cb0887cd641977ca37e5f2fde04d191 07-Jun-2012 Adam Powell <adamp@google.com> Protect against bogus input for ListViews

Guard against cases where ListView might receive touch events while
detached.

Update ListMenuPresenter to dispatch a data set change when the
backing menu is changed.

Bug 6543282

Change-Id: If2fb9b6aa3cf4a1b7070a7cd0de0edf0fc2f4cca
enu/ListMenuPresenter.java
1178569b261a094fe6fb830e91f002e4fcd9fc1a 06-Jun-2012 Adam Powell <adamp@google.com> am f6452d0c: Merge "More fun with MediaRouter" into jb-dev

* commit 'f6452d0cac64b72005af330411b5a895f0038312':
More fun with MediaRouter
f6452d0cac64b72005af330411b5a895f0038312 06-Jun-2012 Adam Powell <adamp@google.com> Merge "More fun with MediaRouter" into jb-dev
690ffb4e1f735148a15f2036d9a3c1962fba188c 05-Jun-2012 Adam Powell <adamp@google.com> More fun with MediaRouter

Add action provider, button, and styles. Extend ActionProvider to
allow for getting references to MenuItem instances.

Implement toggle mode for the MediaRouteButton/ActionProvider. Dialog
selection yet to come.

Change-Id: Ibe3188570f503bbf8dd00cf154663435656a7171
enu/MenuItemImpl.java
eef4bc08137f2324e2974c282992ff546df99e54 06-Jun-2012 Jeff Brown <jeffbrown@google.com> am 615fd3df: Merge "Implement new rotation policy." into jb-dev

* commit '615fd3dff2e369d8b786abcfe41b6da988e41001':
Implement new rotation policy.
207673cdbb536b9bdd9ff7f9ce953c5485d11f5a 06-Jun-2012 Jeff Brown <jeffbrown@google.com> Implement new rotation policy.

Rotation lock does not override NOSENSOR mode anymore.

Centralize the rotation policy settings into a new class shared by
the System UI and Settings applications.

Add a new setting to specify whether rotation-lock is being hidden
because the "auto-rotate screen" option has been toggled in the
Accessibility settings panel.

Bug: 6523269
Change-Id: I15173280d25bc5d101e89a9c65913aefc53fc33a
otationPolicy.java
8e49098f76042c63b4fa8ede9ef9bdf75b77f509 15-May-2012 Adam Powell <adamp@google.com> am e48d12b7: Merge "Fix ActionProviders that have submenus" into jb-dev

* commit 'e48d12b78011ff5ddbb6838a038ea5384190ec92':
Fix ActionProviders that have submenus
2da87ec32e72c2c25998e2444155c00074cfbd40 15-May-2012 Dianne Hackborn <hackbod@google.com> am 2a7a6ca0: Merge "Implement new window cropping." into jb-dev

* commit '2a7a6ca00ab176105b5bbfa6b17bb0dcd058d517':
Implement new window cropping.
f77f480800a84ceb377e47cc200baf2bae4f5d9a 15-May-2012 Adam Powell <adamp@google.com> Fix ActionProviders that have submenus

Automatically create a submenu for items with ActionProviders that
provide a submenu when the item was not initially configured to have
one.

Bug 6493376

Change-Id: I27218e2ab205e87534f235eb04042b185d99d143
enu/MenuBuilder.java
85afd1b6f871d471fdff1980134676a5f1690525 13-May-2012 Dianne Hackborn <hackbod@google.com> Implement new window cropping.

The window manager now performs the crop internally, evaluating
it every animation from, to be able to update it along with
the surface position.

Change-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32
aseIWindow.java
217477e01311b4b77c3ad536cb3cc35e5ce08373 09-May-2012 Adam Powell <adamp@google.com> am ea3f8cc7: Merge "Forgive me monkeys, for I have sinned." into jb-dev

* commit 'ea3f8cc71e0bb89840e727e22ba332bae228ac36':
Forgive me monkeys, for I have sinned.
76889f3482d6391b17f0961f7356c1e8169c8813 09-May-2012 Adam Powell <adamp@google.com> Forgive me monkeys, for I have sinned.

It has been several hours since my last commit.

Fix an obscure bug that could cause call ordering problems while
updating ListAdapter-based MenuPresenters. This would trigger an
inconsistent return value from the adapter's getCount method that
didn't take the expanded menu item into account, resulting in the
infamous ListView "you didn't call notifyDataSetChanged" exception.

Bug 6412318

Change-Id: I6262846d9c2acdb87ff99116ad78ca4a388efa6d
enu/ListMenuPresenter.java
enu/MenuPopupHelper.java
4ffd4b884b6e9b0a23fd732637db48fee4e5111d 07-May-2012 Adam Powell <adamp@google.com> am 97621027: Merge "Limit item heights in split action bars" into jb-dev

* commit '9762102794b90d40d69a9a31aa8cd1538f8151f8':
Limit item heights in split action bars
367ee326058bbee6fc179b8b1eb2174fe7ba8f45 07-May-2012 Adam Powell <adamp@google.com> Limit item heights in split action bars

Bug 6449422

Overzealous action views should not be able to cause action bars to
take up a huge amount of space.

Fixed text alignment on action buttons

Change-Id: Ic28d6dacdb6933c63b323f5ed6a6cab5d3726938
enu/ActionMenuItemView.java
enu/ActionMenuView.java
e43a4e90173cdb1a8e22a8e8e05356c12df44a0e 03-May-2012 Adam Powell <adamp@google.com> am f27ba974: Merge "JB API cleanup; ActionMode and View docs" into jb-dev

* commit 'f27ba974d5af68baf071282de65a22ca6e59244c':
JB API cleanup; ActionMode and View docs
785c447b2bc625209706fd128ce61781c3a4183b 03-May-2012 Adam Powell <adamp@google.com> JB API cleanup; ActionMode and View docs

Bugs 6435315, 6434937

Add ActionMode#getTitleOptionalHint() and extend documentation for
View#hasTransientState/setHasTransientState

Change-Id: I2049fb79864c33b34e3bbd13df32861e308c99ad
tandaloneActionMode.java
2d28f53514d55bfc3fb2eb2ebdd6c85ef3d8f9d9 01-May-2012 Jean-Baptiste Queru <jbq@google.com> am 31ab51a3: am 2066f7d9: Merge "Prevent empty overflow popup when there are no overflow items."

* commit '31ab51a369ab57c82d0271115ba31b3b20ce6e6b':
Prevent empty overflow popup when there are no overflow items.
5c58de3a523a384c47b0b1e0f5dd9728a74cd9f7 29-Apr-2012 Dianne Hackborn <hackbod@google.com> Add system insets to windows.

This will be used to determine which parts of a window a completely
hidden by system UI elements (status bar, nav bar, system bar) so
that they can be clipped out from rendering.

Change-Id: I2c6c6ac67dbdfeed82d2c089ef806fb483165bd9
aseIWindow.java
12d3a94397c33fdb773a1eaaaa13cab80bf0c571 27-Apr-2012 Dianne Hackborn <hackbod@google.com> When a window is first shown only draw once while animating.

On some hardware allocating a new graphics buffer is quite
expensive, which blocks updates to the UI. This can cause
glitches when performing window animations.

To reduce these glitches, the view hierarchy will now only
allow itself to be drawn once if its window is being shown
while the window manager is animating, not resuming draws
until it is told that the animation is done.

Change-Id: Ie15192f6fddbd0931b022a72c76ddd55ca266d84
aseIWindow.java
b8139af3dcae80c0030afd0354dc424a7c72c3d9 19-Apr-2012 Adam Powell <adamp@google.com> Adjust action bar tab policies

Action bar tabs now stack in portrait mode on all screen sizes rather
than display embedded. This only affects apps with a targetSdkVersion
of JB or greater, as older apps may not be prepared for the different
measurement of the bar or have an appropriate stacked bar background
drawable.

Stacked action bar tabs now have a width limit. This prevents
super-wide tabs that can span the whole screen. The cluster of tabs
is centered if it does not span the full width.

Add ActionBarPolicy to give a single point to query for various action
bar measurements and behaviors that vary with configuration.

Change-Id: I01162ca009c14f6f0e712fc906b9db6382c738cd
ctionBarPolicy.java
enu/ActionMenuPresenter.java
a7dec6d9734bdc3a9e39ffd357002e25c6fdc99b 10-Apr-2012 Adam Powell <adamp@google.com> Restrictions for action buttons with text

Restrict action buttons with text to 2 lines max. Action buttons with
text will always consume at least 2 cells in split mode because they
look silly in 1.

Note that this affects text provided by menu items, not TextViews
embedded within app-provided action views.

Fixes bug 6236467

Change-Id: I7bcbf80f448b13a895ddc3bc6a7a555c0f0bac7c
enu/ActionMenuView.java
a647640f85f415bd8fb8cb925e7687658fe9ae37 29-Mar-2012 Jake Wharton <jakewharton@gmail.com> Prevent empty overflow popup when there are no overflow items.

On a device with a hardware menu key, an empty overflow window can be displayed
if there are no items in said overflow menu. This leads to the next user touch
being swallowed in the action of dismissing the invisible window.

Change-Id: I9191e4b2e1ed4888e4bc7261e8b3f095a272a9b5
enu/ActionMenuPresenter.java
c4852a37186260bf688dc94a77a4ebd2a8290a02 19-Mar-2012 Adam Powell <adamp@google.com> Fix a bug where MenuItems would not return consistent results for
item icons initialized from a drawable resource id.

Change-Id: Ieb5245b8fe0e11b2eb788143859da1c0b3657b9f
enu/MenuItemImpl.java
bb9908b828a8cfd5965553be66faa6af89973697 08-Mar-2012 Romain Guy <romainguy@google.com> Dispatch screen state change events to Views
Bug #6120957

Using this new callback, views can interrupt and resume their
animations or other periodic tasks based on the current state
of the display.

Change-Id: I398f4abd421e9c5f207107bf1009a7b92cf45daa
aseIWindow.java
250069bf6bf3d7e2ef85c49e0cd100e80c3c8b7d 08-Mar-2012 Romain Guy <romainguy@google.com> Merge "Ignore draw requests when the display is off"
f203e0a44ef7578c080d63424820fb5a94a4e92f 07-Mar-2012 Adam Powell <adamp@google.com> Fix some action bar menu layout bugs around config changes

Bug 5712010

Fix cases where the transition between split/standard action bar menu
presentation wasn't happening properly for windows in activities that
handle their own config/orientation changes.

Change-Id: I7168555e09c9ed448afb8619fd6f0e1466695365
enu/ActionMenuPresenter.java
75d022af1f24cf2d8a7551183ea5bbe943d25d21 06-Mar-2012 Adam Powell <adamp@google.com> Action buttons are now 1 view instead of 3.

Change-Id: I42afe0e4bd20c3dbe86e2c43a6bc1d776361dca9
enu/ActionMenuItemView.java
enu/ActionMenuView.java
7e4e561bc717a6eea4e0d06ec4173ad27420425f 05-Mar-2012 Romain Guy <romainguy@google.com> Ignore draw requests when the display is off

When WindowManagerService's events are enabled/disabled, the state of the
display is dispatched to the known windows. This allows ViewRootImpl to
ignore draw requests until the screen is turned back on. This can potentially
lead to significant battery savings. For instance, a launcher widget showing
a repeating animation will cause the CPU and the GPU to wake up regularly
without this change.
(Change submitted by Intel and merged manually)

Change-Id: I7f93b0e60c3e6de1705f619e80860c36b1cdb978
aseIWindow.java
b98a81f86ab87f1d718f329f03256111fdabd8d1 24-Feb-2012 Adam Powell <adamp@google.com> Add support for optional titles in action modes

Optional titles will only be displayed in the CAB if they entirely fit
instead of ellipsizing.

Fixes bug 5821883

Change-Id: I0cfd6d4fd34a4fa9f520499d577706da30606811
tandaloneActionMode.java
0aec3ea6defdee1ee4a9c0d6c4a3c13df3e7b812 25-Feb-2012 Dianne Hackborn <hackbod@google.com> am 911b505f: am dc5fa185: am 133dc2d7: Merge "Fix issue #6048808: sometimes auto-correct is inactive" into ics-mr1

* commit '911b505f11c719906985f169a4f45930bdec8695':
Fix issue #6048808: sometimes auto-correct is inactive
7663d80f6b6fd6ca7a736c3802013a09c0abdeb9 24-Feb-2012 Dianne Hackborn <hackbod@google.com> Fix issue #6048808: sometimes auto-correct is inactive

My previous change to speed up the time the IME is dismissed was
fundamentally flawed. That change basically switched the order
the application called the input method manager service from doing
startInput() and then windowGainedFocus(), to first windowGainedFocus()
and then startInput().

The problem is that the service relies on startInput() being done
first, since this is the mechanism to set up the new input focus,
and windowGainedFocus() is just updating the IME visibility state
after that is done. However, by doing the startInput() first, that
means in the case where we are going to hide the IME we must first
wait for the IME to re-initialize editing on whatever input has
focus in the new window.

To address this, the change here tries to find a half-way point
between the two. We now do startInput() after windowGainedFocus()
only when this will result in the window being hidden.

It is not as easy as that, though, because these are calls on to
the system service from the application. So being able to do that
meant a fair amount of re-arranging of this part of the protocol
with the service. Now windowGainedFocus() is called with all of
the information also needed for startInput(), and takes care of
performing both operations. The client-side code is correspondingly
rearranged so that the guts of it where startInput() is called can
instead call the windowGainedFocus() entry if appropriate.

So... in theory this is safer than the previous change, since it
should not be impacting the behavior as much. In practice, however,
we are touching and re-arranging a lot more code, and "should" is
not a promise.

Change-Id: Icb58bef75ef4bf9979f3e2ba88cea20db2e2c3fb
InputMethodManager.aidl
688bd47fccf1a1373e6287bc49b5b33fad12b7f3 09-Feb-2012 satok <satok@google.com> Add an api to switch to the next IME and subtype

Bug: 5975302

Change-Id: I48aa4220159c65f456d61a324efcdf0a1ceec91c
InputMethodManager.aidl
0c95dd3f4f02564fab9b86a221bbcbb4aafc2981 24-Jan-2012 Fabrice Di Meglio <fdimeglio@google.com> Fix bug # 5863709 API request: Change param names of deleteSurroundingText to "before" and "after"

Change-Id: I727fad9a59cda915899674569bfabd29b9f5da60
nputConnectionWrapper.java
4952dfd16a0f839559ffa78f5016394caf85294f 01-Dec-2011 Jeff Brown <jeffbrown@google.com> Ensure input events are processed in-order in the application.

As it turns out, it used to be possible for there to be multiple
input events simultaneously in flight in an application. Although
it worked, it made it hard to reason about what was going on.
The problem was somewhat exacerbated by the introduction of a
queue of "InputEventMessage" objects as part of an earlier latency
optimization.

This change restores order from chaos and greatly simplifies the
invariants related to input event dispatch within the application.

Change-Id: I6de5fe61c1fe2ac3dd33edf770d949044df8a019
aseInputHandler.java
24340afbab8ad4c191784fda8023407205bc0a75 01-Nov-2011 Adam Powell <adamp@google.com> Fix bug 5534667 - Action bar icons need more space on tablet

Set a wider minimum width for the action button style on -sw600dp.

Fix an annoying bug where recycled ActionMenuItemViews would retain a
lingering pressed state, causing an unrelated button to glow briefly.

The home/up affordance should not be focusable when it is disabled.

Change-Id: Ia68f3d09f5d977f50e4e33c354d8133367187973
enu/ActionMenuItemView.java
enu/BaseMenuPresenter.java
678ed0c5a32bac1ea18a5ac99b0b814421ea79b4 28-Oct-2011 Adam Powell <adamp@google.com> Bug 5275928 - Don't try to open an overflow menu under invalid circumstances.

Change-Id: I62ea1e982f0d3c92cb504efbae95bce238b12f72
enu/ActionMenuPresenter.java
8eeb4d1a70faa4d5834de44bfa515742566c6ba3 13-Oct-2011 Adam Powell <adamp@google.com> Fix bug 5394020 - Menus are pretty sluggish to bring up

Clear out some obsolete "optimizations" leftover from the old menu
system internals.

Change-Id: I325530c9fae434de2d95200e648c63149334f444
enu/ExpandedMenuView.java
enu/ListMenuItemView.java
f2894659e8df625783afcd3fa17462ab23d29145 12-Oct-2011 Adam Powell <adamp@google.com> Fix bug 5449931 - Wrong theme for icon menus

IconMenuPresenter should always use its own theme for the system
inflater.

Change-Id: Iacadce37d62a60cdf6220d82f1178098ed92d51e
enu/IconMenuPresenter.java
538e565c06e915b91e7e3a901f872ccdd9bccdd3 11-Oct-2011 Adam Powell <adamp@google.com> Fix bug 5396097 - menu theme consistency

Fix a bug where action bar menus were using the wrong context to
inflate stock views. This was causing them to use the action bar's
themed widget context instead of the current theme's specific action
bar items.

Note that action views in the menu will still be inflated using the
themed widget context. This can produce some weird side effects if
the action views use theme attributes relating to these action bar
item attributes.

Change-Id: Ied3614d1fedb10a0f5366bbe7b90cd5f2f1ff969
enu/ActionMenuPresenter.java
enu/BaseMenuPresenter.java
enu/IconMenuPresenter.java
9a230e01a1237749a8a19a5de8d46531b0c8ca6a 06-Oct-2011 Dianne Hackborn <hackbod@google.com> Fix issue #5371530: SYSTEMUI_FLAG_HIDE_NAVIGATION reasserts itself immediately

This cleans up how ui flags are managed between the client and window manager.
It still reports the global UI mode state to the callback, but we now only clear
certain flags when the system goes out of a state (currently this just means the
hide nav bar mode), and don't corrupt other flags in the application when the
global state changes.

Also introduces a sequence number between the app and window manager, to avoid
using bad old data coming from the app during these transitions.

Change-Id: I40bbd12d9b7b69fc0ff1c7dc0cb58a933d4dfb23
aseIWindow.java
f8419a0299680ed580975b0fcb758990b4367db8 03-Oct-2011 Adam Powell <adamp@google.com> Fix bugs around overlay action modes.

Multiple focusable windows cause undesired behavior around selection
modes. TextView isn't sure how to behave when it loses window focus
with regard to selection handles and action modes need to be focusable
for WebView find on page since it uses an EditText as a custom view.

For now:

* Use a layered window decor for overlay action mode when there is no
action bar requested. This eliminates an extra window and avoids the
issue described for full-screen UIs.

* Disable WebView's find-on-page mode when the action mode's UI will
not be focusable. This only affects WebViews in floating windows.

Also remove the "Text Selection" title for WebView's selection mode at
UX's request, as it is inconsistent with TextView's selection mode and
the string does not fit on phones in portrait even on wide
devices. This now uses the same mechanism used in TextView to decide
whether to use title text.

Change-Id: I80caeecea9b47728cf26bb0a388153ca0bdeafe1
tandaloneActionMode.java
275702c2f47ed87ab642462530092d9777f32ecd 24-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5355889 - Search action showing up in the menu dropdown in
spite of search actionview being expanded

Make sure that menu items with an expanded action view don't show up
in list menus presenting the rest of the menu.

Change-Id: I8c7b4e184a9d3ea2457543d0b8b36bc8e7068052
enu/ActionMenuPresenter.java
enu/ListMenuPresenter.java
enu/MenuBuilder.java
enu/MenuPopupHelper.java
823f074a73cfc23c40a7b576c71daa096ee9ed6a 22-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5300621 - Share menu disappears in gallery

ActionProviders (or action views) unfortunately had no way to report
that they had opened a sub-UI that would affect menu visibility
listeners used to hide action bars when not in use. This caused the
Gallery UI to hide its action bar when the share popup was open.

Add hidden API (to be made public later) to ActionProvider that can be
used to inform the menu system that a sub UI has opened or
closed. Account for this in menu visibility callbacks. Fix
ShareActionProvider to use this when its popup windows open and close.

Fix a regression where submenus were not properly reporting visibility
changes.

Change-Id: Ia6f45fb463ad106105c40d01f141c2e5c8b96f78
enu/ActionMenuPresenter.java
enu/IconMenuPresenter.java
86ed436b83d6b71ff00d1c3db910f2952018489e 15-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5237737 - ActionBar should fire an accessibility event when
action mode is turned on/off

Fire AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED when action modes
come and go to give an indication of UI change on the level of a menu
or dialog opening/closing.

Change-Id: Id36c6153b0722b4b6927c8d36503e8ac57c2d2b2
tandaloneActionMode.java
bc835039994f8fe70e37041a29d21335a2e22479 14-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5307916 - legacy menu theming

Let list_menu_item_layout and legacy dialog themes tie into new list
item theming internals.

Change-Id: Ic9253a2217148df72bf22b725b32512673c3bb80
enu/ListMenuPresenter.java
1d07e16c9d9ecaaaf8994ad5691c4063ab31f265 08-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5174277 - Trouble with Menus

Make sure that options menu panel presenters associated with a PhoneWindow
get re-wired properly when a new menu is generated.

Change-Id: Ic06130019aec8b8edc372054c348f147d164fc5f
enu/ListMenuPresenter.java
ee5e77cafec2eae70890abdcc1646ed39b06eddd 02-Sep-2011 satok <satok@google.com> Make setAdditionalInputMethodSubtypes async

Bug: 5120261
Change-Id: Ic7869cfaa5361531e08d58d7dfa5ba0feab0613e
InputMethodManager.aidl
7bc3ca0dc52be52ecad1c0de8c62a6a4bf8141ca 27-Aug-2011 Adam Powell <adamp@google.com> Accessibility fixes for action bars

Fix bug 5220543 - fix accessibility events for action buttons

Fix bug 5224260 - fix accessibility events for home/up

Change-Id: I7d55b4819862e1eda0809da92c52ec2d97f36af0
enu/ActionMenuItemView.java
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
be3c329ebec083e5ff933bab6b6c501519ad2bff 24-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5191728 - Specialized formatting in the split action bar

Visually center a single text menu item in the split action bar even
when an overflow button is present.

Fix a bug in allocating space in the split action bar.

Change-Id: I54eff86bf35197030c9c1656ebd71297e3c8b62b
enu/ActionMenuView.java
e20c279d9a6719a7c0d8c6606c7ba1bd207db8d3 23-Aug-2011 Adam Powell <adamp@google.com> Merge "Fix bug 5198868 - Showing previous hidden options menu doesn't work"
04dc06f52a68299c0ad70fa0a9f204d99983ba2b 23-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5198868 - Showing previous hidden options menu doesn't work

Fix bad assumption in flagging action items.

Change-Id: Ic67b56195bc308e73d1564cbf1b77e41eaa4ecab
enu/MenuBuilder.java
70e9f4bd2c044858f3c1c040ffce973351a2383a 23-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5189070 - Don't try to show overflow popups for nonexistant menus

Change-Id: I9db43211cdece81063fc1d3c3324f1e166f27b0c
enu/ActionMenuPresenter.java
bfcdfaf919cdb67897a6e24afc8f14b2c810596a 19-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5174755 - Adjust action bar overflow limits for ifRoom items

Fix a bug where action menus were not updating after configuration
changes.

Change-Id: Iaeed7d924a7b8b40849fd8e1826ed1c8f4079c94
enu/ActionMenuPresenter.java
23f4cc0353615107cc9c19fda9cf96ddd43266e2 18-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5099037 - No delete option when multiple videos are selected

Fix some bugs related to how action item slots are allocated in menus.

Fix some padding/margins in ActivityChooserView.

Change-Id: I12096b0165daca902c5bc8e24c1e8d54a35e9557
enu/ActionMenuPresenter.java
enu/MenuBuilder.java
enu/MenuItemImpl.java
f35d049b9953fbd1cd24887bac57b5e148c97846 17-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5168889 - action bar not respecting return codes of onCreate/Prepare menu

Change-Id: If28630cb21e74bde7a2474ce060078ea30170b9d
enu/ActionMenuPresenter.java
enu/BaseMenuPresenter.java
3bb421d5b85a8a99c408d16e4f80163a53bc0505 17-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5165771 - Gmail: crash on launch from notifier

Change-Id: Iec9c189bd3fa5e62bc8eb520ca2a1dd4db106036
enu/ActionMenuView.java
7b5e9e6c1c7098b6d7b2c6f9ab0c316f0f66109e 16-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5167078 - Show a 'cheat sheet' popup for icon-only action buttons

Action buttons: now less confusing!

Change-Id: I5c96effa64a2cdde22b71523b99ab489869fc245
enu/ActionMenuItemView.java
14b7e2c1688914ba8b6854738981337d7c0653be 12-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5078498 - Icons jump around on split action bar

Revise measurement and layout code for the lower menu on a split
action bar.

Fix some metrics in the action mode close button and in button bars.

Change-Id: I76215e28ae3b0199162dedd32794b25c9e38a346
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
6b0e97c7c48cf9446c7d4bc1b37d4c37d78433b0 03-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5093394 - Double SearchView!! What does it mean!?

It means we should collapse any expanded action items when we
clear out all items from a MenuBuilder.

Change-Id: I59cacd862a89b3a50c61b02c64b1ea71907af83f
enu/MenuBuilder.java
ccdd4ee44f8cfbb45b2989cca833895fcc4c4225 28-Jul-2011 Adam Powell <adamp@google.com> Fix bug 5087980 - MenuItem#expandActionView should work from within
onCreateOptionsMenu

Initialize menu presenters early enough to respond to expanding an
action view within onCreateOptionsMenu.

Have SearchView show the IME as an async post to handle attempts to
show it while the UI is still in initial setup.

Change-Id: I77f3a94ed4397737edb5a7a15bf54993b6723f5e
enu/MenuBuilder.java
257466d4e24bd405204cb21a1663eb1cc99f6137 28-Jul-2011 Adam Powell <adamp@google.com> Merge "Bug 5076788 - Optimize the building and invalidation of menus"
89b09da7b3b1e69264d9ec710c66eb2f891b313e 27-Jul-2011 Adam Powell <adamp@google.com> Bug 5076788 - Optimize the building and invalidation of menus

Fix cases that weren't batching menu presenter changes correctly.

Have FragmentManager invalidate the options menu less often.

Change-Id: Ia66fcd09ada8b0a084ad6b08d4340a8fa0c8fc5d
enu/ActionMenuView.java
enu/MenuBuilder.java
10da590839e264735de8a4582021aca0dab81037 27-Jul-2011 Amith Yamasani <yamasani@google.com> Handle callbacks to CollapsibleActionViews that are in an actionLayout.

Also, the onActionViewCollapsed needs to be called before detaching
the action view, so that the action view can dismiss the keyboard properly.

Fixes the Gmail search case where the keyboard doesn't disappear on hitting
the "up" affordance after a search.

Change-Id: I3c2f3f90f0edf6473404e6ceae3fa08866cad736
enu/MenuItemImpl.java
038f1c80af06da55056120e121d43e3ee89ec726 21-Jul-2011 Adam Powell <adamp@google.com> Bug 5061529 - Save/restore action view state for menu items across
invalidations.

This includes expand/collapse state.

Add CollapsibleActionView interface. Views can implement this to have
special behavior when they are presented as an expanding/collapsing
action view. This lets SearchView and others take care of fiddly
behavior (focus stealing; opening the IME) automatically without apps
needing to implement this themselves.

Change-Id: Ibbd1eb5fcf3e3a862419e9344ad50f896bd05e36
enu/MenuBuilder.java
enu/MenuItemImpl.java
enu/SubMenuBuilder.java
b187cd9c54f0100c0fb47c354cdecad29ca7c0ae 20-Jul-2011 Adam Powell <adamp@google.com> Fix bug 5038368 - Rules for collapsing action views.

Make collapsing action views exclusive on small screens with unsplit
action bars.

Change-Id: I11cc220acc7b6acddd25f2500404b47bfb405d5c
enu/ActionMenuPresenter.java
91e88122cf28a48fd2e2260da7d3d87dd437227a 18-Jul-2011 satok <satok@google.com> Enable IMEs to set additional subtypes in background

Bug: 4591792

Change-Id: I7e61a576c56d1a3a56001bdf2fd51ad3801add01
InputMethodManager.aidl
9837d6d02fc0968614efe5260a176e0c406fe93c 14-Jul-2011 Adam Powell <adamp@google.com> Fix bug in submenus opened from icon menus

Change-Id: I8b60ceefbccb5cad78d1b5c55702a2685a5f5382
enu/IconMenuPresenter.java
648b36bc3011437aeb1991dd355c83be7e5f0db5 14-Jul-2011 Adam Powell <adamp@google.com> Merge "Preserve spacing for icons in menus"
9151103ff20d28e8db2a2cc0386d57b8dad4b5d5 13-Jul-2011 Adam Powell <adamp@google.com> Preserve spacing for icons in menus

Change-Id: I3269fcffb98a84b6a5c5f9198afd2b2eae7d5f02
enu/ActionMenuPresenter.java
enu/ListMenuItemView.java
enu/MenuPopupHelper.java
76559a65ad9d644f10beacf8895ceb217fdd0aeb 07-Jul-2011 Svetoslav Ganov <svetoslavganov@google.com> Polish of the ActivityChooserView and ShareActionProvider.

1. Addressed the UX comments: ActivityChooserView's default selection
popup no longer shows a message, rather hightlights the default
action which now it displays. Alignemnt of the UI.

2. The ShareActionProvider shows a sub-menu if the host item goes
on the overflow menu.

3. Now the heade layout of the activity chooser view is not needed hence
dropped and the item and footer ones are merged.

Change-Id: I0b3de623e4c0a805be9ed73a8541e66b8c00e2d2
enu/MenuBuilder.java
enu/MenuItemImpl.java
961dd11895ce72e59bca124ef5bea4e4c1183099 12-Jul-2011 Adam Powell <adamp@google.com> Update ActionProvider to support dynamically building submenus.

Stub out ShareActionProvider for building a submenu of activities to
choose from.

Change-Id: Ibd9ada77a455ed1a296c87b6d967073ca0f676c2
enu/MenuBuilder.java
enu/MenuItemImpl.java
11ed1d6cae9214335c92ac38498a4e6c7d1c8324 12-Jul-2011 Adam Powell <adamp@google.com> Fix bugs around restoring submenu state after activity teardown/restore

Change-Id: I6cb5b3cad39b141dff84b8e0ca62f8f0a76a03b1
enu/ActionMenuPresenter.java
enu/BaseMenuPresenter.java
enu/IconMenuPresenter.java
enu/ListMenuPresenter.java
enu/MenuBuilder.java
enu/MenuPopupHelper.java
enu/MenuPresenter.java
7f8f79a1ff086c04a3ad2a442b1d39a8186e3e50 08-Jul-2011 Adam Powell <adamp@google.com> Add ALL CAPS style to TextView/TextAppearance

Switch out ugly hack in action menu items for the new style.

Change-Id: I68a0ed62a352b14d499e6478b82bbc12dcb5a030
enu/ActionMenuItemView.java
160bb7fa60e8ece654e6ce999b6c16af50ee7357 07-Jul-2011 Adam Powell <adamp@google.com> Action bar layout tweaks

Fix a Spinner issue that reported odd baselines

Fix detection of expandable items for action menus and allocation of cells

Use the right asset for home-as-up in Theme.Holo.Light.SolidActionBar.Inverse

Add TextAppearance.Holo.Widget.ActionBar.Menu as a basis for further
menu item styling

Sync with design for tab/menu text appearance

Change-Id: I32026bbde1cd4e15b6cda30d78d3d48250c84c94
enu/ActionMenuView.java
2c742c2aebf20a0534c822eb8a36da99d9df79fe 07-Jul-2011 Adam Powell <adamp@google.com> Fix bug 5000009 - NPE in Phone UI

Change-Id: I9c5c2c73b340192d754949865b6e4ee4a9a324ff
enu/ActionMenuItemView.java
35aecd5884a5ccfe380903e39f30f468315e8f92 01-Jul-2011 Adam Powell <adamp@google.com> Updates for action menus

Sync with UX designs for action menus in split action bar mode.
Layout is now based on a grid cell scheme.

Tweak action menu item layouts.

Fix some bugs with drawing LinearLayout dividers.

Rename config resources to follow convention.

Action bar menu items now show text in ALL CAPS. This is done in a
locale-dependent manner, but if it produces problems in specific
locales the config resource config_actionMenuItemAllCaps should be set
to false for that locale.

Change-Id: I064c2dd85e012e89551f29153efcfc17f9106333
enu/ActionMenuItemView.java
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
enu/MenuItemImpl.java
51ac0e94a83cfccb5105aa14df1077729a5b4ccc 17-Jun-2011 Svetoslav Ganov <svetoslavganov@google.com> Adding a ShareView and ActionProvider for menus.

1. Adding a widget for sharing contenet with other applications.
The widget orders the share targets based on previous shares.
It displays the share target list as either a popup anchored to
itslef or as a dialog.

2. Added a ShareDataModel that will back widgets or other classes
that are interested in share targets for a given intent ordered
according to share history. This class is backing the ShareView

3. Added ActionProvider mechanism for the MenuItems. The action
provider of a menu creates the action view as well as performs
a default action if the menu item is on the overflow menu and
is triggered but none of the menu callback has handled that.

bug:4590827

Change-Id: Iaa4add2df2538b8c6c7edbeaf2880486d4fd75c5
enu/ActionMenuItem.java
enu/MenuItemImpl.java
8c4706252228755ed181d19532b7e0cfec270ba4 01-Jul-2011 Adam Powell <adamp@google.com> Add API to report the presence of a permanent menu key on the device.

Action bar now uses this to determine whether to show an overflow menu.

Change-Id: Ife4f724d02bbc0d9d86d94740c85299f6dacae91
enu/ActionMenuPresenter.java
863fcd62171e55bc9f2105d9fb5877df982454d8 21-Jun-2011 satok <satok@google.com> Add onClickView to InputMethodService

Bug: 4697141

- onClickView is called everytime the user taps EditText

Change-Id: Ia71ad325e50a20e9e1001def662ef992bb50a9d0
InputMethodSession.aidl
8969d9924c662ab4cdacc342bbdc33756db730be 22-Jun-2011 satok <satok@google.com> Revert "Create TextServiceManager and SpellCheckerService"

This reverts commit eaddb894865a804279659b4aad6364a34ab50beb.
TextServiceManager.aidl
f86ee14f6a53d409489261415901c6397877ce3d 22-Jun-2011 satok <satok@google.com> Merge "Create TextServiceManager and SpellCheckerService"
42b91bbcdaf64b2f19d0a9ce168964b31a5dc139 22-Jun-2011 Adam Powell <adamp@google.com> Fix bug 4818050 - Need a way to get notified when a PopupMenu gets
dismissed/canceled

Add an OnDismissListener to PopupMenu.

Change-Id: I7abe1b9c9bea5e758a9c32631185e50cd7eb1ed0
enu/MenuPopupHelper.java
45d061656aab9f13dc1bb0e5d9378dd661a25f8e 22-Jun-2011 Adam Powell <adamp@google.com> Merge "Fix bug 4725323 - 'More' shows the icons which are already available in settings"
51195b56ff6d3d589abefde27f0a99b5a9a04ff8 22-Jun-2011 Adam Powell <adamp@google.com> Fix bug 4725323 - 'More' shows the icons which are already available
in settings

Change-Id: I161787710fbadaa19b93de3e69f3c60db2be73a6
enu/ListMenuPresenter.java
ea1ca952c625d51dc71e1cc3d955b239921888c7 21-Jun-2011 Adam Powell <adamp@google.com> Fix bug 4108953 - Old-style menus do not show menu items marked as
showAsAction="always"

Change-Id: I63299143ea780abeed6dcdece6934f0e704b46a2
enu/ActionMenuPresenter.java
enu/MenuItemImpl.java
eaddb894865a804279659b4aad6364a34ab50beb 01-Jun-2011 satok <satok@google.com> Create TextServiceManager and SpellCheckerService

Bug: 4176026

Spec of TextServiceManager
- Chooses the most applicable TextService(e.g. SpellCheckerService, WordBreakIteratorService..)
for each locale

Spec of SpellCheckerService
- Returns whether the given string is a correct word or not
- Returns Suggestions for the given string

Change-Id: Ia25e7b4f308778891929e31b8cbd741f6848cce4
TextServiceManager.aidl
38639b1d75933bfb720db79fce26f09478709614 18-Jun-2011 Adam Powell <adamp@google.com> Fix bug 4689431 - PopupMenus too narrow on phones

Change-Id: I624b46d17c1d964fd6cb04abf96333c7a8474d75
enu/MenuPopupHelper.java
f1a4549604639e3d9eafc406426ddc252d427b57 17-Jun-2011 Adam Powell <adamp@google.com> Bug 4726236 - NPE at dispatchRestoreInstanceState

Change-Id: Ib7eba6ead85fa4daa8046bbc2d4d3fcc1d4223c3
enu/ListMenuPresenter.java
c0053223bedf33581b0830fb87be32c1f26e5372 13-Jun-2011 Fabrice Di Meglio <fdimeglio@google.com> Add View.getResolvedLayoutDirection()

- update Callback2 interface
- update Gravity.getAbsoluteGravity() and Gravity.apply() to be more generic
by changing "boolean isRtl" parameter to "int layoutDirection"
- fix BiDiTests for RTL FrameLayout

Change-Id: I97bb456c22d5fd3ecb34f08564ce4dbed37e7459
enu/IconMenuItemView.java
21e2f1b4a0877ee38f7ba89eb32f585fb34431f3 10-Jun-2011 satok <satok@google.com> Merge "API to set additional subtypes"
e7c6998e0a953ae55487d4fe122739646f9280aa 03-Jun-2011 satok <satok@google.com> API to set additional subtypes

Bug: 4321667

- Due to the voice team's strong request

Change-Id: Ia8bbc277c0987bde996e6f65541877cec96a3ca1
InputMethodManager.aidl
81cf3ecadefb8fd6c05771b0b9947babaa9c8eaf 17-May-2011 Adam Powell <adamp@google.com> Action buttons now use themable style.

Obey action view layoutparams.

Change-Id: Ia466008465b57659615fbf9d450ce3fdb3c06379
enu/MenuItemImpl.java
1ab418a222e1834c4b1312fde355e41a1947af0d 10-Jun-2011 Adam Powell <adamp@google.com> Refine the behavior of split action bars.

Change-Id: I27212c7554025433ee366f0766971f0092b26d67
enu/ActionMenuPresenter.java
8643aa0179e598e78d938c59035389054535a229 20-Apr-2011 Svetoslav Ganov <svetoslavganov@google.com> Interrogation of the view hierarchy from an AccessibilityService.

1. Views are represented as AccessibilityNodeInfos to AccessibilityServices.

2. An accessibility service receives AccessibilityEvents and can ask
for its source and gets an AccessibilityNodeInfo which can be used
to get its parent and children infos and so on.

3. AccessibilityNodeInfo contains some attributes and actions that
can be performed on the source.

4. AccessibilityService can request the system to preform an action
on the source of an AccessibilityNodeInfo.

5. ViewAncestor provides an interaction connection to the
AccessibiltyManagerService and an accessibility service uses
its connection to the latter to interact with screen content.

6. AccessibilityService can interact ONLY with the focused window
and all calls are routed through the AccessibilityManagerService
which imposes security.

7. Hidden APIs on AccessibilityService can find AccessibilityNodeInfos
based on some criteria. These API go through the AccessibilityManagerServcie
for security check.

8. Some actions are hidden and are exposes only to eng builds for UI testing.

Change-Id: Ie34fa4219f350eb3f4f6f9f45b24f709bd98783c
aseIWindow.java
8d02deabac62c4a68a335a7b3141795466362b89 01-Jun-2011 Adam Powell <adamp@google.com> Implement bug 4500971 - Collapsable action views

Action views may now be flagged as 'collapsable'. This means that the
action menu will always show them in the collapsed state by
default. When selected, the action view will "take over" the
navigation/view side of an action bar until dismissed via the home/up
button.

This feature allows for more long-term exclusive modes akin to
ActionModes but less intrusive. The action menu itself remains
unaffected. Collapsable action views are ideal for things such as
search or categories of tool palettes.

Change-Id: Ibafce5631befbfe67c5d834c2e2617d3d7f6da7a
enu/ActionMenuItem.java
enu/ActionMenuPresenter.java
enu/BaseMenuPresenter.java
enu/ListMenuPresenter.java
enu/MenuBuilder.java
enu/MenuItemImpl.java
enu/MenuPopupHelper.java
enu/MenuPresenter.java
enu/SubMenuBuilder.java
c619e74cc62678cef09b5f92e87e762a1f02aab7 01-Jun-2011 Gilles Debunne <debunne@google.com> ActionBar makes room for icons when no title is provided

Change-Id: I5bd09e00b50496032deda40ea22367d727230611
enu/ActionMenuItemView.java
5ff0f99b23da389f59fe736c4c670c60f13be8ea 27-May-2011 Fabrice Di Meglio <fdimeglio@google.com> Merge "Add support for Gravity BEFORE and AFTER"
6a03640539405afbdefe72894759281b98aa6e6f 23-May-2011 Fabrice Di Meglio <fdimeglio@google.com> Add support for Gravity BEFORE and AFTER

- update layouts
- add Callback2 for RTL aware Drawable
- add unit tests

Change-Id: Ic64d0291e262170aff7297c6580b0b422eaa8d89
enu/IconMenuItemView.java
f9f01008624e2d28c15a90d942fa36f98c8c967d 19-May-2011 satok <satok@google.com> Add Apis to send notifications when the suggestion was picked

- Due to a strong request from VoiceIME

Bug: 4443922

Change-Id: Ia539de0acf66053e0349daec459d75e36805f6bf
InputMethodManager.aidl
f4232e0097ffb672f5d1559b20c7230081efe34f 23-May-2011 Adam Powell <adamp@google.com> Change action button layout for split action bars

Change-Id: Ie1427ae6b0334bf0a8afd5cae968c286c82a3837
enu/ActionMenuView.java
f746fc9e45c2bc80d8af2eb10d849c5807ebe1c7 21-May-2011 Adam Powell <adamp@google.com> Fix bug 4450805 - item selection dispatching in submenus.

Change-Id: I6c56c9c8c6bd6c719250df4a21bda7d0ef463de4
enu/SubMenuBuilder.java
d1f4207ba577e2ac3f39a719f8ee4bb9f4940dc1 04-May-2011 Adam Powell <adamp@google.com> Fix bug 4355335 - android.app.cts.DialogTest.testContextMenu failing on IRJ28

Change-Id: Icfcd8c2aadd0fb9e49296b8318858317407e1b7f
enu/MenuDialogHelper.java
e42b189f369b6b0cb35095bc5386ba82b5ce39a5 03-May-2011 Adam Powell <adamp@google.com> Remove debug logging

Change-Id: If1a8ef5461b98239d8f55f842e1043b6b3d0f070
enu/ActionMenuPresenter.java
640a66eac612b850b5dabd3b93bd94f83ed2d567 29-Apr-2011 Adam Powell <adamp@google.com> Refactoring of action bar internals

Split action bar implementation details. Factor out common components
into AbsActionBar. Layout rules for the lower half of split action
bars.

Change-Id: I6bc39ba6c343055597880a7d4663dd8f30aa4999
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
enu/MenuBuilder.java
9b4bee0f14bbd137b0797127aff2df46a6321ec5 28-Apr-2011 Adam Powell <adamp@google.com> Introducing the split action bar.

Apply (or extend) the theme Theme.Holo.SplitActionBarWhenNarrow or
Theme.Holo.Light.SplitActionBarWhenNarrow to enable splitting the
action bar across both the top and bottom of the screen. This places
the action menu along the bottom, leaving more room at the top for
titles, navigation, and custom views and more room at the bottom for
menu items.

TODO: Refine layout of the action menu when placed at the bottom of
the screen. Make action modes split as well.

Change-Id: I92c91f99c533f26aecf6b828ed041386c4f16922
enu/ActionMenuPresenter.java
45c515b0e962ee8ffc901872bcc9f25599ea0e78 22-Apr-2011 Adam Powell <adamp@google.com> Action bar work for phones

Tweak sizing and layouts for action bar on smaller devices. The action
bar's size is now partially dependent on form factor and orientation
to conserve screen space, especially in landscape mode.

Alter the max action menu items for smaller devices. Disallow text on
action menu items with a horizontal width of less than 480dp when an
icon is available.

Remove the "Done" text on the action mode close button. (TODO: get a
properly sized 9-patch resource for this - the current one has an
intrinsic width that is too large.)

When setting an action bar icon as a resource ID, the bar will attempt
to load a mipmapped resource that is the closest available for the
target size.

Change-Id: I2498c640666ade310fdd1d3a2078bd4000b392a2
enu/BaseMenuPresenter.java
enu/MenuItemImpl.java
a86b350977be53146d568bc0736d0f2b4aef8de5 21-Apr-2011 Adam Powell <adamp@google.com> Fix bug 4329016 - Refresh menus properly while in batch update mode

Change-Id: Ia4a4feffb0a77a99e0b241c9cf1d737577d9154d
enu/MenuBuilder.java
696cba573e651b0e4f18a4718627c8ccecb3bda0 29-Mar-2011 Adam Powell <adamp@google.com> Refactor menu internals.

In the old world, MenuBuilder and MenuItemImpl were responsible for
generating views for any presentation of a menu. MenuBuilder needed to
know any types and resources involved, and the implied caching
semantics did not work well for menus presented within AdapterViews.

In the new world, the MenuPresenter interface takes over the
responsibility of generating views or adapters for menu
items. MenuBuilder/MenuItemImpl still provide extra metadata tracking
used by these presenters. Mutiple presenters may be active for a
single menu at a time. All of this remains internal framework
implementation details.

BaseMenuPresenter provides a simple base for presenters that treats
the host MenuView more like an AdapterView. This allows for less
rebuilding of views when items are added/removed.

Callbacks have been restructured. Calls that relate to the menu itself
are still handled by MenuBuilder.Callback, but calls related to a
specific presentation of a menu are handled by MenuPresenter.Callback
objects attached to a MenuPresenter.

Also add API to programmatically set divider options for LinearLayout
and hidden API so that ActionBarView can have finer-grained control
over divider placement.

Change-Id: I2265b86a084279822908021aec20dfbadc1bb56b
tandaloneActionMode.java
enu/ActionMenuItemView.java
enu/ActionMenuPresenter.java
enu/ActionMenuView.java
enu/BaseMenuPresenter.java
enu/ExpandedMenuView.java
enu/IconMenuItemView.java
enu/IconMenuPresenter.java
enu/IconMenuView.java
enu/ListMenuItemView.java
enu/ListMenuPresenter.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuItemImpl.java
enu/MenuPopupHelper.java
enu/MenuPresenter.java
enu/MenuView.java
enu/SubMenuBuilder.java
68f1b78b7b9139a0e34285ff641a664e664a14b8 11-Apr-2011 satok <satok@google.com> Add an API to get the last used input method subtype

Bug: 4075039

- Voice input requires to know the last used input method subtype.

Change-Id: I603a4fb88a2af5195e52188adfa6585ad80304fa
InputMethodManager.aidl
e3797a15fbf769a0abcbe121cfd33b4b658aea1e 21-Mar-2011 satok <satok@google.com> Removed APIs for setCorrectionSpan from InputConnection

("setCorrectionSpan" was added in Id3abc9ea4d11753cd )

Also..
- Added a class java doc for CorrectionSpan
- Removed FLAG_DEFAULT
- Changed the return type of getSuggestions from Array<CharSequence> to String[]

Change-Id: If5eb091e307a7a40c5b4a70ec1fe6059ecd9fb2d
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
6bddd8771d05889024778caa78fb1eaae68a0802 24-Mar-2011 Adam Powell <adamp@google.com> Fix bug 4084399 - with usb keyboard, actionbar menuitems with
icon+text take dpad focus twice in row

Fix action menu item layout focusability so that only the full item is
focusable. Fix up listeners appropriately.

Change-Id: I127c36404894869a08c5f4472491e3e596563c5c
enu/ActionMenuItemView.java
adb435835fb9a5f2bb74d29930b239dde18504a7 09-Mar-2011 satok <satok@google.com> Add CorrectionSpan and APIs to pass a secure CorrectionSpan to TextView

- CorrectionSpan is a span which has suggestions made by IME.
This has a function to change the current IME to other IME specified
in this span. For security reasons, only the current IME
is allowed to use this function through InputConnection.
(IME token is used for checking the validity of it.).

- CorrectionSpan stores following information:

flags, subtype Id, InputMethodInfo Id, suggests, locale, original string

Change-Id: Id3abc9ea4d11753cdc4f483a2bb3128f49ba198a
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
4afd62b18c52a55371ab923d54f93615ad68fd7a 19-Feb-2011 Adam Powell <adamp@google.com> Add an API to listen for window attach/detach events on a View.

Fix bug 3312949 - inconsistent state in MenuPopupHelper

Change-Id: Ie802ada3f8de4cf71c92fcc7c6abce9ba85e7b75
enu/MenuPopupHelper.java
ca51e8788a58f2af3525b7214a675f2d0233e5da 15-Feb-2011 Adam Powell <adamp@google.com> Fix some bugs with MenuPopupHelper and ListPopupWindow

Clean up handling of a few conditions in MenuPopupHelper that the
monkeys manage to trigger around the use of ViewTreeObserver. (bug
3443819, bug 3312949)

Fix a bug where a stale handler message could cause a ListPopupWindow
to reopen itself after being dismissed. (bug 3453607)

Change-Id: I488014767ccee785500862a2572beb35901d173b
enu/MenuPopupHelper.java
f2d7a5d8312b78f84e6cc63277ec7ec874722015 08-Feb-2011 Adam Powell <adamp@google.com> Fix bug 3426162 - Overflow menu closes on its own

Makes populating action menus smarter, doesn't completely empty and
repopulate. Fixes issues where changing menus can leave popups without
an anchor.

Change-Id: I03cc266f0952123c5704a78cdcfc69b77af1915b
enu/ActionMenuView.java
857fd9b8562c29913e03ed29288bd1802d37dc60 28-Jan-2011 Joe Onorato <joeo@google.com> Plumb whether an input view is actually visible or not through from the IME
to the status bar.

Bug: 3391067
Change-Id: I049531155bf7ee0b29874916c0b5b0a45b73c09e
InputMethodManager.aidl
5dcc9bd7261d6b19135bf972cf603b355b5316f4 25-Jan-2011 Adam Powell <adamp@google.com> Merge "Fix bug 3387855 - Menu flashes on left side of screen" into honeycomb
e2b03a62e5014ea60e24a989544fa549b493a520 25-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3387855 - Menu flashes on left side of screen

Post popup menu click events rather than executing inline so that the
popup can close undisturbed.

Change-Id: I01481bd37d7921c10c6b8b484eab33f0d25447ff
enu/MenuPopupHelper.java
30bc34f191ca8a009af313fc751e5b4bff6e39a1 25-Jan-2011 Jeff Brown <jeffbrown@google.com> Fix surface frame size reporting.

The SurfaceHolder provided by the wallpaper service was not reporting
the correct size in getSurfaceFrame(). This broke an optimization in
the ImageWallpaper. The old code happened to work because calling
lockCanvas on the SurfaceHolder with a null dirty rectangle happened
to have the side-effect of updating the SurfaceHolder's surface frame
size field because it passed mSurfaceFrame as the dirty rect, causing
mSurfaceFrame to be set to the size of the region to be drawn.

However, relying on this side-effect is wrong. Among other things,
the dirty region could actually be smaller than the surface frame.

This patch fixes WallpaperService, SurfaceView and ViewRoot to ensure
that the surface frame size is always set explicitly and is not modified
by calls to lockCanvas.

Change-Id: I10948f5ec269409ceaf0f7d32b3f6731e9499ebc
aseSurfaceHolder.java
1821ff9022f0ea5f5c5d82a96a05f46192d50c26 25-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3178934 - Make MenuBuilder notify its adapters of changes

Change-Id: I28603afbdfdd913aa06f3a07065e27aff1dc524b
enu/MenuBuilder.java
c831e3192ccd9b2cf69ec7c973005e578631da3b 24-Jan-2011 Adam Powell <adamp@google.com> Merge "Fix bug 3382994 - android.view.WindowManager$BadTokenException" into honeycomb
55767443adaf31c377ff1d7abf2d3fe7f01bfbaa 24-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3382994 - android.view.WindowManager$BadTokenException

Remove pending callbacks when ActionMenuView is detached.

Change-Id: Ia61e446f60f10dd82476c00b4c11177182e7db60
enu/ActionMenuView.java
abbcc241c0db3d9167b5e6baeac1a07f009a05a5 24-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3237638 - make it easy to change a "refresh" AB button/icon
into the indeterminate progress icon

This fixes a bug that caused ActionViews to not be updated properly
after a pass through invalidateOptionsMenu/onPrepareOptionsMenu. Apps
can now set/clear action views to display progress spinner widgets or
anything else on demand.

Change-Id: I138eceb504177c6bb5b86d40a68a82973aa841a5
enu/MenuItemImpl.java
664644d9e012aa2a28ac96f305b1ce6499ec8806 24-Jan-2011 Joe Onorato <joeo@google.com> visibility ("lights out") API.

1. Views may setSystemUiVisibility() to recommend that
the system chrome (status bar or other UI) show or hide
itself. (This functionality was previously available only
via the FLAG_FULLSCREEN window flag for some SystemUI
implementations.)

2. Views may register a OnSystemUiVisibilityChangedListener
on a view, and find out when the system UI actually
appears or disappears, allowing apps to coordinate the
appearance of their own UI if desired.

Bug: 3241144
Change-Id: Ia1758d94099182d49a1e3688ea2738ae4995b829
aseIWindow.java
b3312b88c1f10cd29f9b55b03d5b41fc429ebfb5 22-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3360851 - actionbar overflow menu button doesn't trigger "audible selection"

Change-Id: I768d35f9752d5f6466708fd191781aa26aefd121
enu/ActionMenuView.java
4192e38827b27416410516d4bb0d545c36f4660e 17-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3362446 - NPE in legacy menus

Change-Id: Icf9a0bec46c74ace3acbc85eea45d1d769b699d1
enu/MenuBuilder.java
36fced9b211255e2137014e21fb3259042d8da85 17-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3050138 - Action bar does not display correctly when many
action items are added

Rules for action bar overflow:

Items are considered for inclusion in the order specified within the
menu. There is a limit of a total count, optionally including the
overflow menu button itself. This is a soft limit; if an item shares a
group ID with an item previously included as an action item, the new
item will stay with its group and become an action item itself even if
it breaks the max item count limit. This is done to limit the
conceptual complexity of the items presented within an action
bar. Only a few unrelated concepts should be presented to the user in
this space, and groups are treated as a single concept.

There is also a hard limit of consumed measurable space. This limit
may be broken by a single item that exceeds the remaining space, but
no further items may be added. If an item that is part of a group
cannot fit within the remaining measured width, the entire group will
be demoted to overflow. This is done to ensure room for navigation and
other affordances in the action bar as well as reduce general UI
clutter.

The space freed by demoting a full group cannot be consumed by future
menu items. Once items begin to overflow, all future items become
overflow items as well. This is to avoid inadvertent reordering that
may break the app's intended design.

Change-Id: I878f6b15619059258c91c01f4fe838feac161d6d
enu/ActionMenuView.java
enu/MenuBuilder.java
06bc9721d8f5db053b51e1c536e746833ad46036 15-Jan-2011 Jeff Brown <jeffbrown@google.com> Merge "Disable soft keyboard when keyboard attached." into honeycomb
4aed78b5056560f499e5953f659fa90a06ecc38a 15-Jan-2011 Jeff Brown <jeffbrown@google.com> Disable soft keyboard when keyboard attached.

Also hide menu shortcuts everywhere until we can get around to
redesigning the menu UI to be more consistent.

Bug: 3306545
Bug: 3330748
Change-Id: I4d4e19525cdfc93d9aae0dcaa1e6266fb552c5bc
enu/MenuBuilder.java
9f125d341521efc8535e32e35a641be50d405c36 15-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3339039 - Preserve proper behavior for action button text when
updated.

Change-Id: If3529616d5a2b69638b2b0c4070d5ebbb418410c
enu/ActionMenuItemView.java
e7d468410b3a783560d5158a5798cef1b4b67702 14-Jan-2011 Adam Powell <adamp@google.com> Rework action bar menus.

Fix bug 3328810 - remove icons from action bar overflow menu. Popup
menus now will not show icons. Give popup menu items a minimum width.
Alter the sizing of popup menus.

Fix bug 3192635 - revise rules for action menu dividers. Dividers now
appear between the overflow button and any other items next to it, and
anywhere they disambiguate touch targets between text and other
content. Action views are on their own and should include their own
dividers if needed.

Remove dividers from around action bar spinners and tabs.

Change-Id: I935b48b473606ac2adde5e2b251bf30ebe2a3da9
enu/ActionMenuItemView.java
enu/ActionMenuView.java
enu/ListMenuItemView.java
enu/MenuItemImpl.java
f0ad6e6eaf48ac8f4007232ad0a8511a7b5cfc0e 11-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3333015 - Overflow menu item submenus do not open

Submenus of action bar menus will open as new menus.

Change-Id: I924b87bbea91b0df5e3608ec894530302c0e1d8d
enu/ActionMenuView.java
enu/MenuPopupHelper.java
5e3f284baa271cb0fbf90e504d19fdd2e385382e 08-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3200615 - "MenuPopupHelper cannot be used without an anchor"

Add protection against views disappearing before previously posted
Runnables attempt to show a menu anchored to them.

Change-Id: Ia2a322e76665e61feb5bdb92377d5066cb6d5b04
enu/ActionMenuView.java
enu/MenuPopupHelper.java
d16c9884bb0bd06f9d7aa1be649226a5df6591ee 07-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3330223 - onCreateOptionsMenu() unable to getActionView()
immediately after orientation change

Inflate action view layout resource earlier so that calls to
getActionView are valid immediately after menu inflation.

Change-Id: I8023328b1a77670ac42a783f6e4b46aa5c2a798e
enu/ActionMenuView.java
enu/MenuItemImpl.java
345a9f4e6d0a1b60664b010385f36456a5fef25d 07-Jan-2011 Adam Powell <adamp@google.com> Fix bug 3212471 - Widget.Holo.ActionButton style and friends now 76% more useful

Change-Id: Ideb37c8a31e37df8fcfc549d12b4b6cafc983ca1
enu/ActionMenuView.java
3f476b34049d062942eafcf48396f593e00bd324 04-Jan-2011 Adam Powell <adamp@google.com> Revisiting ActionBar API and layout.

Fix several bugs where ActionBar was ignoring LayoutParams in action
views.

Add convenience methods for toggling display options flags.

Add layout resource version of ActionBar#setCustomView

Fix a bug preventing actionViewClasses from being loaded properly in
menu xml.

Change-Id: I0d9a0b635fd9cfc020bac69369c0c7749c226349
enu/ActionMenuItem.java
enu/ActionMenuView.java
enu/MenuItemImpl.java
16331c8a1d33defccc5cbb18694def79196c921b 20-Dec-2010 satok <satok@google.com> Add a parameter to InputMethodManagerService.getEnabledSubtype for allowing to select subtypes implicitly if no subtype is enabled.

Bug: 3142286

Change-Id: I92d019d0648c552e6d7695c3530aa81ae054d702
InputMethodManager.aidl
1700ae0aef4e6a3f412b758389955abd049060db 20-Dec-2010 Adam Powell <adamp@google.com> Fix bug 3295495 - Wrong menu item selection in PopupMenu

Change-Id: I17ec55f09dbed9797cb702a7252f6c89e861cc6a
enu/MenuPopupHelper.java
50f784cf2dc2dea8061153ac3a843f60a9d88781 20-Dec-2010 Adam Powell <adamp@google.com> Measure spinner items for sizing the dropdown view.

Only a limited window of items will be measured around the currently
selected item.

Change-Id: Ie0431948fdd564fa4bbeb82dede9e2abebbaee55
enu/MenuPopupHelper.java
aa0b92ce2b51987e9c864164234fe968ab5b9311 14-Dec-2010 Adam Powell <adamp@google.com> Fix bug 3210201 - Popup window wrong size/position when IME hidden

Fixes a case where ViewRoot does not recompute its size properly.
This caused various offsets to get out of sync and the window would
draw improperly.

Change-Id: Id0abb37bbf27b60de2dca4077c21040ec84ef163
enu/MenuPopupHelper.java
cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91 09-Dec-2010 Gilles Debunne <debunne@google.com> New API in InputConnection to signal IME's text correction.

Scafolding so that the IME team can start working on this feature.

The animation part in the TextView is missing.

Change-Id: I8225538564370fba1500e3539742a8ab79bdd199
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
cf0357639e952a87f0d535c82691919af81f058b 06-Dec-2010 Adam Powell <adamp@google.com> Clean up button bar styles

Change-Id: I65b6600f72b92db024f83b63d3ea91abc1cbb96c
enu/ActionMenuView.java
189ee18d6c6483ad63cc864267328259e2e00b95 03-Dec-2010 Dianne Hackborn <hackbod@google.com> Implement smarter sizing of WRAP_CONTENT windows.

This extends the view hierarchy's measure pass to allow view to
propagate up to their parent additional information besides just
their measured size. They can now report that their measured width
and/or height should be larger than the size their parent is
limiting them to (even though by definition they need to contrain
their reported measurements to the limits imposed by the parent).

ViewRoot uses this information to determine if it should remeasure
the window with a larger size limit to try to make it fit.

Change-Id: I90af3b7a8ec45d0a5c003fb009857025209d83eb
enu/IconMenuView.java
8515ee846bd76aee86ec5ddfcc4dd1e626dd999c 30-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3240444 - add OnMenuVisibilityListener for action bar.

Fix bug 3180015 - leaking window handles on configuration change for
action bar dropdown menus

Rename ActionBar.NavigationCallback to something more consistent with
the rest of the API.

Change-Id: Ic1fb4c07484c57a72649b30e27d220b18cda6cdf
tandaloneActionMode.java
enu/ActionMenuView.java
enu/MenuPopupHelper.java
440aab54cab106030f1edafea4dec1f9d8624f9b 25-Nov-2010 satok <satok@google.com> Removed InputMethodSubtypePicker

Change-Id: I08abac5d65a30c02cc671f4f70e93df25b6c8a92
InputMethodManager.aidl
2820351489537698ad153c6397edf3270455edc5 24-Nov-2010 satok <satok@google.com> Add an API to set InputMethodAndSubtype

Change-Id: I66f1a4c8e0d98705614f12a737e7efcd0263b72a
InputMethodManager.aidl
4e4569dab5c75804b01a19b2d6e6101b445c1c68 19-Nov-2010 satok <satok@google.com> Add an API to get shortcut IMEs

- If there are no selected shortcut IMEs, the most applicable voice input will be selected as a shortcut IME

Change-Id: Ibd0f7ef5101013569c303820a3adc9038a97356d
InputMethodManager.aidl
67ddf9cbd5d7133c7f443cd3c55841ed1109c3a0 17-Nov-2010 satok <satok@google.com> Add a function to get enabledInputMethodAndSubtype

Change-Id: Ie97635343249aa63e33028c2843cab103125ca92
InputMethodManager.aidl
ed8b403cc8066bf76cdf98f8d9906ff810defc5b 16-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3198503 - NPE at MenuPopupHelper.dismiss

Make sure dismiss() can be called even when the popup is not currently
showing.

Change-Id: I48077d8b3bfe0df04bceeb056ed54cbd79a6e660
enu/MenuPopupHelper.java
b66d287e3003a0934d5714fbf15e554b3c814906 09-Nov-2010 satok <satok@google.com> Add a setter of InputMethodSubtype to InputMethodManager

- Public API: void setCurrentInputMethodSubtype(int pos)

Change-Id: I55daa19ba924999def544bf841f00bf54852f3e1
InputMethodManager.aidl
735cf38b8c7f8f91ad087511e44fe79018fa61d6 11-Nov-2010 satok <satok@google.com> Add a function to switch back to the last used IME

Change-Id: Iac7bcc2ee16dd04d91a3e75b160622d246788c9a
InputMethodManager.aidl
0458796f1401732b38660794148f4c5e5602f432 12-Nov-2010 Adam Powell <adamp@google.com> Fix bug 3146938 - Menus spawned by ActionBar should hide when action
bar is hidden

Any popup spawned by the private class MenuPopupHelper will be hidden
if its anchor becomes hidden. ("hidden" == !View#isShown())

Fix a bug where ActionBar subtitle views were not going away when
subtitle text was set to null.

Fix a bug when switching out of ActionBar tabbed nav mode with no
active tabs.

Change-Id: I1f30c067156221f96905ac69ab876418ad2e94f8
enu/MenuPopupHelper.java
3915bb845b032dc184dba5e60970b803390ca3ed 05-Nov-2010 Jeff Brown <jeffbrown@google.com> Tell system server whether the app handled input events.

Refactored ViewRoot, NativeActivity and related classes to tell the
dispatcher whether an input event was actually handled by the application.

This will be used to move more of the global default key processing
into the system server instead of the application.

Change-Id: If06b98b6f45c543e5ac5b1eae2b3baf9371fba28
aseInputHandler.java
9ab978713ce86fdaefed2407f4f3c998ab0e3178 27-Oct-2010 Adam Powell <adamp@google.com> Action bar API updates - new display options

Change-Id: I55e56cd7aafa53994990079e88ef85e4eb1a0b3f
enu/ActionMenuView.java
06487a58be22b100daf3f950b9a1d25c3ea42aa2 29-Oct-2010 satok <satok@google.com> Add a functionarity for showing / hiding IME button on the system bar

Bug: 3077030

- IME communicates with status bar directly.

Change-Id: Ic5b6b5b7a2b8ea62372dcc9b9c36d81b9f2db651
InputMethodManager.aidl
04d50204705c9da52b218f11972da4e7d7a9cb84 25-Oct-2010 satok <satok@google.com> Show Subtype Icon properly in the system status bar

- Added API for getting the current subtype
- Added functions for show/hide status icon

Change-Id: Ifcaad00f7f4c658cdb3af367387476bbf316eb19
InputMethodManager.aidl
86417ea3f8041481a085823a1aa9f66d747231e8 27-Oct-2010 satok <satok@google.com> Remove InputMethodAndSubtypeEnabler and call intent of Settings.ACTION_INPUT_METHOD_AND_SUBTYPE_ENABLER

Change-Id: I467cfba9644ec266f6a98f7aec0886ad205fef4f
nputMethodAndSubtypeEnabler.java
85446e95afa480cee2247bb96795fccc8cf812af 23-Oct-2010 Adam Powell <adamp@google.com> Fix bug 3105695 - Action modes in dialogs or other small windows

Overlay action modes now show in their own windows aligned to the top
of the screen.

Change-Id: I81600bbd1bcaeb59fdcf0a959bd35f82165baa2c
tandaloneActionMode.java
d8404b23739b135060ab9a04317a9f8b990cf8ca 13-Oct-2010 Adam Powell <adamp@google.com> Allow icon+text action buttons

Change-Id: I96d1f3958de3ac13cadbab108b87d6bae96e9473
enu/ActionMenuItemView.java
enu/MenuItemImpl.java
f16888f1e849b0bc0b9c17e5f833c4e2cd54c382 12-Oct-2010 Adam Powell <adamp@google.com> Holo fixes

* Fix up ButtonGroup to behave better.
* Fix bad states with holo list selectors.
* Clean up action mode UI components.
* Change action mode UI to use a text button instead of 'X' to dismiss.
* Fixed spinner dropdowns for Holo.Light

Change-Id: Ifc092bd549ffb539d6a3b2ddd95ebd4b114a441f
enu/ActionMenuView.java
be4d68e7b238b8ee879de0481e39c40d3f1683b6 09-Oct-2010 Adam Powell <adamp@google.com> Updated styles and metrics.

* Added preliminary ButtonGroup support for buttons that display as a unit.
* Fixed a bug with MenuBuilder that caused old-style icon menus to fail.
* Added support for explicitly setting line height in text.

Change-Id: I1ba65f09dd9e1bc833d247ebe72052a21e3f99f0
enu/ActionMenuItemView.java
enu/ActionMenuView.java
enu/MenuBuilder.java
2fbf4de64f0ec5052201cea9519c44d5b1789a40 01-Oct-2010 Adam Powell <adamp@google.com> Holo theme progress and assets!

* Light and dark dialogs
* Checkboxes and radio buttons
* Toggle buttons

Warning! This is still a work in progress. This does not include final metrics.
Some assets (specifically dialogs) are currently misaligned.
enu/MenuBuilder.java
47a44916e2fb33cf4751906386d5f5c903b28d8b 06-Oct-2010 satok <satok@google.com> Add InputMethodEnabler for enabling input methods and subtypes

- Copyed functionarity from LanguageSettings.java

TODO: Save enabled InputMethodSubtypes

Change-Id: I7b4fb1a79cb8b3229f88773d261430e23ba7aae2
InputMethodManager.aidl
nputMethodAndSubtypeEnabler.java
a53146c5569f8ff5f7eb55e9ad35d23ddacf2add 07-Sep-2010 Christopher Tate <ctate@google.com> Drag/drop APIs and infrastructure

A View initiates a drag-and-drop operation (hereafter just called a "drag")
by calling its startDrag(ClipData) method. Within the processing of that
call, two callbacks are made into the originating View. The first is to
onMeasureDragThumbnail(). Similarly to the core onMeasure() method, this
callback must respond by calling setDragThumbnailDimension(width, height) to
declare the size of the drag thumbnail image that should be used. Following
this, the View's onDrawDragThumbnail(canvas) method will be invoked to
actually produce the bits of the thumbnail image.

If all goes well, startDrag() will return 'true', and the drag is off and
running. (The other arguments to startDrag() provide reconciliation between
the current finger position and where the thumbnail should be placed on
the screen relative to it.)

Potential receipients of the ClipData behind the drag are notified by a
new dispatch mechanism, roughly parallel to motion event dispatch. The core
routine is the View's onDragEvent(event) callback, with the mechanics of
dispatch itself being routed through dispatchDragEvent(event) -- as in
the case of motion events, the dispatch logic is in ViewGroup, with leaf
View objects not needing to consider the dispatch flow.

Several different event 'actions' are delivered through this dispatch
mechanism:

ACTION_DRAG_STARTED: this event is propagated to every View in every window
(including windows created during the course of a drag). It serves as a
global notification that a drag has started with a payload whose matching
ClipDescription is supplied with the event. A View that is prepared to
consume the data described in this event should return 'true' from their
onDragEvent() method, and ideally will also make some visible on-screen
indication that they are a potential target of the drop.

ACTION_DRAG_ENTERED: this event is sent once when the drag point
enters the View's bounds. It is an opportunity for the View to set up
feedback that they are the one who will see the drop if the finger goes
up now.

ACTION_DRAG_LOCATION: when the drag point is over a given View, that
View will receive a stream of DRAG_LOCATION events, providing an
opportunity for the View to show visual feedback tied to the drag point.

ACTION_DRAG_EXITED: like DRAG_ENTERED, but called when the drag point
leaves the View's bounds. The View should undo any visuals meant to
emphasize their being the hovered-over target.

ACTION_DROP: when the drag ends at a given point, the View under that
point is sent this event, with the full ClipData of the payload.

ACTION_DRAG_ENDED: paralleling the DRAG_STARTED action, this is the global
broadcast that the drag has ended and all Views should return to their
normal visual state. This happens after the DROP event.

Change-Id: Ia8d0fb1516bce8c735d87ffd101af0976d7e84b6
aseIWindow.java
e4679f1ed2ef044468d4a37f6e220c414620685a 28-Sep-2010 Adam Powell <adamp@google.com> Temporary hack to make context menu text visible on holo dialogs.

Real fix for this to come. MenuBuilder needs to not hardcode themes
and dialogs shouldn't either.

Change-Id: I393969acd1ef6956d7299cb2eff46708ce812d1d
enu/MenuBuilder.java
ab751aa085433e9f735d2e7603459c6c7e9d2fb0 14-Sep-2010 satok <satok@google.com> Add methods for managing subtypes

- added showInputMethodSubtypePicker to public API
-- show the selector dialog for subtypes
- added getter, setter and event handler to InputMethodManagerService
- extract InputMethodSubtype to the top level class for using it in aidl
- TODO: make an enabler for input method subtypes
- TODO: handle the event of changing an input method subtype in LatinIME

Change-Id: I49f8c6675ac4b06511635d14a37bd398738eff33
InputMethod.aidl
InputMethodManager.aidl
0b2d306e7000f4c0c6ad4e00d494bb401d8a9fc2 15-Sep-2010 Adam Powell <adamp@google.com> Style new popup widgets.

Change-Id: I208ed292afd9919071778baa9ea61d7ca9e7743c
enu/MenuBuilder.java
enu/MenuPopupHelper.java
cf78b3e5101349fdddbde14b3a55140f9562ae66 13-Sep-2010 Adam Powell <adamp@google.com> Add support for custom action views in ActionBar menus

Change-Id: Ic7850bc00fcfe95d805dd6a1b15cb5d413942475
enu/ActionMenuItem.java
enu/ActionMenuView.java
enu/MenuItemImpl.java
b3f245c30c022de8a26e016b7c9d5f13747b2868 11-Sep-2010 Adam Powell <adamp@google.com> Allow the theme to affect action bar menus

Change-Id: Ie914881de626415886289e830fb1ff166ce13159
enu/MenuBuilder.java
079fd1c0a329b0fbd3761abe2e900a941131efed 09-Sep-2010 Adam Powell <adamp@google.com> Make action buttons more style-based

Change-Id: Ia7ef4da8d8004f1b3809b4883aafc541695d235a
enu/ActionMenuView.java
62ecf53538ce46662a71f3026cf3aa5b5224cd6a 09-Sep-2010 Mathias Agopian <mathias@google.com> am 3fa7d8af: am 9bfb060a: Merge "Force wallpaper surface to 565." into gingerbread

Merge commit '3fa7d8af6560de07ef673f73308f7e51de64e4ec'

* commit '3fa7d8af6560de07ef673f73308f7e51de64e4ec':
Force wallpaper surface to 565.
62bf4a0283e855e2fb5f40f36909501e5b4a09eb 09-Sep-2010 Mathias Agopian <mathias@google.com> Force wallpaper surface to 565.

This is to maintain backward compatibility with badly programmed
GL wallpapers. Wallpapers can call SurfaceHolder.setFormat() to
request a different format.

Change-Id: Ib42b0cf6c7040d1300cad239c3acfd5c4c6cd326
aseSurfaceHolder.java
00df32d4396a65752b7b9a2f8ceb6292ed2384cf 02-Sep-2010 Adam Powell <adamp@google.com> Handle disabled state for action menu items

Change-Id: Id80926aef5f8f2f47703a7b1e3da38e6117edb30
enu/ActionMenuItemView.java
f956fd6d1325fcb2e5ce9b8dac95a9a40824ead8 27-Aug-2010 Amith Yamasani <yamasani@google.com> am 4b4114d1: am a90b7f01: Add methods to InputConnection: setComposingRegion() to select a region of text for correction, and getSelectedText() to return the selected text.

Merge commit '4b4114d155b4f3d5cc4179934cb6403b1776261d'

* commit '4b4114d155b4f3d5cc4179934cb6403b1776261d':
Add methods to InputConnection: setComposingRegion() to select a region of text for correction, and getSelectedText()
a90b7f0125389b9e1040d2be82aad4ef74ea6071 26-Aug-2010 Amith Yamasani <yamasani@google.com> Add methods to InputConnection: setComposingRegion() to select a region of text for correction, and getSelectedText()
to return the selected text.

setComposingRegion:

The TextView may choose to highlight the text in some way (underline for now) to indicate
that the text is selected for correction, if the IME wants to provider alternatives.

Choosing an alternative in the IME can then call IC.commitText() to replace the highlighted
(not selected) text with a different candidate.

This change also ensures that any existing spans/styles are not wiped out. So we can now
correct rich text as well.

getSelectedText:

This is a convenience to get the selected text instead of using extracted text that is
more heavy weight. Existing getTextBeforeCursor() and getTextAfterCursor() fail to
retrieve the selected text, only what's before and after the selection.

Change-Id: Ieb5ecd5ff947ea04958589f501e7bd5228e00fb5
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
nputConnectionWrapper.java
6c6f575423d6718c3ff322224c1520901ce881e1 21-Aug-2010 Adam Powell <adamp@google.com> More ActionBar/config change tweaks. Preserve open overflow menus

Change-Id: Ic8ad2b1e3909fbf84ff4d852ae046a9f9508477c
enu/ActionMenuView.java
enu/MenuPopupHelper.java
773b1b97fc0f01efc8cf1e17a1250a9b654b1b85 21-Aug-2010 Adam Powell <adamp@google.com> Make ActionBar menus handle configuration changes gracefully.

Change-Id: I2c9ca846143b313ef9d2a01dff81385e0693518d
enu/ActionMenuView.java
4d9861e7ec8488634d316b20981464de2ab7b6fe 17-Aug-2010 Adam Powell <adamp@google.com> Bug 2923440 - ActionMode buttons show if room by default - different approach.

This enforces the new policy if menu items are created
programmatically instead of inflated from menu xml.

This reverts commit fbb72fdbe58142e0f1f7ffa17f009b0d829b33c3.

Change-Id: I102e93b80a3248634e98e0d7dc3321bf1d8b263b
tandaloneActionMode.java
enu/MenuBuilder.java
enu/MenuItemImpl.java
fbb72fdbe58142e0f1f7ffa17f009b0d829b33c3 17-Aug-2010 Adam Powell <adamp@google.com> Fix bug 2923440 - ActionMode buttons show as action by default

The MenuInflater returned by ActionModes will set the default
showAsAction value to "ifRoom" if not otherwise specified.

Change-Id: I86045dc4e877a97a3464a1a5f44d8d1e2120b086
tandaloneActionMode.java
f6148c53f93978af678cc0559a4417b608a33ae1 12-Aug-2010 Adam Powell <adamp@google.com> Fix bug 2911311 and bug 2911700

Integrate the action bar overflow menu better with the options menu lifecycle.

Change-Id: I1e3fdba04b01718c3ee3367f92e5dabe7bc84b5c
tandaloneActionMode.java
enu/ActionMenuView.java
3d3da27ab394108fd51771616cca3279baae99d1 12-Aug-2010 Adam Powell <adamp@google.com> Fix bug 2911529

Change-Id: I18d7f5d8a300bbc73ef721c5d4deb200d6a490b8
enu/MenuPopupHelper.java
6b336f835d637853800b94689375a03f337139a4 11-Aug-2010 Adam Powell <adamp@google.com> ActionBar overlay mode, height fetching, show/hide

Change-Id: Ie931ed26ec885d891d6733132b517a53d95f8491
enu/ActionMenuView.java
f75eeb28def26798682748aa5dedabebac86bb6a 11-Aug-2010 Adam Powell <adamp@google.com> Fix bug 2908822 - open/closePanel should do the right thing with ActionBars

Change-Id: Ic77f9dee864d17046f69c78a1e6d96a49b5c6180
enu/ActionMenuView.java
4be0d52125b88dc992a4c500edbe95bf55484e0b 04-Aug-2010 Adam Powell <adamp@google.com> Added android.widget.PopupMenu

Change-Id: Id507cf93ebd0484f141a0a44266b883c01aa10db
enu/MenuPopupHelper.java
1f9c7afc5a06576e327a4b1c12688202f53d9462 03-Aug-2010 Adam Powell <adamp@google.com> Add support for action buttons without an icon.

Change-Id: I026bb7463e7a73419dbaf79950d579ba05d04ea8
enu/ActionMenuItemView.java
a8a72c38fec3879f5d346840b0d186d5903931b8 01-Aug-2010 Jeff Sharkey <jsharkey@android.com> Populate accessibility field on ActionBar items.

When building an ActionMenuItemView, set the content description based
on the item title. Fixes http://b/2885106

Change-Id: I101bbc6db7080ce08eed1bbb401c45329da2ab53
enu/ActionMenuItemView.java
9168f0b170c6a99371ae46e7d3f5d66c8c4c930d 03-Aug-2010 Adam Powell <adamp@google.com> Add ActionMode#getMenuInflater() for easier menu inflation in
ActionMode.Callback implementations

Change-Id: If9e7ab0d65598bab537add6c6a452a55c093064f
tandaloneActionMode.java
c9ae2a24dc1fa274ca0916c91a2e9a2764ba4bb3 28-Jul-2010 Adam Powell <adamp@google.com> Add support for setting action mode titles/subtitles by resource ID

Change-Id: Ia0d5234cc16f325eeb29127fb87e2616d67379ec
tandaloneActionMode.java
5d27977f9da482627ceb19317a2cd70467aff046 28-Jul-2010 Adam Powell <adamp@google.com> Action modes without action bar

Change-Id: I0367ab35e598a17980bd373b30828175f6283acc
tandaloneActionMode.java
b366bbae2b5a3009893ef64246e3430cea4b7736 20-Jul-2010 Adam Powell <adamp@google.com> Make sure action bar context modes reserve space for overflow menus on all devices.

Change-Id: I393f041efef3852b7f3ee57c6a4c26ba176b2702
enu/ActionMenuView.java
8028dd32a4a04154050220dd0693583d5b750330 15-Jul-2010 Adam Powell <adamp@google.com> Overflow menu for action bars.

The overflow menu replaces the normal options menu panel for
activities with an action bar. It always appears as the rightmost
action button and is displayed as a dropdown menu. The menu key
summons and dismisses the overflow menu instead of the options panel
where applicable.

Change-Id: I0b4fa7e36f35ab12e2f0c1d12bec79ccab8cc4b1
enu/ActionMenuView.java
enu/IconMenuView.java
enu/MenuBuilder.java
enu/MenuPopupHelper.java
b75fa30aaf03d9e425d150b452501e5df0621351 16-Jul-2010 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of aca672ba to master

Change-Id: I7ae11fca0acdbf513a4870226d0d3e3cafbe9a08
c5ed5910c9ef066cec6a13bbb404ec57b1e92637 15-Jul-2010 Jeff Brown <jeffbrown@google.com> Add support for new input sources.

Added several new coordinate values to MotionEvents to capture
touch major/minor area, tool major/minor area and orientation.

Renamed NDK input constants per convention.

Added InputDevice class in Java which will eventually provide
useful information about available input devices.

Added APIs for manufacturing new MotionEvent objects with multiple
pointers and all necessary coordinate data.

Fixed a bug in the input dispatcher where it could get stuck with
a pointer down forever.

Fixed a bug in the WindowManager where the input window list could
end up containing stale removed windows.

Fixed a bug in the WindowManager where the input channel was being
removed only after the final animation transition had taken place
which caused spurious WINDOW DIED log messages to be printed.

Change-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68
aseInputHandler.java
2388ad9eef109fa7f63c196c819c83f0376f0645 14-Jul-2010 Dianne Hackborn <hackbod@google.com> am f8d9379b: am d76b67c3: IME events are now dispatched to native applications.

Merge commit 'f8d9379bd834573feca085284970cf686993c330'

* commit 'f8d9379bd834573feca085284970cf686993c330':
IME events are now dispatched to native applications.
d76b67c340d1564abf8d14d976fdaf83bf2b3320 14-Jul-2010 Dianne Hackborn <hackbod@google.com> IME events are now dispatched to native applications.

And also:

- APIs to show and hide the IME, and control its interaction with the app.
- APIs to tell the app when its window resizes and needs to be redrawn.
- API to tell the app the content rectangle of its window (to layout
around the IME or status bar).

There is still a problem with IME interaction -- we need a way for the
app to deliver events to the IME before it handles them, so that for
example the back key will close the IME instead of finishing the app.

Change-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd
ootViewSurfaceTaker.java
4267534d1c42af847ed0cefd1c88c99f66b36571 10-Jul-2010 Adam Powell <adamp@google.com> Action Bar now supports submenus as popups.

Change-Id: I1691c16081b3474ed6d6e406f91f5f74a2dc8fcb
enu/MenuBuilder.java
enu/MenuItemImpl.java
enu/MenuPopupHelper.java
1a33274d28a3174b9062ae0dcce77bf1d68cd463 09-Jul-2010 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of 167449e5 to master

Change-Id: Ib448e69a726eb45b5c9099d2574e40b8345eee67
00fa7bdd69f0868fd17ea7c881c771d785b2fbbd 03-Jul-2010 Jeff Brown <jeffbrown@google.com> More native input dispatch work.

Removed old input dispatch code.
Refactored the policy callbacks.
Pushed a tiny bit of the power manager state down to native.
Fixed long press on MENU.
Made the virtual key detection and cancelation a bit more precise.

Change-Id: I5d8c1062f7ea0ab3b54c6fadb058c4d5f5a9e02e
aseIWindow.java
89e0645b4157961e8c465eb9c819f965fdb453d8 24-Jun-2010 Adam Powell <adamp@google.com> Added context modes to ActionBar API.

Change-Id: I7c3e782cbf01be7bc671b377fb4d706040888833
enu/ActionMenuItem.java
enu/ActionMenuView.java
enu/MenuItemImpl.java
f92f8686f982c62a609a2087383a77a24d126992 23-Jun-2010 Dianne Hackborn <hackbod@google.com> am 98f7aed6: am 1e4b9f39: Remove InputConsumer, replacing with InputQueue.

Merge commit '98f7aed66b54c365f816fe990de978f61155cde1'

* commit '98f7aed66b54c365f816fe990de978f61155cde1':
Remove InputConsumer, replacing with InputQueue.
1e4b9f3936d6f357e89360293e05a0e16d5fa440 23-Jun-2010 Dianne Hackborn <hackbod@google.com> Remove InputConsumer, replacing with InputQueue.

Change-Id: Ib06907278457aaee842b123adc072840ca3602d8
ootViewSurfaceTaker.java
320742b15a710ede57862eee170945da26ef0172 23-Jun-2010 Dianne Hackborn <hackbod@google.com> am e3e2883f: am e24a60aa: Merge "First stab at attaching native event dispatching." into gingerbread

Merge commit 'e3e2883f2232007174ead562610eb01201890d9b'

* commit 'e3e2883f2232007174ead562610eb01201890d9b':
First stab at attaching native event dispatching.
a95e4cb62f3642cb190d032dbf7dc40d9ecc6973 19-Jun-2010 Dianne Hackborn <hackbod@google.com> First stab at attaching native event dispatching.

Provides the basic infrastructure for a
NativeActivity's native code to get an object representing
its event stream that can be used to read input events.

Still work to do, probably some API changes, and reasonable
default key handling (so that for example back will still
work).

Change-Id: I6db891bc35dc9683181d7708eaed552b955a077e
ootViewSurfaceTaker.java
7ade1be822ed05a143b059319dccd5e9f623b56d 17-Jun-2010 Adam Powell <adamp@google.com> Action bar button layout changes.

Theme attribute added for spacing between action buttons. Action
buttons are now allowed to fill up to half of the total action bar's
width.

Change-Id: Iabbc67e695684529dfae9681d4d9580cd30839d0
enu/ActionMenuView.java
96675b1df3969f2d313b68f60ed9fa36805db8ce 11-Jun-2010 Adam Powell <adamp@google.com> Merging ActionBar menu with options menu.

Options menu items may now specify if they would like to appear in the
action bar. Menu items defined in xml may set the showAsAction
attribute to one of "never"(default), "ifRoom", or "always". Action
buttons are populated as follows:

* All showAsAction="always" items become action buttons, even if it
would crowd the navigation area of the action bar.

* If there is space remaining, showAsAction="ifRoom" items are added
until no more will fit comfortably.

Action button click events are now handled by the
onOptionsItemSelected method used by the standard options menu.

The construction of options menus now happens earlier in order to
provide data to the action bar. Activities with an action bar can now
expect to have onCreateOptionsMenu called when activity start-up is
complete.

Activity#invalidateOptionsMenu can be used to force a refresh of menu
items where the previous API would use ActionBar#updateActionMenu.

Change-Id: If52ddf1cf9f6926206bcdeadf42072ea2c24fab9
enu/ActionMenuItemView.java
enu/ActionMenuView.java
enu/IconMenuView.java
enu/MenuBuilder.java
enu/MenuItemImpl.java
8e03b7566c42621fda01186b66b019142eb84fbf 14-Jun-2010 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of 9e660c82 to master

Change-Id: Ic4bd85cbaa5b9a10dcb474a0dad46490bf967e43
46b9ac0ae2162309774a7478cd9d4e578747bfc2 23-Apr-2010 Jeff Brown <jeffbrown@google.com> Native input dispatch rewrite work in progress.

The old dispatch mechanism has been left in place and continues to
be used by default for now. To enable native input dispatch,
edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.

Includes part of the new input event NDK API. Some details TBD.

To wire up input dispatch, as the ViewRoot adds a window to the
window session it receives an InputChannel object as an output
argument. The InputChannel encapsulates the file descriptors for a
shared memory region and two pipe end-points. The ViewRoot then
provides the InputChannel to the InputQueue. Behind the
scenes, InputQueue simply attaches handlers to the native PollLoop object
that underlies the MessageQueue. This way MessageQueue doesn't need
to know anything about input dispatch per-se, it just exposes (in native
code) a PollLoop that other components can use to monitor file descriptor
state changes.

There can be zero or more targets for any given input event. Each
input target is specified by its input channel and some parameters
including flags, an X/Y coordinate offset, and the dispatch timeout.
An input target can request either synchronous dispatch (for foreground apps)
or asynchronous dispatch (fire-and-forget for wallpapers and "outside"
targets). Currently, finding the appropriate input targets for an event
requires a call back into the WindowManagerServer from native code.
In the future this will be refactored to avoid most of these callbacks
except as required to handle pending focus transitions.

End-to-end event dispatch mostly works!

To do: event injection, rate limiting, ANRs, testing, optimization, etc.

Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25
aseInputHandler.java
9b081a809a7e39c6877a9606289ada4680f3d91f 19-May-2010 Dianne Hackborn <hackbod@google.com> resolved conflicts for merge of 8b625a95 to master

Change-Id: I03264c6aad2d87629f9154f5c390cb36ce08efba
dc8a7f69d7df5f1ca29763995a0d55acf7936fc6 10-May-2010 Dianne Hackborn <hackbod@google.com> Add new API to take over a window's Surface.

Change-Id: Iad6245faadc95f19ea63c8e229a1c02e9188f69e
aseSurfaceHolder.java
ootViewSurfaceTaker.java
33b974393b6fadcefc896ec4a0f9b66724f61e9f 20-Apr-2010 Adam Powell <adamp@google.com> ActionBar added to framework, integrated with Activity and styles.
Added onClick attribute support to menus in MenuInflater.

Change-Id: I739771b4f249d87a0d8b15969f3d526b099067a1
enu/ActionMenu.java
enu/ActionMenuItem.java
d135f74b972b88de2ae8b11b3ada886d29c1e25d 05-May-2010 Adam Powell <adamp@google.com> am 151af19b: Fix bug 2651076 - Catch/log ActivityNotFoundException in MenuItemImpl.invoke()

Merge commit '151af19bf409a47424ddaa51e1ac4a0c532c4eb6' into froyo-plus-aosp

* commit '151af19bf409a47424ddaa51e1ac4a0c532c4eb6':
Fix bug 2651076 - Catch/log ActivityNotFoundException in MenuItemImpl.invoke()
151af19bf409a47424ddaa51e1ac4a0c532c4eb6 04-May-2010 Adam Powell <adamp@google.com> Fix bug 2651076 - Catch/log ActivityNotFoundException in MenuItemImpl.invoke()

Change-Id: I841a37349fbc6af33073aaecae903eb8999cc5bd
enu/MenuItemImpl.java
128f1a87c55a291109ce521a92308c186e5d2db5 03-Apr-2010 Adam Powell <adamp@google.com> am 6024ca5c: Fix bug 2185026 - back button in context menu now calls onContextMenuClosed()

Merge commit '6024ca5c90203b6c33acc6adfbf7e4e613549a0a' into froyo-plus-aosp

* commit '6024ca5c90203b6c33acc6adfbf7e4e613549a0a':
Fix bug 2185026 - back button in context menu now calls onContextMenuClosed()
6024ca5c90203b6c33acc6adfbf7e4e613549a0a 03-Apr-2010 Adam Powell <adamp@google.com> Fix bug 2185026 - back button in context menu now calls onContextMenuClosed()

Change-Id: I6c16879a8ad8e4651d21f639a620a936bf991f8d
enu/MenuDialogHelper.java
c89704a77f9c51ebd8c1cc6863e15ff402a56c86 29-Mar-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master

Change-Id: I6a8109d11dabc579501c598ab2927cf802797130
22cb2f46fdbb9a904ac394f488278fb47e2d4734 16-Mar-2010 Adam Powell <adamp@google.com> Fix monkey bug 2512055

Don't blow up when there aren't any menu items to layout in IconMenuView.

Change-Id: Ief08f0f8ed89aec4959d4d80cfd066dbe92dc3aa
enu/IconMenuView.java
15a4d2ffd04dc6c70f2cd17dae12ac6bc14c69ab 12-Mar-2010 Kenny Root <kroot@google.com> Add correct copyright headers to multiple files

Format for the list of changes shows the origin commit reference followed
by the file name.

33931-p9 awt/org/apache/harmony/awt/gl/font/AndroidGlyphVector.java
33931-p9 awt/org/apache/harmony/awt/gl/image/PngDecoderJava.java
133776-p9 core/java/android/app/IntentService.java
127013-p9 core/java/android/appwidget/AppWidgetHost.java
27863-p9 core/java/android/bluetooth/BluetoothAudioGateway.java
60765-p9 core/java/android/content/SyncResult.java
43920-p9 core/java/android/content/pm/ActivityInfo.java
43920-p9 core/java/android/content/pm/ApplicationInfo.java
43920-p9 core/java/android/content/pm/InstrumentationInfo.java
43920-p9 core/java/android/content/pm/PackageInfo.java
44103-p9 core/java/android/content/pm/PackageItemInfo.java
68960-p9 core/java/android/content/pm/PackageStats.java
43920-p9 core/java/android/content/pm/ResolveInfo.java
43920-p9 core/java/android/content/pm/ServiceInfo.java
60641-p9 core/java/android/content/res/Configuration.java
60734-p9 core/java/android/content/res/TypedArray.java
137672-p9 core/java/android/inputmethodservice/ExtractButton.java
123112-p9 core/java/android/inputmethodservice/ExtractEditText.java
119291-p9 core/java/android/inputmethodservice/IInputMethodSessionWrapper.java
112946-p9 core/java/android/inputmethodservice/IInputMethodWrapper.java
115078-p9 core/java/android/os/BatteryStats.java
124790-p9 core/java/android/text/style/UpdateAppearance.java
45083-p9 core/java/android/view/RawInputEvent.java
101491-p9 core/java/android/view/inputmethod/EditorInfo.java
114701-p9 core/java/android/view/inputmethod/ExtractedText.java
123112-p9 core/java/android/view/inputmethod/ExtractedTextRequest.java
119291-p9 core/java/com/android/internal/os/HandlerCaller.java
129279-p9 core/java/com/android/internal/os/PkgUsageStats.java
114701-p9 core/java/com/android/internal/view/IInputConnectionWrapper.java
114701-p9 core/java/com/android/internal/view/InputConnectionWrapper.java
84364-p9 opengl/java/android/opengl/EGLLogWrapper.java
11355-p9 opengl/tools/glgen/src/CFunc.java
11355-p9 opengl/tools/glgen/src/CType.java
11355-p9 opengl/tools/glgen/src/CodeEmitter.java
11355-p9 opengl/tools/glgen/src/GenerateGL.java
11355-p9 opengl/tools/glgen/src/JFunc.java
11355-p9 opengl/tools/glgen/src/JType.java
11355-p9 opengl/tools/glgen/src/JniCodeEmitter.java
11355-p9 opengl/tools/glgen/src/ParameterChecker.java
57236-p9 services/java/com/android/server/status/AnimatedImageView.java
66754-p9 services/java/com/android/server/status/CloseDragHandle.java
57188-p9 services/java/com/android/server/status/DateView.java
46928-p9 services/java/com/android/server/status/ExpandedView.java
70590-p9 services/java/com/android/server/status/FixedSizeDrawable.java
45968-p9 services/java/com/android/server/status/IconData.java
57470-p9 services/java/com/android/server/status/IconMerger.java
82719-p9 services/java/com/android/server/status/LatestItemView.java
45968-p9 services/java/com/android/server/status/NotificationData.java
66754-p9 services/java/com/android/server/status/NotificationLinearLayout.java
57458-p9 services/java/com/android/server/status/NotificationViewList.java
45968-p9 services/java/com/android/server/status/StatusBarException.java
45968-p9 services/java/com/android/server/status/StatusBarIcon.java
46130-p9 services/java/com/android/server/status/StatusBarNotification.java
45968-p9 services/java/com/android/server/status/StatusBarView.java
46199-p9 services/java/com/android/server/status/Ticker.java
62286-p9 services/java/com/android/server/status/TickerView.java
57188-p9 services/java/com/android/server/status/TrackingView.java
86041-p9 telephony/java/android/telephony/PhoneStateListener.java
87020-p9 telephony/java/com/android/internal/telephony/TelephonyIntents.java
136269-p9 telephony/java/com/android/internal/telephony/gsm/SpnOverride.java
34409-p9 tests/FrameworkTest/src/com/android/frameworktest/FrameworkTestApplication.java
55717-p9 tests/FrameworkTest/src/com/android/frameworktest/performance/InvalidateCycle.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollableResize.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollablePanScan.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollableResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java
127341-p9 tests/ImfTest/src/com/android/imftest/samples/ButtonActivity.java
129347-p9 tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java
129372-p9 tests/ImfTest/src/com/android/imftest/samples/EditTextActivityDialog.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java
128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java
25959-p9 tests/framework-tests/src/android/test/FrameworkTests.java
46162-p9 tests/framework-tests/src/com/android/internal/http/multipart/MultipartTest.java
77101-p9 tools/layoutlib/bridge/tests/com/android/layoutlib/bridge/NinePatchTest.java
9788976b1465ce982b5ae7c741345edd0ecd9322 core/java/android/accounts/AuthenticatorDescription.java
53332883543868fb83e111a07306368b7772b340 core/java/android/app/UiModeManager.java
93e7e22ec91dbc641d10ca6d70423e1357a95bba core/java/android/app/FullBackupAgent.java
328c0e7986aa6bb7752ec6de3da9c999920bb55f core/java/android/content/CursorEntityIterator.java
307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncQueue.java
307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncOperation.java
eb034652c2037a47ebfd99779e8383bb8bb528af core/java/android/content/pm/LabeledIntent.java
49237345d83e62fdb9eb8d50b13ad086636a04fa core/java/android/content/pm/FeatureInfo.java
a2b6c3775ed6b8924232d6a01bae4a19740a15f8 core/java/android/content/pm/PackageInfoLite.java
3ecd5f437580e49d80beecd29489d5fb1f7a7db0 core/java/android/content/pm/RegisteredServicesCacheListener.java
5ebbb4a6b3e16f711735ae0615b9a9ea64faad38 core/java/android/content/pm/XmlSerializerAndParser.java
c4516a7b62de525e3d6d5e76851bdfaf12c11f05 core/java/android/database/sqlite/SQLiteTransactionListener.java
9bbc21a773cbdfbef2876a75c32bda5839647751 core/java/com/android/internal/backup/LocalTransport.java
21f1bd17b2dfe361acbb28453b3f3b1a110932fa core/java/com/android/internal/content/PackageMonitor.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseSurfaceHolder.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseIWindow.java
e540833fdff4d58e37c9ba859388e24e2945ed45 core/java/com/android/internal/os/SamplingProfilerIntegration.java
192ab903887bbb8e7c7b6da5c581573850e30f46 core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java
1619367ab823150fa8856d419abe02ceb75886f1 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java
27f8002e591b5c579f75b2580183b5d1c4219cd4 opengl/tools/glgen/stubs/gles11/glGetString.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glShaderSource.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GenerateGLES.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/Jsr239CodeEmitter.java
1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GLESCodeEmitter.java
69e21f5f6e0d04539cd92848ea009dd615d88c2c opengl/tests/gldual/src/com/android/gldual/TriangleRenderer.java
c028be4f3b8c7476b46859f66c3f33d528adf181 packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerMeasurement.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestActivity.java
7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestRunner.java
df8a3f31d871db25e952972c2eb346a71186e9e3 tests/BrowserTestPlugin/src/com/android/testplugin/TestPlugin.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java
cfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java

Copyright header moved to top in following file:

core/tests/coretests/src/android/widget/ListViewTest.java

Change-Id: I3c3198be5a0ba36e18679ed834170432bf0b8418
aseIWindow.java
aseSurfaceHolder.java
InputConnectionWrapper.java
nputConnectionWrapper.java
c9b21c1a5358446fe1ba28fdf06fe6f9fbdd091e 12-Mar-2010 Kenny Root <kroot@google.com> Add copyright header for new file

Change-Id: I441c4e002eb8729e7e0ae7a2ab6a38d5dffa0049
indowManagerPolicyThread.java
ac3587d7ced544091264a35249dbd3f9531a3cab 11-Mar-2010 Dianne Hackborn <hackbod@google.com> Fix issue #2461567: Home screen redraw messed up

Make sure that we have a window redraw itself after resizing its
surface.

Also includes a little optimization to avoid having an extra thread
for the ImageWallpaper.

Change-Id: I88d1eb66e3116077f48e6f9086a5b6459505ef69
indowManagerPolicyThread.java
0c33ed2992b2eb484c229fd3322df14d97c10caa 23-Feb-2010 Devin Taylor <devin.taylor@garmin.com> Fix Memory Leak When Switching Input Methods

Fixes a memory leak when input methods are switched. Uses a variety of methods
to avoid holding a reference to the InputMethodService which created the binders,
which was leaking those InputMethodServices.

See http://code.google.com/p/android/issues/detail?id=6661 for reproduction steps.
InputMethodSession.aidl
e36d6e277e49475076b7872d36ea6a5c5b996e9d 18-Feb-2010 Dianne Hackborn <hackbod@google.com> Work on issue #2263557: PMF3000 showing hybrid of portrait and landscape modes

This is a bunch of reworking of how configuration changes are handled:

- When orientation is changing (for whatever reason), the window manager no
longer tries to pre-emptively compute a new configuration. Instead, it
just determines change is happening and tells the window manager.
- The activity manager is now responsible for giving the window manager the
final configuration it is using. This is both so it knows whem the
activity manager is done with its configuration updates, and so the window
manager can use the "real" configuration.
- When an orientation or other configuration change is happening, freeze the
screen and keep it frozen until the activity manager has given us the
final configuration.
- The window manager can now send new configurations to its clients during
its layout pass, as part of a resize, if it has determined that it has
changed. This allows for a new View.onConfigurationChanged() API for any
view to easily find out when the configuration has changed.
- ViewRoot now also works with the activity thread to make sure the process's
current resources are updated to the new configuration when it receives one
from a window. This ensures that at the time onConfigurationChanged() and
other view callbacks are happening, the correct configuration is in force.
- There is now a sequence number associated with Configuration, which
ActivityThread uses to avoid using stale configurations. This is needed now
that it can receive configurations asynchronously from both the window
manager and activity manager.
- The hack for keeping the locale has been removed, and underlying problem
fixed by having Configuration initialize its locale to "unknown" instead of
a valid default value.
aseIWindow.java
980a938c1c9a6a5791a8240e5a1e6638ab28dc77 09-Jan-2010 Romain Guy <romainguy@android.com> Deprecate fill_parent and introduce match_parent.
Bug: #2361749.
enu/IconMenuItemView.java
9db3d07b9620b4269ab33f78604a36327e536ce1 13-Nov-2009 Jean-Baptiste Queru <jbq@google.com> eclair snapshot
aseIWindow.java
aseSurfaceHolder.java
enu/IconMenuView.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
bf6956b1d95442e9d9c483894d578fe6b7044cbb 10-Nov-2009 Marco Nelissen <marcone@google.com> Add a way for wallpapers to know the delta between virtual screens.
aseIWindow.java
7580493b014a2c7ea883cd291255798dc72ebbff 21-Oct-2009 Dianne Hackborn <hackbod@google.com> Implement feature #2117336: Create event communication APIs for live wallpaper

Note: currently only implements an async version (no result), and not yet
actually tested.

Change-Id: Id47ed045a4b0eb309ea8c58daf41a0e03eff1d3a
aseIWindow.java
e0fc838ebc18e327a399902cacae16bdbbc09627 24-Sep-2009 Nicolas Roard <nicolas@android.com> Fix the shortcuts
enu/MenuBuilder.java
ffa424800d0338b8b894aef2ea1e3e3344cbda7a 24-Sep-2009 Dianne Hackborn <hackbod@google.com> Fix issue #2133206: dialogs/menus should auto-dismiss when screen turns off

Lot of infrastructure for more things to go away when "clear system dialogs"
happens, and now do this when we turn on the lock screen.

Change-Id: I567130296fe47ce82df065ed58ef21b37416ceaf
aseIWindow.java
8d37426c754e9822feaa8c6cc0b7c13e8523e217 15-Sep-2009 Dianne Hackborn <hackbod@google.com> Various fixed for back key handling.

My last change was far from perfect. Hopefully this gets us
a little closer.

Change-Id: I413e55b6af42400b565de3040859d25d668bc9d2
enu/MenuDialogHelper.java
c2974809373697147cbe5754835cc871fb93aef1 14-Sep-2009 Dianne Hackborn <hackbod@google.com> Fix issue #2116977: buttons are huge and bent

Now that we are using preloaded drawables in compatibilty mode, when
constructing them from their constant state we need to set the new
drawable's target density appropriately.

Change-Id: I3665cbea09d38b9ac5f45f8c380dc8641f86b266
enu/IconMenuView.java
19382ac1a4e4e7c23a1346d299368763f149de9c 12-Sep-2009 Dianne Hackborn <hackbod@google.com> Some optizations to wallpaper drawing/scrolling.

First, fix some issues with the final wallpaper bitmap
we use: ensure it is always 16bpp, and make sure dithering
of its bitmap is turned off. We take of dithering
when loading, to make sure we don't use it when drawing.

Also add new APIs to return the wallpaper with the equivalent
of Launcher's old FastBitmapDrawable. As doing this, also load
the default wallpaper the same way as custom ones, taking care to
resize it as needed at load time.

Finally implement a mechanism for the window manager to wait
for the wallpaper to redraw at its new position before returning
from the application's call to change the offset. This ensures
that the wallpaper better tracks the application. Note that there
is a timeout in this wait that is relatively short, and if it
expires we will run for a while without waiting.

Change-Id: Ife449437746da85958bd447e0a6cf3d2223b398c
aseIWindow.java
8df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bd 18-Aug-2009 Dianne Hackborn <hackbod@google.com> Allow wallpapers to get touch events.
aseIWindow.java
317a6280cc109e873646e4652be1582d870eedfd 14-Aug-2009 Mathias Agopian <mathias@google.com> Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.

this also ripples into the window manager API by making some constant there deprecated as well.
aseSurfaceHolder.java
72c82ab9923025a91bbabb32e56bfea27bfd083b 12-Aug-2009 Dianne Hackborn <hackbod@google.com> Report wallpaper offset to the wallpaper, use this in the image wallpaper.

Wallpapers can now be just the size of the screen, and get told when their
scroll position should change to do the updating on their own.
aseIWindow.java
4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 09-Aug-2009 Dianne Hackborn <hackbod@google.com> Very primitive wallpapers in a surface.

This is all of the basic pieces:

- The WallpaperService now creates a surface with the window manager for its
contents.
- There is a simple service that displays a bitmap.
- The wallpaper manager takes care of starting and stopping the service.
- The window manager knows about wallpaper windows and how to layer them with
the windows that want to be shown on top of wallpaper.

Lots and lots of issues remain, but at this point you can actually write a
wallpaper service, select it in the UI, and see it behind an activity.
aseIWindow.java
aseSurfaceHolder.java
843ef36f7b96cc19ea7d2996b7c8661b41ec3452 20-May-2009 Jean-Baptiste Queru <jbq@google.com> donut snapshot
enu/IconMenuView.java
809a7f6080312f3e12f1a3a30eacf0e0c7627305 15-May-2009 Romain Guy <romainguy@android.com> New feature to track down #1846038. Adds the ability to export flags encoded in int values so as to make them human readable in HierarchyViewer.
enu/IconMenuView.java
870a2b015645ef5086af6a5de31dc482e7193214 25-Mar-2009 Romain Guy <> Automated import from //branches/donutburger/...@142470,142470
enu/MenuDialogHelper.java
edbabeb7fabfb3c7793b565cdaaf656e5e332efe 25-Mar-2009 Romain Guy <> Automated import from //branches/cupcake/...@142469,142469
enu/MenuDialogHelper.java
105925376f8d0f6b318c9938c7b83ef7fef094da 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
enu/IconMenuItemView.java
enu/IconMenuView.java
b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54 09-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137197
InputMethodManager.aidl
4df2423a947bcd3f024cc3d3a1a315a8dc428598 05-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@136594
InputMethod.aidl
InputMethodManager.aidl
InputMethodSession.aidl
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
InputConnectionCallback.aidl
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
InputMethod.aidl
InputMethodCallback.aidl
InputMethodClient.aidl
InputMethodManager.aidl
InputMethodSession.aidl
nputBindResult.aidl
nputBindResult.java
nputConnectionWrapper.java
enu/ContextMenuBuilder.java
enu/ExpandedMenuView.java
enu/IconMenuItemView.java
enu/IconMenuView.java
enu/ListMenuItemView.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuItemImpl.java
enu/MenuView.java
enu/SubMenuBuilder.java
ackage.html
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
InputConnectionCallback.aidl
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
InputMethod.aidl
InputMethodCallback.aidl
InputMethodClient.aidl
InputMethodManager.aidl
InputMethodSession.aidl
nputBindResult.aidl
nputBindResult.java
nputConnectionWrapper.java
enu/ContextMenuBuilder.java
enu/ExpandedMenuView.java
enu/IconMenuItemView.java
enu/IconMenuView.java
enu/ListMenuItemView.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuItemImpl.java
enu/MenuView.java
enu/SubMenuBuilder.java
ackage.html
076357b8567458d4b6dfdcf839ef751634cd2bfb 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
enu/ExpandedMenuView.java
3dec7d563a2f3e1eb967ce2054a00b6620e3558c 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
enu/ExpandedMenuView.java
3001a035439d8134a7d70d796376d1dfbff3cdcd 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
InputConnectionWrapper.java
da996f390e17e16f2dfa60e972e7ebc4f868f37e 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
InputConnectionWrapper.java
InputContext.aidl
InputMethodManager.aidl
nputConnectionWrapper.java
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
InputConnectionWrapper.java
InputContext.aidl
InputMethod.aidl
InputMethodManager.aidl
nputConnectionWrapper.java
enu/IconMenuItemView.java
enu/ListMenuItemView.java
f1e484acb594a726fb57ad0ae4cfe902c7f35858 22-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127436
InputConnectionWrapper.java
InputContext.aidl
nputConnectionWrapper.java
22f7dfd23490a3de2f21ff96949ba47003aac8f8 20-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127101
enu/IconMenuItemView.java
enu/ListMenuItemView.java
enu/MenuBuilder.java
9266c558bf1d21ff647525ff99f7dadbca417309 16-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@126645
InputMethod.aidl
InputMethodManager.aidl
b798689749c64baba81f02e10cf2157c747d6b46 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
InputConnectionWrapper.java
InputContext.aidl
InputMethodManager.aidl
InputMethodSession.aidl
nputConnectionWrapper.java
enu/MenuItemImpl.java
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
InputConnectionCallback.aidl
InputConnectionWrapper.java
InputContext.aidl
InputContextCallback.aidl
InputMethod.aidl
InputMethodCallback.aidl
InputMethodClient.aidl
InputMethodManager.aidl
InputMethodSession.aidl
nputBindResult.aidl
nputBindResult.java
nputConnectionWrapper.java
enu/IconMenuItemView.java
enu/IconMenuView.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuItemImpl.java
ackage.html
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
enu/ContextMenuBuilder.java
enu/ExpandedMenuView.java
enu/IconMenuItemView.java
enu/IconMenuView.java
enu/ListMenuItemView.java
enu/MenuBuilder.java
enu/MenuDialogHelper.java
enu/MenuItemImpl.java
enu/MenuView.java
enu/SubMenuBuilder.java