Commit Graph

7456 Commits

Author SHA1 Message Date
Winson Chung
4de191dc1b Merge "Adding PipManager dumps." 2017-02-13 20:40:35 +00:00
Winson Chung
12cb6628db Merge "Create a new stack for the assistant activity." 2017-02-13 20:39:52 +00:00
Selim Cinek
2698d1d1e8 Merge changes Ie3736d80,I52444f4e
* changes:
  Improved collapsed messaging notifications
  Fixed a bug where the heads-up couldn't time out
2017-02-13 20:37:48 +00:00
Winson Chung
29a786590f Adding PipManager dumps.
Test: adb shell dumpsys activity service com.android.systemui
Change-Id: Id647833f1b4dcb6226517c058d17d1812f022671
2017-02-13 10:23:04 -08:00
Shreyas Basarge
69f42ecbb6 Merge "BackupAgent#getBackupQuota() API" 2017-02-13 13:46:00 +00:00
TreeHugger Robot
0bb700914c Merge "Rely on com.android.internal.os.SomeArgs" 2017-02-13 09:32:34 +00:00
Yohei Yukawa
ce82eb2d86 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
2017-02-12 23:16:47 -08:00
TreeHugger Robot
d2c4784359 Merge "Hide logspam due to redundant finishComposingText" 2017-02-13 06:49:52 +00:00
Yohei Yukawa
77e51831a4 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
      aaa38c9f1a

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
2017-02-12 20:08:13 -08:00
TreeHugger Robot
639c371e96 Merge "Introduce @SoftInputModeFlags annotation" 2017-02-13 03:36:07 +00:00
TreeHugger Robot
618b7a9aec Merge "Track the last softInputMode in IMMS" 2017-02-13 03:31:45 +00:00
TreeHugger Robot
06c84f95f0 Merge "Merge restartInput into startInput in internal IPC" 2017-02-13 03:28:57 +00:00
Yohei Yukawa
22dac1c8df 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
2017-02-12 16:54:16 -08:00
Yohei Yukawa
22a8923368 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
2017-02-12 16:38:59 -08:00
TreeHugger Robot
9b66112906 Merge "Add tweaks to smooth out swipe to dismiss." 2017-02-12 23:57:29 +00:00
Winson Chung
8347163dbb Create a new stack for the assistant activity.
- Add a new stack that is not resized with multiwindow, and
  appears above the fullscreen and docked stacks, but below
  the pinned stack
- Add a method on VoiceInteractionSession to allow the assistant
  to launch activities into this new fullscreen stack.
- Also prevent any activities in the assist stack from the
  fetching of the on screen assist data.

Bug: 30999386
Test: android.server.cts.ActivityManagerAssistantStackTests

Change-Id: I22ab7629b5f758cf1e66d7d1c26648af6bc887c9
2017-02-12 14:52:15 -08:00
Michael Kwan
2e11adaac3 Add tweaks to smooth out swipe to dismiss.
Bug: 34673753
Change-Id: I5a9d420c70d124fc764803d505291e66818b1aa2
2017-02-12 13:43:45 -08:00
Yohei Yukawa
f7526b5896 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
      1a5838e966

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
2017-02-11 20:57:10 -08:00
TreeHugger Robot
9a49f85ae4 Merge "Revert "Merge restartInput into startInput in internal IPC"" 2017-02-12 02:08:10 +00:00
Yohei Yukawa
3eaf867487 Revert "Merge restartInput into startInput in internal IPC"
This reverts commit 1a5838e966 [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
2017-02-11 23:42:15 +00:00
Yohei Yukawa
aab4e11c0a Merge "Inline IMMS#resetAllInternalStateLocked()" 2017-02-11 23:09:37 +00:00
Yohei Yukawa
d5c1d92eb5 Merge "Merge restartInput into startInput in internal IPC" 2017-02-11 23:07:51 +00:00
Yohei Yukawa
1a5838e966 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
2017-02-11 02:56:48 +00:00
Jesse Hall
01f47c116c resolve merge conflicts of b3a1417663 to nyc-mr2-dev-plus-aosp
am: 516274249f

Change-Id: Ifd131fb69d3fb2fe31bd0f06c074fdf15408dece
2017-02-11 01:24:32 +00:00
Jesse Hall
516274249f resolve merge conflicts of b3a1417663 to nyc-mr2-dev-plus-aosp
Test: mmma frameworks/base
Change-Id: I2e1e04f55d05fd8aa33da304bdb951713b37793c
2017-02-10 17:15:15 -08:00
Jesse Hall
b3a1417663 Zygote: Restore GL preload
Preloading GLES drivers in Zygote was removed previously since it is
incompatible with updatable drivers. That caused some app startup
latency and system memory use regressions. This change re-adds GLES
driver preloading, but only on devices that don't support driver
updates.

Bug: 34611670
Bug: 35052548
Test: boot angler, systrace of Calculator app startup
Change-Id: Ibdc6b3c0ba4473574722641d4bfad4b375f908a3
(cherry picked from commit ba0370eef3)
2017-02-10 12:59:10 -08:00
Yohei Yukawa
0d7aff8ab2 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
2017-02-10 10:50:32 -08:00
Shreyas Basarge
b6e73c9670 BackupAgent#getBackupQuota() API
This cl adds a getBackupQuota() method
to the BackupAgent abstract class. This
can be used by the agent to determine
how much data it can back up.

Ref: https://docs.google.com/document/d/18MnfwkDfKNtXQBPRmL8vpVgfLgSWJsDja1Nm1QV5hOw/edit#heading=h.unncio2r7de2

Bug: 33750400

Test: GTS test at ag/1850525

Change-Id: I2eb5c0066c99732ec84cae9211f3a1edaad2baf1
2017-02-10 18:11:40 +00:00
Andreas Gampe
c28592da33 Merge "Framework: Clean up RuntimeInit/ZygoteInit/WrapperInit" am: 851afe56b8 am: 0e01cae667
am: 74acde1bc5

Change-Id: I40d67fcde4d9263d5c75d5c3f782a860dcff93f8
2017-02-10 01:03:15 +00:00
Andreas Gampe
74acde1bc5 Merge "Framework: Clean up RuntimeInit/ZygoteInit/WrapperInit" am: 851afe56b8
am: 0e01cae667

Change-Id: Ifaa7595efaef554a47e05e030ccaf16a53a3bfce
2017-02-10 00:58:42 +00:00
Treehugger Robot
851afe56b8 Merge "Framework: Clean up RuntimeInit/ZygoteInit/WrapperInit" 2017-02-10 00:45:56 +00:00
TreeHugger Robot
d8502d0513 Merge "Zygote: Restore GL preload" 2017-02-10 00:36:45 +00:00
Andreas Gampe
a5b0ca3f89 Merge "Framework: Clean up RuntimeInit/ZygoteInit/WrapperInit" 2017-02-09 23:17:17 +00:00
Jesse Hall
ba0370eef3 Zygote: Restore GL preload
Preloading GLES drivers in Zygote was removed previously since it is
incompatible with updatable drivers. That caused some app startup
latency and system memory use regressions. This change re-adds GLES
driver preloading, but only on devices that don't support driver
updates.

Bug: 34611670
Bug: 35052548
Test: boot angler, systrace of Calculator app startup
Change-Id: Ibdc6b3c0ba4473574722641d4bfad4b375f908a3
2017-02-09 14:47:59 -08:00
Andreas Gampe
76d4fc8451 Framework: Clean up RuntimeInit/ZygoteInit/WrapperInit
Move methods where they belong.

(cherry picked from commit 4e66db8d0c)

Test: m
Test: Device boots
Change-Id: I805c6493078e960ff5b70d84dd93d2da6c7aa797
2017-02-09 13:16:34 -08:00
Andreas Gampe
4e66db8d0c Framework: Clean up RuntimeInit/ZygoteInit/WrapperInit
Move methods where they belong.

Test: m
Test: Device boots
Merged-In: I805c6493078e960ff5b70d84dd93d2da6c7aa797
Change-Id: I805c6493078e960ff5b70d84dd93d2da6c7aa797
2017-02-09 13:16:17 -08:00
Paul Duffin
6cd440c574 Merge "Partial Revert "Replace com.android.internal.util.Predicate with java.util.function.Predicate"" am: 621ebe692f am: a2c92b0b88 am: c1a93884dc
am: 8faed45024

Change-Id: I9d047f2e7bd8dfb14bf7b1f8c82ce6721e105198
2017-02-09 20:02:25 +00:00
Paul Duffin
8faed45024 Merge "Partial Revert "Replace com.android.internal.util.Predicate with java.util.function.Predicate"" am: 621ebe692f am: a2c92b0b88
am: c1a93884dc

Change-Id: Icce543cd86f83bff8c2e80bf7ef492d22c9cf2dc
2017-02-09 19:37:26 +00:00
Paul Duffin
c1a93884dc Merge "Partial Revert "Replace com.android.internal.util.Predicate with java.util.function.Predicate"" am: 621ebe692f
am: a2c92b0b88

Change-Id: I605588603280ff0b4ebc1088c6c1f1c933c1e657
2017-02-09 19:32:58 +00:00
Yohei Yukawa
efdb428959 Merge "Eliminate out-of-sync IMM#mFullscreenMode error" 2017-02-09 16:55:04 +00:00
Paul Duffin
57e490cf8c Partial Revert "Replace com.android.internal.util.Predicate with java.util.function.Predicate"
This partially reverts commit 3e5fbca0c5.

Bug: 35187548
Bug: 30188076
Bug: 35089332
Test: make checkbuild
Change-Id: I7ab4279aab604e3d56003b0a59867948aebabd28
2017-02-09 14:52:43 +00:00
Peeyush Agarwal
651ea36f5a Merge "Extend MenuItem to allow modifier keys for shortcut" 2017-02-09 11:17:25 +00:00
TreeHugger Robot
6c0e600257 Merge "Fix ImeSubtypeListItem ordering" 2017-02-09 08:25:36 +00:00
Yohei Yukawa
a0e468ac33 Merge "Avoid sync IPCs from TSMS to SpellCheckerService" 2017-02-09 05:11:04 +00:00
Tadashi G. Takaoka
61dd99b674 Fix ImeSubtypeListItem ordering
The previous CL (I47f902cc8f) fixed ImeSubtypeListItem.compareTo() is
compliant to Comparable#compareTo(T) (Bug 34255739) and introduced the
following order of comparing ImeSubtypeListItem fields.

  1. ImeSubtypeListItem#mImeName
  2. ImeSubtypeListItem#mSubtypeName
  3. ImeSubtypeListItem#mIsSystemLocale
  4. ImeSubtypeListItem#mIsSystemLanguage

But it didn't keep the previous ordering (Bug 34821121).  This CL
fixes the order of comparing ImeSubtypeListItem fields as compatible
as ones before I47f902cc8f.

  1. ImeSubtypeListItem#mImeName
  2. ImeSubtypeListItem#mIsSystemLocale
  3. ImeSubtypeListItem#mIsSystemLanguage
  4. ImeSubtypeListItem#mSubtypeName

Bug: 34255739
Fixes: 34821121
Test: Install FramewroksCoreTests.apk and run
      InputMethodSubtypeSwitchingControllerTest and verify all tests passed.
Change-Id: I813403fd29c5c52a3ca375174ec4b95e4b5433f2
2017-02-09 12:30:03 +09:00
Yohei Yukawa
2bc66171cc 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
      1544def0fa

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
2017-02-09 00:51:18 +00:00
Selim Cinek
64aed1a21b Improved collapsed messaging notifications
Previously the messaging layout was working on a fixed
Height, which didn't scale well as we were now using it
also in the collapsed version.
For big text notifications, the view would be
clipped ugly, since we were using a fixed number of
lines. Instead we're now calculating this dynamically.

Fixes: 35126759
Test: runtest systemui
Change-Id: Ie3736d807d7a162ee51ad65794bf2f1cfb2248be
2017-02-08 15:00:17 -08:00
TreeHugger Robot
4127c138e1 Merge "FloatingToolbar: Support for menu groups." 2017-02-08 20:19:52 +00:00
Paul Duffin
c02f6bb64b Merge "Replace com.android.internal.util.Predicate with java.util.function.Predicate" am: 78a20be77a am: 9e99b9ee45
am: 9250814fd2

Change-Id: Ifd924bdb62102657bf0c6d4b07ab919cf0f96c0c
2017-02-08 20:18:34 +00:00
Yohei Yukawa
7fa65eef20 Avoid sync IPCs from TSMS to SpellCheckerService
Currently, TextServicesManagerServices uses an AIDL interface called
ISpellCheckerService when binding to a spell-checking service.
However, this interface uses synchronous (blocking) binder calls
rather than asynchronous (oneway) calls.  As a result, there are
situations where the system process has made a blocking binder call
into untrusted application code from its main looper thread.

As general policy, the system process must never allow its looper
threads to block on application code.

This CL addresses the above issue by converting ISpellCheckerService
into oneway interface, which instead takes a result receiver
ISpellCheckerServiceCallback so that spell-checking services can
return results asynchronously.

Note that the above protocol issue was also the root cause of
Bug 5471520.  Hence we can also logically revert the previous CL [1]
for Bug 5471520.

 [1]: Iedf2c2cdd8d4834545d06d72ade3ce211b104b1d
      4e713f1441

Test: Ran `adb shell dumpsys textservices` to check the
      "Spell Checker Bind Groups:" section in the following three
      steps.
      1. Before apps start requesting spell checker sessions.
      2. While apps are owning active spell checker sessions.
      3. After all the apps that owned spell checker sessions are
         gone.
      Made sure that spell checker service is not running when
      there is not spell checker bind group.
Bug: 7254002
Change-Id: I92e7aa40dc9ea14f67d355f0bfa15325b775d27b
2017-02-08 11:54:05 -08:00