Merge "Retrieve direct boot aware activities." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
dc539b6561
@@ -93,7 +93,6 @@ import android.os.SystemClock;
|
|||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings.Global;
|
import android.provider.Settings.Global;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.util.ArrayMap;
|
|
||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
import android.util.KeyValueListParser;
|
import android.util.KeyValueListParser;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
@@ -205,6 +204,10 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
*/
|
*/
|
||||||
private static final long WAIT_FOR_ADMIN_DATA_TIMEOUT_MS = 10_000;
|
private static final long WAIT_FOR_ADMIN_DATA_TIMEOUT_MS = 10_000;
|
||||||
|
|
||||||
|
private static final int HEADLESS_APP_CHECK_FLAGS =
|
||||||
|
PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
|
||||||
|
| PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS;
|
||||||
|
|
||||||
// To name the lock for stack traces
|
// To name the lock for stack traces
|
||||||
static class Lock {}
|
static class Lock {}
|
||||||
|
|
||||||
@@ -234,7 +237,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
* disabled). Presence in this map indicates that the app is a headless system app.
|
* disabled). Presence in this map indicates that the app is a headless system app.
|
||||||
*/
|
*/
|
||||||
@GuardedBy("mHeadlessSystemApps")
|
@GuardedBy("mHeadlessSystemApps")
|
||||||
private final ArrayMap<String, Boolean> mHeadlessSystemApps = new ArrayMap<>();
|
private final ArraySet<String> mHeadlessSystemApps = new ArraySet<>();
|
||||||
|
|
||||||
private final CountDownLatch mAdminDataAvailableLatch = new CountDownLatch(1);
|
private final CountDownLatch mAdminDataAvailableLatch = new CountDownLatch(1);
|
||||||
|
|
||||||
@@ -1123,7 +1126,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
|
|
||||||
private boolean isHeadlessSystemApp(String packageName) {
|
private boolean isHeadlessSystemApp(String packageName) {
|
||||||
synchronized (mHeadlessSystemApps) {
|
synchronized (mHeadlessSystemApps) {
|
||||||
return mHeadlessSystemApps.containsKey(packageName);
|
return mHeadlessSystemApps.contains(packageName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1695,9 +1698,8 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
PackageInfo pi = mPackageManager.getPackageInfoAsUser(packageName,
|
PackageInfo pi = mPackageManager.getPackageInfoAsUser(
|
||||||
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
|
packageName, HEADLESS_APP_CHECK_FLAGS, userId);
|
||||||
userId);
|
|
||||||
evaluateSystemAppException(pi);
|
evaluateSystemAppException(pi);
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
synchronized (mHeadlessSystemApps) {
|
synchronized (mHeadlessSystemApps) {
|
||||||
@@ -1709,15 +1711,16 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
/** Returns true if the exception status changed. */
|
/** Returns true if the exception status changed. */
|
||||||
private boolean evaluateSystemAppException(@Nullable PackageInfo pkgInfo) {
|
private boolean evaluateSystemAppException(@Nullable PackageInfo pkgInfo) {
|
||||||
if (pkgInfo == null || pkgInfo.applicationInfo == null
|
if (pkgInfo == null || pkgInfo.applicationInfo == null
|
||||||
|| !pkgInfo.applicationInfo.isSystemApp()) {
|
|| (!pkgInfo.applicationInfo.isSystemApp()
|
||||||
|
&& !pkgInfo.applicationInfo.isUpdatedSystemApp())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
synchronized (mHeadlessSystemApps) {
|
synchronized (mHeadlessSystemApps) {
|
||||||
if (pkgInfo.activities == null || pkgInfo.activities.length == 0) {
|
if (pkgInfo.activities == null || pkgInfo.activities.length == 0) {
|
||||||
// Headless system app.
|
// Headless system app.
|
||||||
return mHeadlessSystemApps.put(pkgInfo.packageName, true) == null;
|
return mHeadlessSystemApps.add(pkgInfo.packageName);
|
||||||
} else {
|
} else {
|
||||||
return mHeadlessSystemApps.remove(pkgInfo.packageName) != null;
|
return mHeadlessSystemApps.remove(pkgInfo.packageName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1758,8 +1761,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
private void loadHeadlessSystemAppCache() {
|
private void loadHeadlessSystemAppCache() {
|
||||||
Slog.d(TAG, "Loading headless system app cache. appIdleEnabled=" + mAppIdleEnabled);
|
Slog.d(TAG, "Loading headless system app cache. appIdleEnabled=" + mAppIdleEnabled);
|
||||||
final List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
|
final List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
|
||||||
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
|
HEADLESS_APP_CHECK_FLAGS, UserHandle.USER_SYSTEM);
|
||||||
UserHandle.USER_SYSTEM);
|
|
||||||
final int packageCount = packages.size();
|
final int packageCount = packages.size();
|
||||||
for (int i = 0; i < packageCount; i++) {
|
for (int i = 0; i < packageCount; i++) {
|
||||||
PackageInfo pkgInfo = packages.get(i);
|
PackageInfo pkgInfo = packages.get(i);
|
||||||
@@ -1868,7 +1870,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
|||||||
synchronized (mHeadlessSystemApps) {
|
synchronized (mHeadlessSystemApps) {
|
||||||
for (int i = mHeadlessSystemApps.size() - 1; i >= 0; --i) {
|
for (int i = mHeadlessSystemApps.size() - 1; i >= 0; --i) {
|
||||||
pw.print(" ");
|
pw.print(" ");
|
||||||
pw.print(mHeadlessSystemApps.keyAt(i));
|
pw.print(mHeadlessSystemApps.valueAt(i));
|
||||||
pw.println(",");
|
pw.println(",");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user