Merge "Extend isModule check for apk-in-apex" into rvc-dev am: e0b24a3fee
Change-Id: I520c343027d61b59ed0aaf39dc7ddbd32bde6b69
This commit is contained in:
@@ -25,6 +25,7 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.pm.PackageInstaller;
|
import android.content.pm.PackageInstaller;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.PackageManagerInternal;
|
||||||
import android.content.pm.VersionedPackage;
|
import android.content.pm.VersionedPackage;
|
||||||
import android.content.rollback.PackageRollbackInfo;
|
import android.content.rollback.PackageRollbackInfo;
|
||||||
import android.content.rollback.RollbackInfo;
|
import android.content.rollback.RollbackInfo;
|
||||||
@@ -41,10 +42,13 @@ import android.util.Slog;
|
|||||||
|
|
||||||
import com.android.internal.annotations.GuardedBy;
|
import com.android.internal.annotations.GuardedBy;
|
||||||
import com.android.internal.util.FrameworkStatsLog;
|
import com.android.internal.util.FrameworkStatsLog;
|
||||||
|
import com.android.server.LocalServices;
|
||||||
import com.android.server.PackageWatchdog;
|
import com.android.server.PackageWatchdog;
|
||||||
import com.android.server.PackageWatchdog.FailureReasons;
|
import com.android.server.PackageWatchdog.FailureReasons;
|
||||||
import com.android.server.PackageWatchdog.PackageHealthObserver;
|
import com.android.server.PackageWatchdog.PackageHealthObserver;
|
||||||
import com.android.server.PackageWatchdog.PackageHealthObserverImpact;
|
import com.android.server.PackageWatchdog.PackageHealthObserverImpact;
|
||||||
|
import com.android.server.pm.ApexManager;
|
||||||
|
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -71,6 +75,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
|||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
|
private final ApexManager mApexManager;
|
||||||
private final File mLastStagedRollbackIdsFile;
|
private final File mLastStagedRollbackIdsFile;
|
||||||
// Staged rollback ids that have been committed but their session is not yet ready
|
// Staged rollback ids that have been committed but their session is not yet ready
|
||||||
@GuardedBy("mPendingStagedRollbackIds")
|
@GuardedBy("mPendingStagedRollbackIds")
|
||||||
@@ -85,6 +90,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
|||||||
dataDir.mkdirs();
|
dataDir.mkdirs();
|
||||||
mLastStagedRollbackIdsFile = new File(dataDir, "last-staged-rollback-ids");
|
mLastStagedRollbackIdsFile = new File(dataDir, "last-staged-rollback-ids");
|
||||||
PackageWatchdog.getInstance(mContext).registerHealthObserver(this);
|
PackageWatchdog.getInstance(mContext).registerHealthObserver(this);
|
||||||
|
mApexManager = ApexManager.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -302,6 +308,18 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
|
|||||||
* Returns true if the package name is the name of a module.
|
* Returns true if the package name is the name of a module.
|
||||||
*/
|
*/
|
||||||
private boolean isModule(String packageName) {
|
private boolean isModule(String packageName) {
|
||||||
|
// Check if the package is an APK inside an APEX. If it is, use the parent APEX package when
|
||||||
|
// querying PackageManager.
|
||||||
|
PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);
|
||||||
|
AndroidPackage apkPackage = pmi.getPackage(packageName);
|
||||||
|
if (apkPackage != null) {
|
||||||
|
String apexPackageName = mApexManager.getActiveApexPackageNameContainingPackage(
|
||||||
|
apkPackage);
|
||||||
|
if (apexPackageName != null) {
|
||||||
|
packageName = apexPackageName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PackageManager pm = mContext.getPackageManager();
|
PackageManager pm = mContext.getPackageManager();
|
||||||
try {
|
try {
|
||||||
return pm.getModuleInfo(packageName, 0) != null;
|
return pm.getModuleInfo(packageName, 0) != null;
|
||||||
|
|||||||
Reference in New Issue
Block a user