14521 Commits

Author SHA1 Message Date
Andrei Onea
0611dbc7a6 Initialize AppCompatCallbacks in system server
This ensures that any calls made (intentionally or not) in the system
server using the Compatibility (in-app process) gating APIs will always
return true, and log the gated feature.

Bug: 143591326
Test: m
Merged-In: I96792cf852f4167fc39d5055704f8617efaae25e
Change-Id: I96792cf852f4167fc39d5055704f8617efaae25e
2019-10-31 11:49:50 +00:00
atrost
ff948d8a2f Add a native aidl API.
Introduce a platform_compat_native service that just calls the
platform_compat service.
The new service is needed as it needs a slightly different (more
limited, no ApplicationInfo in cpp) aidl API, and a class can only
extend one stub.

Test: Call the service from dumpsys.cpp (http://aosp/1142055)
Bug: 138275545
Change-Id: Ic46cc34b4c1dd4ebc6bcc996fb3f8503607214ac
Merged-In: Ic46cc34b4c1dd4ebc6bcc996fb3f8503607214ac
2019-10-22 18:54:13 +00:00
Roshan Pius
622547b553 NetworkStackClient: Refactor network stack process interaction
Refactor NetworkStackClient class to move the module service binding &
network stack process death monitoring to a separate class. This class
will only instantiated in the SystemServer process.
The new class |SystemServerToNetworkStackConnector| will be used from
the client classes corresponding to each module running on the network
stack process (NetworkStackClient, WifiStackClient, etc)

This has 2 main advantages:
a) Reduces code duplication (Otherwise the various Client classes need
to replicate the service bindding & process death monitoring).
b) Central crash recovery for the network stack process (Otherwise the
various Client classes will trigger multiple recovery for a single
network stack process crash).

Bug: 135679762
Bug: 140006229
Test: Device boots up & connects to wifi networks.
(cherry-picked from 7e6f5f5e080f2d2ae3ef0397c21bd666f5ce4d31 & applied
aosp/977048)

Change-Id: I673581b0067b9a3f72dd68a3ab622c18183ebd2e
Merged-In: I673581b0067b9a3f72dd68a3ab622c18183ebd2e
2019-08-26 10:43:21 -07:00
Kiyoung Kim
9b9ed234cb Revert "Merge "NetworkStackClient: Refactor network stack process interaction""
This reverts commit 049c9b40bae19dc78a882c9cf38290a2f3daf1da.

Reason for revert: b/140006229

Change-Id: I4cd4cd6919c0206b6023f744fe889fa0404365d6
2019-08-26 05:25:22 +00:00
Roshan Pius
049c9b40ba Merge "NetworkStackClient: Refactor network stack process interaction"
am: 764a90c200

Change-Id: Ib6cc552495c8b76f71f158b7f46525d1ff89c357
2019-08-25 21:08:56 -07:00
Xin Li
a770df1d2e DO NOT MERGE - Merge build QP1A.190711.019 into stage-aosp-master
Bug: 139893257
Change-Id: I94fce9c5c0b35cbb88ee27fa4cd037927964d2cd
2019-08-24 05:22:23 +00:00
Roshan Pius
15b5a03ef6 NetworkStackClient: Refactor network stack process interaction
Refactor NetworkStackClient class to move the module service binding &
network stack process death monitoring to a separate class. This class
will only instantiated in the SystemServer process.
The new class |SystemServerToNetworkStackConnector| will be used from
the client classes corresponding to each module running on the network
stack process (NetworkStackClient, WifiStackClient, etc)

This has 2 main advantages:
a) Reduces code duplication (Otherwise the various Client classes need
to replicate the service bindding & process death monitoring).
b) Central crash recovery for the network stack process (Otherwise the
various Client classes will trigger multiple recovery for a single
network stack process crash).

Bug: 135679762
Test: Device boots up & connects to wifi networks.
(cherry-picked from 7e6f5f5e080f2d2ae3ef0397c21bd666f5ce4d31 & applied
aosp/977048)

Change-Id: I673581b0067b9a3f72dd68a3ab622c18183ebd2e
Merged-In: I673581b0067b9a3f72dd68a3ab622c18183ebd2e
2019-08-23 10:40:07 -07:00
atrost
499d4bff66 Start platform compat service eariler.
It's needed by ActivityManager and PackageManager.
Also use a constant in Context for the name.

Test: flashed device with ag/9025572 and ag/9204795 and the platfrom
compat was accessible.
Bug: 137769727

Change-Id: Ie1130a3f0bdd1769fe0755db0089702ea64d9db6
Merged-In: Ie1130a3f0bdd1769fe0755db0089702ea64d9db6
2019-08-19 16:10:47 +00:00
atrost
8266ae32ba Start platform compat service eariler.
It's needed by ActivityManager and PackageManager.
Also use a constant in Context for the name.

Test: flashed device with ag/9025572 and ag/9204795 and the platfrom
compat was accessible.
Bug: 137769727
Change-Id: Ie1130a3f0bdd1769fe0755db0089702ea64d9db6
Merged-In: Ie1130a3f0bdd1769fe0755db0089702ea64d9db6
2019-08-19 16:10:31 +00:00
Svet Ganov
359a9d999b [DO NOT MERGE] Don't drop restricted permissions on upgrade
Restricted permissions cannot be held until whitelisted. In
a P -> Q upgrade we grandfather all restricted permissions.
However, the whitelisting code runs after the internal update
of permission happens for the first time resulting in a
revocation of the restricted permissions we were about to
grandfather.

The fix is to not deal with restricted permission when updating
the permissions state until the permission controller has run
the grandfathering logic and once the latter happens we do run
the permission update logic again to properly handle the
restricted permissions.

Bug: 138263882

Test: atest CtsPermissionTestCases
      atest CtsPermission2TestCases
      atest CtsAppSecurityHostTestCases:android.appsecurity.cts.PermissionsHostTest
      P -> Q upgrade preserves grandfathered restricted permissions
      P -> Bad Q build -> Q fixes up broken fixed restricted permissions

Change-Id: Iaef80426bf50181df93d1380af1d0855340def8e
(cherry picked from commit 0b41c8940a44a9eff4b277ce019a1ffdb3a44b7e)
2019-07-28 22:26:05 +00:00
Andrei Onea
4fd8dabd52 resolve merge conflicts of 130e0ade7b3ed33038518c9eb8329cbee066ef2a to stage-aosp-master
Bug: None
Test: I solemnly swear I tested this conflict resolution.
Change-Id: Ie8cfba397930a1bd5ec947f4834478bb629fa640
Merged-In: I19e5fbfefcf59e0b53b197ea8e9e3cb78439b4c4
2019-07-25 18:17:30 +00:00
Andrei Onea
6cd9d4d18e Make PlatformCompat a Binder class
This allows PlatformCompat to be called from anywhere in the platform.
In follow-up CLs, we'll define permissions for each method and/or
filtering rules to prevent abuse from apps.

Test: m
Bug: 137769727
Change-Id: I19e5fbfefcf59e0b53b197ea8e9e3cb78439b4c4
Merged-In: I19e5fbfefcf59e0b53b197ea8e9e3cb78439b4c4
2019-07-25 12:38:04 +00:00
Patrick Baumann
a848a8ec14 Call ActivityManagerService.enterSafeMode
This fixes the accidental removal (change ID
If2e6afe21f6efcb141f3a4428ff9154b68f08a1d)
of a call to ActivityManagerService.enterSafeMode, ensuring that
when the rest of the device is in safe mode, ActivityManagerService
and PackageManagerService are made aware of it and properly filter
app launches.

Fixes: 137052912
Test: manual; safe mode correctly blocks 3p apps
Change-Id: Ie2caf6d2fd74b241927a245393fb31658201962f
Merged-In: Ie2caf6d2fd74b241927a245393fb31658201962f
2019-07-12 19:51:06 +00:00
Neil Fuller
8f8f4da0ca Merge "Remove the ability to turn off TimeDetectorService"
am: 71fd6f0113

Change-Id: I8b32782038657c504d30a2c4b1db1c4985546ed3
2019-07-03 17:20:50 -07:00
Neil Fuller
e9efed97f7 Remove the ability to turn off TimeDetectorService
Remove the ability to turn off TimeDetectorService. After
http://r.android.com/1000492 it will be required in all cases.

Also remove [Old|New]NetworkTimeUpdateService as the expected
changes have not been implemented.

Bug: 133492648
Test: build only
Merged-In: Iad7ff59b19fa54750831819c68b7b733e5763902
Change-Id: Iad7ff59b19fa54750831819c68b7b733e5763902
2019-07-02 12:04:24 +00:00
TreeHugger Robot
cfa47f6183 Merge "Call ActivityManagerService.enterSafeMode" into qt-dev 2019-06-30 02:33:16 +00:00
Patrick Baumann
876a733e71 Call ActivityManagerService.enterSafeMode
This fixes the accidental removal (change ID
Ibe849f56f5fe8af1415dc6c85b484d0edca518ec)
of a call to ActivityManagerService.enterSafeMode, ensuring that
when the rest of the device is in safe mode, ActivityManagerService
and PackageManagerService are made aware of it and properly filter
app launches.

Fixes: 129781631
Test: manual; safe mode correctly blocks 3p apps
Change-Id: Ie2caf6d2fd74b241927a245393fb31658201962f
2019-06-28 19:41:04 +00:00
Zimuzo
ab2fc348fd Pause watchdog triggering on the main thread during package scan
Similar to I3876c41e6d0e41d044a5b1d5e57f894c7fb4fb0e and
I69067fbbb8be4e421918c18b67269044fab51b3e where we pause
the watchdog because dexopting and moving A/B artifacts can take a while,
here scanning packages can take a long time depending on the number of
apps installed on the device.

Bug: 135103243
Test: Manually tested by adding an artificial sleep in
PackageManagerService#main and verified that watchdog was not triggered

Change-Id: Ia5b2b5741194a33f7cd09e79c0904696ce546026
Merged-In: Ia5b2b5741194a33f7cd09e79c0904696ce546026
2019-06-14 16:07:51 +00:00
Zimuzo
f3c4614d1f Pause watchdog triggering on the main thread during OtaDexoptService
Similar to I3876c41e6d0e41d044a5b1d5e57f894c7fb4fb0e where we pause
the watchdog because dexopting can take a while, here moving A/B
artificats can take a long time.

Bug: 134062700
Test: Manually tested by adding an artificial sleep in
OtaDexoptService#main and verified that watchdog was not triggered

Change-Id: I69067fbbb8be4e421918c18b67269044fab51b3e
2019-05-31 12:46:12 +01:00
TreeHugger Robot
70e0438d59 Merge "Force system ApplicationInfo update and notify DisplayManager" into qt-dev 2019-05-20 19:12:20 +00:00
Hayden Gomes
013a7f8dce Removing emulator check for starting BluetoothService
This check was intended to be removed once we had the ability to add the
Bluetooth systemFeature check. Removing it now so emulator can enable
bluetooth

Bug: 132627197
Test: Built and ran emulator locally to confirm BTService running
Change-Id: I3e0606e0e4154299e65e5f62d8a1720922d796ad
2019-05-14 18:48:30 -07:00
Zimuzo Ezeozue
3dc28cb1dc Merge "Allow pausing Watchdog on the current thread" into qt-dev 2019-05-14 14:55:06 +00:00
Rubin Xu
c3c30eefb2 Merge "Bump several device admin notifications to high priority" into qt-dev 2019-05-13 10:30:25 +00:00
William Hester
a47584af34 Merge "Start THM outside of the frp block" into qt-dev 2019-05-10 20:31:04 +00:00
Zimuzo
2a05039b44 Allow pausing Watchdog on the current thread
Since we start the watchdog early during boot, we may have some false
positives where the watchdog thinks a thread is blocked but it
is just running a long task. This cl enables us pause the watchdog
triggering for the current thread and resume the triggering after
the long running task. An alternative would be pausing for a specified
duration without an explicit resume but that may be difficult
to find an upper bound for tasks across all devices.

For now the primary long running task is dexopting which happens on
the main thread during boot. We pause the watchdog triggering on the
main thread and resume afterwards.

Test: Verified with logs that pausing the Watchdog pauses triggering
and resuming resumes triggering
Bug: 132076426

Change-Id: I3876c41e6d0e41d044a5b1d5e57f894c7fb4fb0e
2019-05-10 16:46:38 +01:00
Rubin Xu
897750a79b Bump several device admin notifications to high priority
The following device admin related events now generate interruptive notifications:
1. Admin-triggered remote bug report collections (requires user action)
2. Remote work profile wipe - post wipe notification
3. The enabling of Network logging
4. Admin remotely installs/removes an APK
5. Work profile needs unlocking after boot

Test: manual
Change-Id: If5a51123c05b15e544a31ac7ec6b42ec831a1ccc
Fix: 130623009
Fix: 120770584
Fix: 118810015
2019-05-09 16:35:16 +01:00
Mohammad Samiul Islam
bdccb7501b Revert "Populate active apexes cache in a background thread"
This reverts commit 97fc6d9c29dd08f75f4f7d82d17d9f422ec44147.

Reason for revert: b/132236259

Change-Id: I5270140580ebad16a9dc1db6b2e5f9faa977f54a
Bug: 132236259
2019-05-08 14:44:15 +00:00
William Hester
bbfd15a957 Start THM outside of the frp block
Starting TestHarnessModeService outside of the FRP block will allow OEMs
to provide their own implementation of
PersistentDataBlockManagerInternal in LocalServices, which will allow
them to satisfy all CTS requirements even without supporting Factory
Reset Protection.

Bug: 131439285
Test: make && adb shell cmd testharness enable
Change-Id: If3ea192a22105716cab1dbed832f8c20b51058b7
(cherry picked from commit 87ac4ea4a586457f84a9534526486ace4152b635)
2019-05-07 22:55:02 +00:00
Winson
72dbe7e6f3 Force system ApplicationInfo update and notify DisplayManager
Propagates any changes to the display config made inside any
framework overlay. Notably any display cutout adjustments.

Partial revert of ag/I844de9e09eb1464ae112e1b480d21cf662a026e0
with the OMS method moved into AMS.

Bug: 130444380

Test: manual test with simulated cutout on blueline device
Change-Id: Ifa24954352fa5e92816baa8d669b9abedc4f4ab8
2019-05-06 11:23:52 -07:00
Nikita Ioffe
97fc6d9c29 Populate active apexes cache in a background thread
* Split populateActivePackagesCacheIfNeeded into populateApexFilesCache
  and parseApexFiles.
* populateApexFilesCache does an IPC to apexd , while parseApexFiles
  does the heavy lifting of parsing apex files and extracting signature;
* Split is required because during PackageManagerService boot-sequence
  we need to know list of apex packages, and in order to get that
  information we don't need to parse apex files.
* Both populateApexFilesCache and parseApexFiles are enquened to run in
  ApexManagers own HandlerThread so that they don't block other tasks in
  system servers boot sequence.
* Changed ApexManager to use CountDownLatches instead of locks to
  synchronize between thread, as they are more modern and easier to use.

Also did some perf testing on blueline by running
atest google/perf/boottime/boottime-test:

Without https://googleplex-android-review.git.corp.google.com/q/Ic7e5e14ed2d02d3685fd39bb70bc9423ae78f18e:
SystemServerTiming_StartPackageManagerService_avg: 2767.2

With what is currently in qt-dev:
SystemServerTiming_StartPackageManagerService_avg: 3728.4444444444443

Without splitting into populateApexFilesCache and parseApexFiles:
SystemServerTiming_StartPackageManagerService_avg: 3247.5

This change:
SystemServerTiming_StartPackageManagerService_avg: 2894.7

Test: device boots
Test: atest CtsStagedInstallHostTestCases
Bug: 131611765
Change-Id: I980700cd785c22d7f1ace294bb5456056d68baaa
2019-04-30 17:52:03 +01:00
Zimuzo
b065b15a90 Start Watchdog early during boot
The system server can deadlock without making progress during early
boot. If this happens without crashing, no rollback mechanisms will be
triggered because there's no crash. With this change, if the system
server deadlocks early during boot, the Watchdog will crash the
system server, frequent enough crashes (4 in 4 mins) will trigger
the native watchdog and cause apexd to rollback any staged mainline updates.

Bug: 129597207
Test: Boots fine and logs indicate threads and monitors are registered
properly. Also adding an artificial sleep to the PackageManagerService
during boot crashes the system_server. At the moment, this is not
detected by the native watchdog because the default_timeout of 60
seconds before crashing the system_server never triggers the native
watchdog crash frequency threshold. Will fix in later cl.

Change-Id: I956a263e96d17d55bc512a5eab905cd2a14a7abb
2019-04-25 18:39:12 +01:00
Tim Murray
263e639229 Merge "DO NOT MERGE: disable iorap in q" into qt-dev 2019-04-18 15:18:48 +00:00
Peiyong Lin
c95354bc9c [GPU Service] Implement GPU service.
GPU Service is used to monitor all GPU and graphics driver related features.
This patch implements GPU service into System Server, and implements
functionality to extract the whitelist out of game driver package when the
package is upgraded or removed. This will move the whitelist processing off
critical path when app launches.

BUG: 123290424
Test: Build, flash and boot. Verify by upgrading game driver apk.
Change-Id: I563a138bfe0c4c1bb17ed28dab5d6a8df244021d
Merged-In: I563a138bfe0c4c1bb17ed28dab5d6a8df244021d
2019-04-17 20:18:09 -07:00
Tim Murray
0a069df47f DO NOT MERGE: disable iorap in q
iorap is not shipping in Q.

Test: boots, works
bug 72170747

Change-Id: Iabc63f880df24781fa9c6e0f4532a8f37c8d89d5
2019-04-17 18:22:07 -07:00
Felipe Leme
c743634138 Grant clipboard access to the Augmented Autofill service.
Test: atest CtsAutoFillServiceTestCases:android.autofillservice.cts.augmented.ClipboardAccessTest
Fixes: 130166067

Change-Id: I5d55a5921bb961565d6e9cb535927df80c67f79b
2019-04-12 09:22:10 -07:00
Svetoslav Ganov
9dfc48d06e Merge "Restricted permission mechanism - framework" into qt-dev 2019-04-08 14:54:03 +00:00
Svet Ganov
d8eb8b2690 Restricted permission mechanism - framework
This change adds a mechanism for restricting permissions (only runtime
for now), so that an app cannot hold the permission if it is not white
listed. The whitelisting can happen at install or at any later point.

There are three whitelists: system: OS managed with default grants
and role holders being on it; upgrade: only OS puts on this list
apps when upgrading from a pre to post restriction permission database
version and OS and installer on record can remove; installer: only
the installer on record can add and remove (and the system of course).

Added a permission policy service that sits on top of permissions
and app ops and is responsible to sync between permissions and app
ops when there is an interdependecy in any direction.

Added versioning to the runtime permissions database to allow operations
that need to be done once on upgrade such as adding all permissions held
by apps pre upgrade to the upgrade whitelist if the new permisison version
inctroduces a new restricted permission. The upgrade logic is in the
permission controller and we will eventually put the default grants there.

NOTE: This change is reacting to a VP feedback for how we would handle
SMS/CallLog restriction as we pivoted from role based approach to roles
for things the user would understand plus whitelist for everything else.
This would also help us roll out softly the storage permisison as there
is too much churm coming from developer feedback.

Exempt-From-Owner-Approval: trivial change due to APi adjustment

Test: atest CtsAppSecurityHostTestCases:android.appsecurity.cts.PermissionsHostTest
Test: atest CtsPermissionTestCases
Test: atest CtsPermission2TestCases
Test: atest RoleManagerTestCases

bug:124769181

Change-Id: Ic48e3c728387ecf02f89d517ba1fe785ab9c75fd
2019-04-07 22:39:54 -07:00
Robert Berry
835123dba2 Add system captions manager service
This service connects to a remote system captions manager service. This
service is responsible for enabling system captions when the user
requests them. As the system binds to it, this service will be
persistent.

Cherry pick from ag/6761232

Bug: 128925852
Test: Manual. I created an implementation of the service.
Merged-In: Iafde1bb68f4754d8167624f47c6833d43c0ec336
Change-Id: Iafde1bb68f4754d8167624f47c6833d43c0ec336
2019-04-07 15:09:06 +00:00
Chalard Jean
cf7b25e013 Merge "Cleanup SystemReady in the network stack" am: e0ef7ce4f7 am: 4b130e8567
am: aafb4b0576

Change-Id: I0e57236ede9dd176cd30ea034d05205776662c91
2019-04-01 18:13:24 -07:00
Chalard Jean
d74219ba4a Cleanup SystemReady in the network stack
The system server (in SystemServer.java) defines the boot
sequence, during which an event called SystemReady happens.
This corresponds to a time when critical system services
that are depended upon by other components in the system
server are ready to handle requests from their dependencies.
Some system services are listening to this event to defer
initializations that depend on the critical services.

Because the network stack is only started after SystemReady,
there is no way any NetworkMonitor may be started before
SystemReady. Remove the associated mechanism.

Fix: 129376083
Test: FrameworksNetTests
Change-Id: I071eeb10d0b7c4f71af6653d322c7b442b2cc7ee
2019-04-01 13:32:25 +09:00
Po-Chien Hsueh
4e908c24ca API review followup: DynamicAndroidClient
Some API changes per API reivew:
- Move DynamicAndroidClient and ~Manager to android.os.image.
- Rename them to DynamicSystemClient and ~Manager.
- Rename permission MANAGE_DYNAMIC_ANDROID to MANAGE_DYNAMIC_SYSTEM
- Corresponding changes in the installation service.
- Corresponding changes in privapp-permissions-platform.xml.
- Add missing annotations.
- Change setOnStatusChangedListener's parameters order.
- Improve documentations.
- Re-generate api/system-current.txt.

Bug: 126613281
Test: adb shell am
Change-Id: Ia920e9ccf6de1dbbd38c52910cb72cb81b9b5b32
2019-03-21 17:25:59 +08:00
Alex Salo
4c005528df Merge "Don't start AttentionService if not configured" 2019-03-20 16:20:15 +00:00
Xiao Ma
2ce206c82d Merge "Move the IpMemoryStore to the network stack." am: 93bf5ef495 am: 5db1518bfa
am: 3176d57308

Change-Id: I243056012d2f099d96a33657c0eb63a5b66a2cfe
2019-03-19 06:54:43 -07:00
Alex Salo
7a6e3a63a1 Don't start AttentionService if not configured
Bug: 126472143, 111939367
Test: manually

Change-Id: Iffbda6c38a3aca88599bc544c079cc8b6e39f2ff
2019-03-18 14:40:52 -07:00
Chalard Jean
952135122d Move the IpMemoryStore to the network stack.
Test: atest FrameworksNetTests
Change-Id: Ic5bd6ff54b09a6fa92b6863f240a5b053011acb6
2019-03-18 11:33:17 +09:00
Remi NGUYEN VAN
e2993672d5 Merge "Initialize the NetworkStack before WiFi" am: 6d0186de88 am: b07d868c53
am: 991b27b67b

Change-Id: Ia92b6a8b9c2d23b5ea496fa0eca74de3292abd90
2019-03-14 21:12:47 -07:00
Remi NGUYEN VAN
389443ceda Initialize the NetworkStack before WiFi
The NetworkStack needs to be marked as start requested before any client
can use it from the system server, so it knows to queue requests until
it actually comes up.

This fixes a bug introduced in commit:
I93315ad31925bd436e21d1eabb21d5967e6aae60
where a client trying to use the network stack in the system server
before ActivityManager.systemReady() could block and eventually timeout,
resulting in a null INetworkStackConnector.

Test: booted, WiFi working
Bug: 128620654

Change-Id: Ieca2657373eba78195b387fb266fa0424fce8ada
2019-03-15 08:24:07 +09:00
Remi NGUYEN VAN
e5c398c799 Merge "Move NetworkStack start to AM.systemReady" am: f9cca7dcc2 am: 1091513f93
am: 8f2af18c51

Change-Id: Ibdeef12797eb06fd67dc132e2f3e5a6ad06b38a1
2019-03-11 22:56:17 -07:00
Remi NGUYEN VAN
f9cca7dcc2 Merge "Move NetworkStack start to AM.systemReady" 2019-03-12 05:27:33 +00:00
Remi NGUYEN VAN
c7054c5e20 Move NetworkStack start to AM.systemReady
In practice the NetworkStack was not started after
ActivityManager#systemReady, since ActivityManager was only scheduling
the start (mPendingStarts).
Requesting the start too early causes issues for the PackageManager to
install updates/rollbacks.

Test: flashed AOSP and internal builds, WiFi working
Bug: 128331883
Change-Id: I93315ad31925bd436e21d1eabb21d5967e6aae60
2019-03-12 04:53:11 +00:00