Commit Graph

86501 Commits

Author SHA1 Message Date
Peiyong Lin
88c38eb6fe [GraphicsEnvironment] Add whitelist support.
This patch adds the ability to load whitelist from updatable graphcis driver
apk. Typically a whitelist is part of the graphics driver apk, and the name is
set by overwriting ro.gfx.driver.whitelist.0

BUG: 117241379
Test: Build, flash and boot, whitelist an app and verify.
Change-Id: Ie36ca0173a90a8e48acaca2979ab64bbf92eeaed
2018-10-16 12:54:38 -07:00
Cody Northrop
fba8e6342f Merge "Revert "Revert "Rootless GPU Debug for GLES""" 2018-10-16 18:54:42 +00:00
Cody Northrop
ebe6a56f80 Revert "Revert "Rootless GPU Debug for GLES""
This reverts commit 2653e624dc.

Exempt-From-Owner-Approval: This restores a commit that was already
approved and rolled back for unrelated reasons in frameworks/native.

Test: cts-tradefed run singleCommand cts -m CtsGpuToolsHostTestCases
Test: Chromium starts up
Test: CtsDeqpTestCases:include-filter:dEQP-EGL.*
Test: CtsDeqpTestCases:include-filter:dEQP-GLES2.*
Test: CtsDeqpTestCases:include-filter:dEQP-GLES3.*
Test: CtsDeqpTestCases:include-filter:dEQP-GLES31.*
Bug: 110883880
Bug: 117609555
Change-Id: Iab23a5d598986ba34c0ba62dc78299d022924cd9
2018-10-16 18:51:28 +00:00
TreeHugger Robot
e9944aa1dc Merge "Make loadSafeLabel a generic facility as makeSafeForPresentation" 2018-10-16 16:21:10 +00:00
Neil Fuller
91d56c6b3c Merge "Remove usage of StringFactory" 2018-10-16 16:06:32 +00:00
Wale Ogunwale
80d3529acd Merge changes I0d33b4d3,I7034fcb2
* changes:
  Moved some log config. to ActivityTaskManagerDebugConfig (21/n)
  Moved more stuff from AMS to ATMS (20/n)
2018-10-16 12:39:09 +00:00
Neil Fuller
39568a2436 Remove usage of StringFactory
Code outside of the runtime should not use StringFactory.
The java.lang.String API works fine.

Bug: 113148576
Test: build only
Change-Id: I67ce6d7a13afd3ca7c0beffb33289d93e906e4be
2018-10-16 13:24:15 +01:00
Luke Huang
ca4d6f124c Merge "Network-related commands porting" am: 9b20115264 am: 923aa75d75
am: 11454a2163

Change-Id: I61fea40c9659f1eed1638cc196d309289393d6a5
2018-10-16 02:32:50 -07:00
Luke Huang
11454a2163 Merge "Network-related commands porting" am: 9b20115264
am: 923aa75d75

Change-Id: I957050b73afed3e6fde908883568b81198310622
2018-10-16 02:19:35 -07:00
TreeHugger Robot
13635f0ec0 Merge "Fix invalid character access" 2018-10-16 09:08:01 +00:00
Luke Huang
923aa75d75 Merge "Network-related commands porting"
am: 9b20115264

Change-Id: I96b2bb80cca6e9d80f3f0fe08f7b71ce31b67528
2018-10-16 01:09:30 -07:00
TreeHugger Robot
1728c04cae Merge "Instantiate InputMethodManager for each display (2nd try)" 2018-10-16 08:02:49 +00:00
TreeHugger Robot
77f7614558 Merge "Add phsyical activity recognition AppOp" 2018-10-16 07:50:27 +00:00
Luke Huang
9b20115264 Merge "Network-related commands porting" 2018-10-16 07:44:37 +00:00
TreeHugger Robot
ba1a334208 Merge "Stop resetting app drag drop state when startDrag is invoked twice." 2018-10-16 02:14:44 +00:00
Stanley Tng
2350e15f4b Merge "Add Feature Flag for Hearing Aid Profile"
am: e4e653b8bf

Change-Id: I53ba5bf7547b66e29a0fbed7b5d596f010dd8a9b
2018-10-15 18:57:59 -07:00
Wale Ogunwale
98875615dc Moved some log config. to ActivityTaskManagerDebugConfig (21/n)
Test: Existing test pass
Bug: 80414790
Change-Id: I0d33b4d325be805ac49a97ea02ad1a10fd1bf24f
2018-10-15 18:27:14 -07:00
Seigo Nonaka
5783c13806 Fix invalid character access
The invalid access has introduced by
I976df4db63be241af395dd30dd94182f76bdae53

Bug: 114454225
Test: atest StaticLayoutLineBreakingTest
Change-Id: I8ad3d7761c98eb8ace97af3a4794d4bfe04c05e0
2018-10-15 18:03:44 -07:00
Haoyu Zhang
36252bf2bf Merge "Add default implementation for LineBackgroundSpan" 2018-10-16 00:31:40 +00:00
TreeHugger Robot
02f2a315d7 Merge "Add Context.getDisplayId() to avoid possible IPC" 2018-10-16 00:20:52 +00:00
Treehugger Robot
e4e653b8bf Merge "Add Feature Flag for Hearing Aid Profile" 2018-10-15 23:10:41 +00:00
Seigo Nonaka
aa35899430 Merge "Make LineBreaker public" 2018-10-15 21:56:12 +00:00
TreeHugger Robot
bc9ebba7e5 Merge "Suspending app can customize intercepting dialog" 2018-10-15 21:51:52 +00:00
Zimuzo
6cbf9cc6e1 Add phsyical activity recognition AppOp
Add AppOps for physical activity recognition to better track apps detecting physical activity.

Test: AppOpsmanager#noteOp is ALLOWED
Bug: 111411340
Change-Id: I2ee336ead4da11f0a12733b14a63840437c7a2e1
2018-10-15 21:52:16 +01:00
TreeHugger Robot
8aaf27259c Merge "Fixes touch ripples on media buttons." 2018-10-15 17:21:17 +00:00
Philip P. Moltmann
54118289e5 Merge "Use public method in RestrictedLockUtils#isCurrentUserOrProfile" 2018-10-15 16:41:53 +00:00
Philip P. Moltmann
3e0f1b46e4 Merge "Rename system-api wm flags to SYSTEM_..." 2018-10-15 16:28:39 +00:00
Philip P. Moltmann
c1fda744f0 Make loadSafeLabel a generic facility as makeSafeForPresentation
Any app loading untrusted strings should make the strings face. Hence make
the method publicly available.

Test: atest CtsTextTestCases:MakeSafeForPresentationTest GtsContentTestCases:PackageItemInfoTests
Change-Id: Ib0679fe892181535339dac77583c427e0d64dd05
Fixes: 113856697
2018-10-15 09:11:52 -07:00
Lorenzo Colitti
03fc4a7f68 Merge "Change permissions checks for setAirplaneMode." am: 3889ff53ed am: 10c175041e
am: 3d23e905a9

Change-Id: Icfc55aefa11a5e1dd92382c2be94c7b63889aa8f
2018-10-15 08:49:52 -07:00
Lorenzo Colitti
3d23e905a9 Merge "Change permissions checks for setAirplaneMode." am: 3889ff53ed
am: 10c175041e

Change-Id: Ibe5bbd51adae83e1bfb5a4ab43d29eb2ccd02a8b
2018-10-15 08:29:00 -07:00
Lorenzo Colitti
10c175041e Merge "Change permissions checks for setAirplaneMode."
am: 3889ff53ed

Change-Id: I578923c3f9012055f715e536f5d4d42ed669c5ee
2018-10-15 08:03:52 -07:00
Gus Prevas
9cc966012f Fixes touch ripples on media buttons.
This change makes touch ripples appear correctly on the action buttons
on media notifications.  This involves the following changes:

- NotificationViewWrapper.onReinflated() sets the notification content
root's background to transparent rather than null when transferring the
background color to the NotificationBackgroundView.  This gives the
ripples a surface to draw on.
- The RemoteViews for the media templates are changed to use a fixed
set of buttons instead of removing and re-adding them on every update.
This prevents the update caused by whatever action the tap invokes from
interrupting the ripples.
- A method is added to RemoteViews allowing the ripple color to be
specified.  This allows us to change the ripple color to match the
foreground color of the controls, which is necessary for the ripples to
show up against a dark background.

Test: manual
Change-Id: I907f9a1a75efb48da496133ad357fc5150de4410
Fixes: 35856702
2018-10-15 09:42:06 -04:00
Lorenzo Colitti
3889ff53ed Merge "Change permissions checks for setAirplaneMode." 2018-10-15 13:36:45 +00:00
Stefano Tommasini
6f6e67bcce Merge "Add onCreate method to SystemBackup agent that receives UserHandle." 2018-10-15 12:45:38 +00:00
Andrey Kulikov
08aa6fd3e7 Merge "Fix crash in RecyclerView if it's view is animated by Transitions" 2018-10-15 10:24:20 +00:00
Andrey Kulikov
d2d5cdff44 Fix crash in RecyclerView if it's view is animated by Transitions
When it is happening:
a) Disappear Visibility transition is applied to the recyclerview(and it's children)
b) Transition added the View to the ViewOverlay for an animation
c) Transition is first paused before being canceled (for example when the new reversed transition wants to start after user click)
d) In Visibility.onPause() we call suppressLayout(false) for RecyclerView
e) RecyclerView starts layouting and tries to use our view, but it is currently added to the overlay
f) So it crashes on attempt to call addView

Fix: Detach a view from overlay in Visibility transition while it is paused. Attach it back in onTransitionResume if the view is still not used by someone else like RecyclerView.

Bug: 33609996
Fix in AndroidX: I18d8327b338be442ec30b15fe53a99d1a2974888
Test: cts tests for Transitions
Change-Id: I74f138617c8afbac9f6efa4ee9a1f4e961306c9e
2018-10-15 10:24:07 +00:00
Stefanot
14bbdedec0 Add onCreate method to SystemBackup agent that receives UserHandle.
This is done for go/br-framework-multi-user.

Bug:117590564
Test: Builds.
Change-Id: I7af0f7c604979da03efc3d88dbed2b2c9631bace
2018-10-15 10:27:11 +01:00
Yohei Yukawa
4052a10f29 Instantiate InputMethodManager for each display (2nd try)
InputMethodManager has been a per-process singleton object. In order
to support behavior changes for multi-display support in Android Q,
however, InputMethodManager now needs to be per-display objects.

With this CL, context.getSystemService(InputMethodManager.class) will
start returning per-display InputMethodManager (IMM) instance.

  Why?

There are two major reasons.
 1. To support per-display focused window.
 2. To support more simplified API for multi-session IME.

Currently per-process InputMethodManager instance directly receives
callback from ViewRootImpl upon windowFocusChanged, then it keeps
track of which Window is focused by storing its root view into
InputMethodManager#mCurRootView.

This design assumes that (within the same process) at most one Window
can have window focus, which is no longer true once we start
supporting per-display focused window (Bug 111361570).

  Why we need to do this to support per-display focused window:

For traditional non multi-session IME cases (e.g. apps that use
Virtual Display APIs on phones), internal state of IMM can be easily
messed up once the system starts sending per-display
windowFocusChanged events to the same process, because IMM still
doesn't know that now each display has focused window. It is hard to
precisely predict what kind of issues we would see simply because such
a use case is most likely not expected in the original design.

  Why we need to do this for multi-session IME:

For multi-session IME scenarios, in addition to the above concern in
InputMethodManager, the current design allows at most one IME session
per process. This means that if a process X is showing Activities to 3
different displays, only one Activity can interact with the
multi-session IME at the same time. If we do not change the current
design, the only way to work around is to ask app developers to
explicitly use different processes for each Activity, which may
require a lot of work (e.g. SharedPreference is not optimized for
multi-process use cases). This would also make multi-session IME
development complicated because the IME cannot know on which display
the IME is interacting until startInputOrWindowGainedFocus() is
actually called, and needs to do all the preparation and cleanup tasks
whenever startInputOrWindowGainedFocus() is called for a different
display than it's currently interacting with.

  Alternative solutions considered:

Another possible approach is to update InputMethodManager singleton to
be able to maintain multiple mCurRootView and mServedView for each
display. This approach was abandoned because those fields and methods
are already marked as @UnsupportedAppUsage.  I concluded that touching
@UnsupportedAppUsage things would have bigger compatibility risks than
per-display instance model.

  Implementation note:

* Public APIs in IMM that take View instance as the first parameter
  will verify whether the given View and IMM are associated with the
  same display ID or not.  If there is a display ID mismatch, such an
  API call will be automatically forwarded to the correct IMM instance
  IMM with a clear warning in logcat which tells that app developers
  should use the correct IMM instance to avoid unnecessary performance
  overhead.

* As a general rule, system server process cannot trust display ID
  reported from applications.  In order to enable IMMS to verify the
  reported display ID, this CL also exposes display ID verification
  logic from WMS to other system components via WindowManagerInternal.

* isInputMethodClientFocus() in WindowManagerService (WMS) is updated
  to use top-focused-display to determine whether a given IME client
  has IME focus or not.  This is now necessary because with a recent
  change [1] each display can have focused window.  The previous logic
  to check all the displays that belong to the given pid/uid [2] no
  longer makes sense.

* Currently per-display InputMethodManager instances will not be
  garbage collected because InputMethodManager#sInstanceMap keeps
  holding strong references to them.  Freeing those instances is
  technically possible, but we need to be careful because multiple
  processes (app, system, IME) are involved and at least system
  process has a strict verification logic that lets the calling
  process crash with SecurityException.  We need to carefully
  implement such a cleanup logic to avoid random process crash due to
  race condition.  Bug 116699479 will take care of this task.

Also to make sure that the performance regression (Bug 117434607) we
observed after my initial attempt [3] no longer exists, here are the
benchmark results with and without this CL.

  testExpandNotificationsLatency on taimen-userdebug
    without this CL:
      results=[55, 46, 61, 67, 50, 48, 57, 50, 55, 63]
      min:46.0, max:67.0, avg:55.2, median:55.0, std_dev:6.539
    with this CL:
      results=[45, 55, 58, 57, 47, 60, 59, 60, 56, 53]
      min:45.0, max:60.0, avg:55.0, median:56.5, std_dev:4.980

 [1]: I776cabaeaf41ff4240f504fb1430d3e40892023d
      1e5b10a217
 [2]: I8da315936caebdc8b2c16cff4e24192c06743251
      90120a8b5b
 [3]: I7242e765426353672823fcc8277f20ac361930d7
      c53d78e992

Bug: 111364446
Fix: 115893206
Test: atest ActivityManagerMultiDisplayTests
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Test: atest FrameworksCoreTests:android.view.inputmethod.InputMethodManagerTest
Test: No perf regression in LatencyTests#testExpandNotificationsLatency()
Change-Id: I78ad7cccb9586474c83f7e2f90c0bcabb221c47b
2018-10-15 15:35:55 +08:00
Daichi Hirono
571074be31 Stop resetting app drag drop state when startDrag is invoked twice.
Before P, if startDragAndDrop is invoked twice, the system goes to wired state
where:

 * the system server keeps processing the first drag operation.
 * the application loses the drag token but keeps the user local state.
 * cancelDrag() no longer cancels the ongoing operation.
 * DragEvents are still delivered with the user local state.

At P we unintentionally changed the behavior to:

 * the system server keeps processing the first drag operation.
 * the application loses the drag token and the user local state.
 * cancelDrag() no longer cancels the ongoing operation.
 * DragEvents are still delivered without the user local state.

The CL fixed the behavior so that the second startDragAndDrop() calls
does not affect the internal state of drag and drop as it's failed due
to existing ongoing operation.

 * the system server keeps processing the first drag operation.
 * the application keeps the drag token and the user local state.
 * cancelDrag() is still able to cancel the ongoing operation.
 * DragEvents are still delivered with the user local state.

Bug: 113310888
Test: Manually invoke startDragAndDrop() and ensures the user local
      state delivered with DragEvents is not cleared.

Change-Id: I0a8315a44d655a8a73b7034f340e50e2f50601a8
2018-10-15 14:48:35 +09:00
Ricky Wai
6763d1f3fe Merge "Return app hidden details activity in launcher api" 2018-10-15 04:21:59 +00:00
Wale Ogunwale
342fbe9cff Moved more stuff from AMS to ATMS (20/n)
- Mirror a few more fields from ProcessRecord to WindowProcessController
- Moved mCheckedForSetup to ActivityStartController where it is actually used
- Move configuration and locale message processing to ATMS
- Switched dependency on ProcessRecord to WindowProcessController in a few places

Test: Existing test pass
Bug: 80414790
Change-Id: I7034fcb2f15defea81ad07a52d8f498da35f0760
2018-10-14 19:39:26 -07:00
Yohei Yukawa
5281b6b4c0 Add Context.getDisplayId() to avoid possible IPC
ContextImpl has an internal rule that when ContextImpl#mDisplay is
null the Context is associated with the default display.  The problem
is that, as discussed in Bug 117709581, when ContextImpl#mDisplay is
null ContextImpl#getDisplay() tries to get some non-null Display
object by making an IPC to the system server, which is redundant when
the display ID is the only thing that the caller wants to know.

By having an @hide method Context.getDisplayId(), we can ensure that
display ID can be obtained without any IPC.  This enables us to
re-submit my CL [1] that aimed to instantiate InputMethodManager (IMM)
for each display but then got reverted due to a performance regression
(Bug 117434607).

There should be no developer-observable behavior change.

 [1]: I7242e765426353672823fcc8277f20ac361930d7
      c53d78e992

Fix: 117712745
Test: atest FrameworksCoreTests:android.content.ContextTest
Test: prebuilts/checkstyle/checkstyle.py -f \
      frameworks/base/core/tests/coretests/src/android/content/ContextTest.java
Change-Id: I2534530a5ce90e2620c5039d793a6454a0a1e154
2018-10-15 07:38:25 +08:00
Yohei Yukawa
4b173140f3 Get InputMethodManager in View only if needed
The perf regression found in my initial attempt [1] to instantiate
InputMethodManager (IMM) for each display revieled that when a Window
gained/lost focus,
  getContext().getSystemService(InputMethodManager.class)
gets called for all the View objects that belong to the Window.

This CL introduces a private utility method
  View.notifyFocusChangeToInputMethodManager()
to replace existing unnecessary acquisitions of IMM in View.java,
including the most concerning one View.onWindowFocusChanged().

There should be no negative side-effect in doing this optimization.

LatencyTests results:
  testExpandNotificationsLatency on taimen-userdebug
    without this CL:
      results=[43, 46, 58, 47, 52, 59, 55, 59, 58, 46]
      min: 43.0, max:59.0, avg:54.7, median:53.5, std_dev:5.967
    with this CL:
      results=[41, 58, 55, 59, 60, 67, 51, 55, 55, 55]
      min: 41.0, max:67.0, avg:55.6, median:55.0, std_dev:6.344

 [1]: I7242e765426353672823fcc8277f20ac361930d7
      c53d78e992

Bug: 115893206
Test: atest ActivityManagerMultiDisplayTests
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Test: atest FrameworksCoreTests:android.view.inputmethod.InputMethodManagerTest
Test: No perf regression observed in Bug 117434607
Change-Id: I5c64b23c3f5cb16f7f3fb9cdc2be063083566050
2018-10-14 19:24:31 +08:00
Stanley Tng
cbfcbd168b Add Feature Flag for Hearing Aid Profile
Using the Settings App-Developer Options-Feature Flag, allow the user to
enable or disable the Hearing Aid Profile.

Bug: 116317072
Bug: 116044083
Test: Manual testing using Settings App
Change-Id: I58a9d339941e235242c443c85b6f4194b5a296c9
Merged-In: I58a9d339941e235242c443c85b6f4194b5a296c9
(cherry picked from commit fe8c8337ed)
2018-10-13 16:16:33 -07:00
TreeHugger Robot
81dd9c3a88 Merge "Improved logging and dump on TextClassification." 2018-10-13 01:50:24 +00:00
Haoyu Zhang
a72bfc968c Merge "Update docs for TextAppearanceSpan" 2018-10-13 01:00:43 +00:00
Philip P. Moltmann
add325328b Merge "Make PermissionManager use lists" 2018-10-12 23:43:11 +00:00
TreeHugger Robot
9208feacfb Merge "Adds missing RequiresPermission annotation to Context Hub APIs" 2018-10-12 23:11:33 +00:00
Suprabh Shukla
389cb6f54a Suspending app can customize intercepting dialog
The suspending app has more context about why a particular app was
suspended by the user, but we do not want to delegate the interception
of the suspended activity out of the system.
Hence allowing it further customizations to the dialog to make
it clearer.

Test: atest com.android.server.pm.SuspendDialogInfoTest \
com.android.server.pm.SuspendPackagesTest \
com.android.server.pm.PackageUserStateTest \
com.android.server.pm.PackageManagerSettingsTests \
com.android.server.am.ActivityStartInterceptorTest

atest GtsSuspendAppsPermissionTestCases GtsSuspendAppsTestCases

Bug: 112486945
Bug: 113150060
Change-Id: If9f4d14587a2b75bb572e7984a90e300a2c72d16
2018-10-12 16:02:53 -07:00
Cody Northrop
2653e624dc Revert "Rootless GPU Debug for GLES"
This reverts commit f41625936f.

Exempt-From-Owner-Approval: Reverting
Bug: 110883880
Test: Chrome no longer crashes
Change-Id: I70c9d4a0376b27059e7759e1b6283903c0cf168b
2018-10-12 21:34:15 +00:00