Commit Graph

85797 Commits

Author SHA1 Message Date
Andreas Gampe
2c658edc75 Merge "Framework: Remove a nonsensical substring(0)" am: 98627fa455 am: 67dffedd92
am: cf42e434d9

Change-Id: I22e7186b99278a907c68cfc03618ed05e769a045
2018-09-11 11:27:15 -07:00
Andreas Gampe
cf42e434d9 Merge "Framework: Remove a nonsensical substring(0)" am: 98627fa455
am: 67dffedd92

Change-Id: Ibdac1bdc69d8f02823343b0d39b690de51da6802
2018-09-11 10:34:11 -07:00
Andreas Gampe
67dffedd92 Merge "Framework: Remove a nonsensical substring(0)"
am: 98627fa455

Change-Id: Iede6825cef351b4021dc1166b262124cefdfdca2
2018-09-11 10:16:45 -07:00
Felipe Leme
0e4c2079b8 Merge "Use session id to uniquely identidy autofill ids for multi-session." 2018-09-11 17:10:56 +00:00
Treehugger Robot
98627fa455 Merge "Framework: Remove a nonsensical substring(0)" 2018-09-11 16:30:36 +00:00
Seigo Nonaka
f18fadb7c0 Merge "Move maximum weight constant from Typeface to Font and make it public" 2018-09-11 05:02:46 +00:00
Seigo Nonaka
3005995a34 Merge "Unhide HyphenEdit related methods" 2018-09-11 05:01:34 +00:00
Daichi Hirono
39a305ea21 Merge "Stop invoke initAppOps in Camera default constructor." am: 0890a2b51e
am: f98d5cb38b

Change-Id: Id24b3456d69a03557382023ddcff6ebd4aa3cc9e
2018-09-10 20:09:40 -07:00
Daichi Hirono
f98d5cb38b Merge "Stop invoke initAppOps in Camera default constructor."
am: 0890a2b51e

Change-Id: I6ed52f595757c3ca7308969105f05e6bd55dee65
2018-09-10 20:00:30 -07:00
Treehugger Robot
0890a2b51e Merge "Stop invoke initAppOps in Camera default constructor." 2018-09-11 01:32:53 +00:00
Felipe Leme
ba15db8f70 Use session id to uniquely identidy autofill ids for multi-session.
This change is need when integrating CustomDescription artifacts (like
CharSequenceTransformation) with SaveInfo.FLAG_DELAY_SAVE, as different
views might have the same autofill id on different activities.

Test: atest CtsAutoFillServiceTestCases:MultiScreenLoginTest
Test: atest CtsAutoFillServiceTestCases # to make sure it didn't break anything

Fixes: 113593220

Change-Id: I7db1df7a56dec7180a2172bb2022b042f115c7b8
2018-09-10 17:03:27 -07:00
Julia Reynolds
a7ba45acb1 Allow apps to proxy notifications for other apps
This will allow apps to delegate posting to persistently
running apps, to decrease the numbers of times apps need to wake up
just to post a notification.

Bug: 111452544
Test: runtest systemui-notification
Change-Id: I1ead239747f2871f222d0ce6a971d1448a0766ad
2018-09-10 15:00:59 -04:00
Seigo Nonaka
a8fab8acdb Move maximum weight constant from Typeface to Font and make it public
Now we have Font class. It is good to move max weight constant from
Typeface to Font.

Bug: 112327179
Test: atest FontTest

Change-Id: I3946ac150a02bf0cafa0fc81e61e69c31b45ed1d
2018-09-10 10:34:23 -07:00
Seigo Nonaka
9033e0c1a4 Unhide HyphenEdit related methods
These APIs are necessary to implement hyphenation by third party developers.

Bug: 112327179
Test: atest android.graphics.cts.PaintTest#testSetGetHyphenEdit
Change-Id: I692a56d3d1b15100503eb6d8e0f59d6c5c8af81b
2018-09-10 09:42:28 -07:00
TreeHugger Robot
00ebba4f98 Merge "Disable preview on volume change" 2018-09-10 11:47:22 +00:00
Andrey Kulikov
33d0507ea6 Merge "Fix IntDef's usages in the platform Transitions" 2018-09-10 09:56:14 +00:00
Yohei Yukawa
41b094f785 Use correct @*Res annotation for updateStatusIcon()
There was a small mistake in my previous CL [1].

What updateStatusIcon() takes is a resource ID for Drawable, not ID
for an integer value.

These @*Res annotations are still just hints for IDE and lint tools.
They are actually all @Retention(SOURCE) hence this kind of mistake
has no impact at run time actually.

This CL also adds the right annotation for corresponding methods in
InputMethodManager and InputMethodManagerService.

 [1]: I995c4b922f91b94438c1292392b2c3030598594f
      c7ca36845e

Bug: 114418674
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: Id7fd610c07643c79b8ec03efbda24b3dc0686844
2018-09-09 23:58:45 -07:00
TreeHugger Robot
d172e22a6a Merge "Allow IMM to forward API calls to IMS" 2018-09-10 06:13:52 +00:00
TreeHugger Robot
5d42542130 Merge "Stop relying on IMM in IMS for token-guarded IME APIs" 2018-09-10 05:53:25 +00:00
TreeHugger Robot
8aadce5633 Merge "Add a wrapper for IInputMethodPrivilegedOperations" 2018-09-10 05:34:13 +00:00
TreeHugger Robot
cbf1df8eb3 Merge "Remove redundant synchronized blocks" 2018-09-10 05:01:36 +00:00
Yohei Yukawa
eec552e9e9 Allow IMM to forward API calls to IMS
This is one further step towards deprecating 8 IME APIs that were
accidentally defined InputMethodManager (IMM) instead of
InputMethodService (IMS).

With this CL, API calls to those 8 deprecated ones in IMM will be
forwarded to IMS so that we can completely remove corresponding IPC
methods from IInputMethodManager.aidl.  This guarantees that processes
that have no InputMethodService running there become unable to access
IPC methods behind such IME APIs that are intended to be used only
from IMEs.

One tricky thing is that the following 4 public APIs have been allowed
to processes that have WRITE_SECURE_SETTINGS permission, even if such
a process does not have active InputMethodService.

 * InputMethodManager.setInputMethod
 * InputMethodManager.setInputMethodAndSubtype
 * InputMethodManager.switchToLastInputMethod
 * InputMethodManager.switchToNextInputMethod

In general, user mode apps should not have WRITE_SECURE_SETTINGS
permission.  Thus it might be not that difficult for us to simply
deprecate such a special rule.  Bug 114488811 is tracking that effort.

For now, this CL preserves the existing behavior when a null IME token
is specified to those 4 APIs.

Bug: 114418674
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: If762714b2003fa6477e1318110f63e13968c1d7e
2018-09-09 20:48:41 -07:00
Yohei Yukawa
c7ca36845e Stop relying on IMM in IMS for token-guarded IME APIs
This is a follow up CL to previous CLs [1][2][3] that made sure that
APIs that are exposed only to IMEs should live in InputMethodService
instead of InputMethodManager.

Now that we have a dedicated Binder inferface [4] that allows
InputMethodService (IMS) to directly send IPCs to
InputMethodManagerService (IMMS) without relying on
InputMethodManager (IMM), it is natural for the above public APIs in
IMS to stop relying on IMM.

This CL also addresses a small concern that it is no longer obvious
when those APIs become available.  Previously, it was a bit more
obvious that passing null IME token doesn't work so IME developers
could imagine that those APIs were unavailable until attachToken() is
called.

With this CL, InputMethodPrivilegedOperations starts showing warning
messages when called too early, which we hope help IME developers
understand why those APIs do nothing when called too early.

  [1]: I3163f3cbe557c85103ca287bee0874a3b4194032
       d8d03a8e1b
  [2]: If6a786c5774805d041ea9672ef2721e4a38df7fc
       fbc2f7acd5
  [3]: I6efd5ca473e33e6faeadb7eea7772b9d2b8ca12b
       164cfba536
  [4]: I2f3ec3c5de546fb3603275a4b64000ed3f863b65
       c54c117164

Bug: 114418674
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: I995c4b922f91b94438c1292392b2c3030598594f
2018-09-09 20:48:38 -07:00
Yohei Yukawa
2bc3d6f0a6 Add a wrapper for IInputMethodPrivilegedOperations
This is a mechanical refactoring to split out boilerplate code around
IPCs from InputMethodManager to another file.

Bug: 114418674
Bug: 113177698
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: I9ca251482867daea84c2777f74fd9b8a2b0f29cd
2018-09-09 20:48:34 -07:00
Yohei Yukawa
83b7d72a05 Remove redundant synchronized blocks
Unless it is also touching any internal field that needs to be
synchronized with InputMethodManager#mH, just making IPC to
InputMethodManagerService (IMMS) does not need any additional
serialization in the caller side.  IMMS itself already has internal
lock to serializate incoming operations.

Bug: 114418674
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: I214d2c481c9fe862fbb9ec0759df2c798915b9f0
2018-09-09 20:48:25 -07:00
Phil Weaver
ec2b49927e Merge "Change API name for a11y keyboard flag" 2018-09-08 23:20:32 +00:00
TreeHugger Robot
b0142d5def Merge "WM: Parent SurfaceView to a new bounds surface" 2018-09-08 16:53:57 +00:00
TreeHugger Robot
5f6823f58b Merge "Add documentation about threading." 2018-09-08 12:12:14 +00:00
Vishnu Nair
b040c0150e WM: Parent SurfaceView to a new bounds surface
Fixes a couple of issues seen with PiP animations.
1. SurfaceView expands over the parent bounds.
2. SurfaceView and/or its background surface draws over the surface inset region of the parent.

Creates a child surface in ViewRootImpl that will crop any region outside its surface bounds after
adjusting for surface insets. Changed SurfaceView to parent to this new surface.

Test: manually run through PiP animations for Maps and YouTube.
Test: go/wm-smoke
Change-Id: Ib4b8e7f6753eda1e690e1ff6c92ce27165fa693e
2018-09-07 11:38:32 -07:00
Haoyu Zhang
f0e6794cae Merge "Add fontVariationSettings to TextView and TextAppearance in XML" 2018-09-07 17:43:47 +00:00
Julia Reynolds
fe992198c1 Add documentation about threading.
Change-Id: I8e0df7398f464cc829a83012f2ab6ee6441d0e4c
Fixes: 112249346
Test: make
2018-09-07 17:39:02 +00:00
Julia Reynolds
d7e9d35a44 Disable preview on volume change
Test: manual
Change-Id: If6994c4f41f5c727b1589b14a6a6f89abb346f80
Fixes: 112169378
2018-09-07 17:35:19 +00:00
TreeHugger Robot
59c1d01b85 Merge "Revert "Revert "DiskStats Westworld Migration""" 2018-09-07 17:24:28 +00:00
Seigo Nonaka
18df22767e Merge "Introduce system font enumeration API" 2018-09-07 17:14:13 +00:00
Andrey Kulikov
275ca2a651 Fix IntDef's usages in the platform Transitions
Bug: 68490704

1) Add annotation in some places where it was missed: constructors of Fade and Slide
2) Add Fade.IN and Fade.OUT into a set of allowed values for Visibility.MODE IntDef. Without it Lint will false alarm on this line:
new Fade().setMode(Fade.IN);
It should be allowed as Fade.IN is just a proxy value for Visibility.MODE_IN.

Test: n/a
Change-Id: I56d8ba5f49b1cf8f6a61357f58ac76312e7cf037
2018-09-07 16:54:45 +00:00
TreeHugger Robot
645537e522 Merge "Fixed findValueLocked() so it fetches values from previous sessions." 2018-09-07 16:22:38 +00:00
David Brazdil
0b62a08c76 Merge "Move ApplicationInfo.usesNonSdkApi to private flags" am: fdd378c594
am: de5cc1ff5b

Change-Id: I8849fab757c732ab600e243c187f9acd0aa2c9d7
2018-09-07 04:15:02 -07:00
David Brazdil
de5cc1ff5b Merge "Move ApplicationInfo.usesNonSdkApi to private flags"
am: fdd378c594

Change-Id: I43fe6b903eb4cd900da9ebc2b10893213329c691
2018-09-07 03:12:59 -07:00
David Brazdil
fdd378c594 Merge "Move ApplicationInfo.usesNonSdkApi to private flags" 2018-09-07 09:32:13 +00:00
Eric Sandness
a521deb920 Merge "Block Policies From Device Admin Targetting Q" 2018-09-07 09:07:21 +00:00
TreeHugger Robot
fda4ab69fc Merge "Fix javadoc syntax in TypedValue" 2018-09-07 04:29:48 +00:00
TreeHugger Robot
826a36c19b Merge "Add a new Binder interface to allow IMS to directly talk to IMMS" 2018-09-07 02:11:07 +00:00
Ashley Rose
2b9a3355ec Fix javadoc syntax in TypedValue
Fixes: 114296097
Test: make
Change-Id: Ib5b8fef1607487cc0a37f58fe63f67c151cd12fb
2018-09-06 19:06:51 -04:00
Ryan Prichard
66e6f61bb1 Merge changes from topic "b113052379-cp-from-pi-dev-p2"
am: c9fc995e0e

Change-Id: Ia83844fa93a02234178042be85cc99eaeaca221f
2018-09-06 14:37:27 -07:00
Eino-Ville Talvala
e0641b2619 Camera: Documentation updates for calibration and distortion correction
am: 96024af857

Change-Id: Ie07f7074a0347f63cd8c6f2bb715efbdba8b717f
2018-09-06 14:30:42 -07:00
Ryan Prichard
c9fc995e0e Merge changes from topic "b113052379-cp-from-pi-dev-p2"
* changes:
  Camera: Documentation update to remove physicalIds
  Camera: Documentation updates for calibration and distortion correction
2018-09-06 20:35:24 +00:00
Yohei Yukawa
c54c117164 Add a new Binder interface to allow IMS to directly talk to IMMS
Historically, InputMethodService (IMS) has relied on
InputMethodManager's hidden methods to communicate with
InputMethodManagerService (IMMS).  Because of this, InputMethodManager
(IMM) has ended up being a mixture of IPC endpoint for both IME
clients and IME itself.

There are multiple problems.

 * IMM is instantiated in almost all user mode processes.  This means
   that unnecessary IPC endpoints have been accessible to them via
   reflection.  Even though those endpoints refuses request without a
   valid IME window token, and even though we have tighten up use of
   private APIs in the runtime level, exposing unnecessary IPC
   endpoints is still questionable.
 * Mixing multiple responsibilities has been caused unnecessary
   complexity in IMM.  In Bug 70282603, we have moved some APIs from
   IMM to IMS to sort out this complexity that are surfaced in API
   boundary, but in the implementation level everything remained to be
   the same.

Now that Bug 70282603 is fixed, the natural next step is to start
implementing actual an IPC connection from IMS to IMMS without relying
on IMM.

Here is the new diagram that describes (most of) IPC interfaces around
IMEs.

   APP---(1)---IMMS
     \          |
      \         |
       \        |
        \       |
         \      |
         (2)   (3)
           \    |
            \   |
             \  |
              \ |
               \|
               IME

 (1): IInputMethodManager.aidl: send requests from APP to IMMS
      IInputMethodClient.aidl:  send requests from IMMS to APP
 (2): IInputMethodSession.aidl: send requests from APP to IME
      IInputContext.aidl:       send requests from IME to APP
       -> this is the actual interface behind InputConnection
 (3): IInputMethod.aidl:        send requests from IMMS to IME
      IInputMethodPrivilegedOperations.aidl:
                                send requests from IME to IMMS

IInputMethodPrivilegedOperations.aidl is what this CL is adding.

With that, this CL moves 5 IPC methods
  from IInputMethodManager.aidl (1)
  to IInputMethodPrivilegedOperations.aidl (3).

There remain some IPC methods that are intended to be used only from
IMEs in IInputMethodManager.aidl because those methods have been
unfortunately exposed via public APIs in InputMethodmanager.

Although all of those public APIs were deprecated in Android P as part
of Bug 70282603, we still need to keep maintaining those APIs until
(most of) IMEs migrate to APIs that are newly introduced in
InputMethodService.  It would take several years.

IInputMethodManager#getInputMethodWindowVisibleHeight() is another
method that we cannot migrate right now because some apps have already
relied on its corresponding hidden method in IMM, as discussed in Bug
113914148.

Fix: 113177698
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: I2f3ec3c5de546fb3603275a4b64000ed3f863b65
2018-09-06 11:39:50 -07:00
Phil Weaver
b8c855d1da Merge "Add test mapping for a11y" 2018-09-06 18:25:57 +00:00
TreeHugger Robot
1d6784b9ca Merge "Clarify that InputMethod.attachToken() can be called at most once" 2018-09-06 17:49:27 +00:00
Yohei Yukawa
674cc4bedd Clarify that InputMethod.attachToken() can be called at most once
I don't know whether this comment was valid in the initial
implementation or not, in the current system InputMethod.attachToken()
is not (indirectly) exposed to the IME client process vir Binder
interface.  The only Binder interface that is exposed from the IME
process to the IME client process is IInputMethodSession, not
IInputMethod that implements attachToken().

One may think that a malicious app could try to call
Context.bindService() with InputMethod.SERVICE_INTERFACE to directly
obtain IInputMethod, but it should fail because IMEs must be
protecting their InputMethodService with BIND_INPUT_METHOD so that
only the system can bind to them.

This CL clarifies this point in both JavaDoc and its implementation.
If an IME happened to receive multiple attachToken(), it is an OS bug
and worth letting people know by crashing the IME process.

Fix: 114164394
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Change-Id: Ia1e1d5ce020155b906e42a222f27b76905217395
2018-09-06 10:47:15 -07:00