"...0d0cea2424ae97b27447dc64a7dbfae83c036c45b403392f0e8ba.png" did not exist on "edc6fcedf26083b41ab3ff2859af86efd60cfb9b"
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
Loading
Please register or sign in to comment