Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit be11ab63 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Cache PM data in DPGP

DefaultPermissionGrantPolicy is run on user startup but also in other
cases. On user creation it loads a lot of data from the PackageManager
and applies a lot of permission state.

This change adds an abstraction layer to the
DefaultPermissionGrantPolicy that caches and delays the PackageManager
calls on user creation. As a side-effect it also duplicates the state by
UID as all runtime permission state is by UID.

If this is not for user creation NO_PM_CACHE is used which just forwards
the calls directly to PackageManager.

This carries around the PackageManagerWrapper to all methods which
causes a lot of trivial churn. Other options considered:
- Make it a field in DefaultPermissionGrantPolicy but this would require
  outside code to create multiple DefaultPermissionGrantPolicy for
  different use cases
- Make it a Thread-Local. This is brittle and causes overhead

Also: All app-op setting was removed as this is automatically handled by
PermissonPolicyService

Test: Created user: Before 800 to 1200 ms after ~450 ms spent in
      DefaultPermissionGrantPolicy on sargo-userdebug
Fixes: 150405484
Change-Id: If77214a193a39fec2f311a3aea324ef07c2dfb42
Merged-In: If77214a193a39fec2f311a3aea324ef07c2dfb42
parent 10f48bb6
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment