[pm] add IBackupManager to the pm injector
BUG: 199937291 Test: manual Change-Id: Id5624b02cf05fe1765ca4f137b353060e9719f3a
This commit is contained in:
@@ -128,7 +128,6 @@ import android.os.Environment;
|
||||
import android.os.Message;
|
||||
import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.Trace;
|
||||
import android.os.UserHandle;
|
||||
@@ -207,6 +206,7 @@ final class InstallPackageHelper {
|
||||
private final PackageDexOptimizer mPackageDexOptimizer;
|
||||
private final PackageAbiHelper mPackageAbiHelper;
|
||||
private final ViewCompiler mViewCompiler;
|
||||
private final IBackupManager mIBackupManager;
|
||||
|
||||
// TODO(b/198166813): remove PMS dependency
|
||||
InstallPackageHelper(PackageManagerService pm, AppDataHelper appDataHelper) {
|
||||
@@ -225,6 +225,7 @@ final class InstallPackageHelper {
|
||||
mPackageDexOptimizer = pm.mInjector.getPackageDexOptimizer();
|
||||
mPackageAbiHelper = pm.mInjector.getAbiHelper();
|
||||
mViewCompiler = pm.mInjector.getViewCompiler();
|
||||
mIBackupManager = pm.mInjector.getIBackupManager();
|
||||
}
|
||||
|
||||
InstallPackageHelper(PackageManagerService pm) {
|
||||
@@ -689,9 +690,7 @@ final class InstallPackageHelper {
|
||||
* Returns whether the restore successfully completed.
|
||||
*/
|
||||
private boolean performBackupManagerRestore(int userId, int token, PackageInstalledInfo res) {
|
||||
IBackupManager bm = IBackupManager.Stub.asInterface(
|
||||
ServiceManager.getService(Context.BACKUP_SERVICE));
|
||||
if (bm != null) {
|
||||
if (mIBackupManager != null) {
|
||||
// For backwards compatibility as USER_ALL previously routed directly to USER_SYSTEM
|
||||
// in the BackupManager. USER_ALL is used in compatibility tests.
|
||||
if (userId == UserHandle.USER_ALL) {
|
||||
@@ -702,8 +701,8 @@ final class InstallPackageHelper {
|
||||
}
|
||||
Trace.asyncTraceBegin(TRACE_TAG_PACKAGE_MANAGER, "restore", token);
|
||||
try {
|
||||
if (bm.isUserReadyForBackup(userId)) {
|
||||
bm.restoreAtInstallForUser(
|
||||
if (mIBackupManager.isUserReadyForBackup(userId)) {
|
||||
mIBackupManager.restoreAtInstallForUser(
|
||||
userId, res.mPkg.getPackageName(), token);
|
||||
} else {
|
||||
Slog.w(TAG, "User " + userId + " is not ready. Restore at install "
|
||||
|
||||
@@ -57,6 +57,7 @@ import android.app.ApplicationPackageManager;
|
||||
import android.app.IActivityManager;
|
||||
import android.app.admin.IDevicePolicyManager;
|
||||
import android.app.admin.SecurityLog;
|
||||
import android.app.backup.IBackupManager;
|
||||
import android.app.role.RoleManager;
|
||||
import android.compat.annotation.ChangeId;
|
||||
import android.compat.annotation.EnabledAfter;
|
||||
@@ -1519,7 +1520,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
new DefaultSystemWrapper(),
|
||||
LocalServices::getService,
|
||||
context::getSystemService,
|
||||
(i, pm) -> new BackgroundDexOptService(i.getContext(), i.getDexManager(), pm));
|
||||
(i, pm) -> new BackgroundDexOptService(i.getContext(), i.getDexManager(), pm),
|
||||
(i, pm) -> IBackupManager.Stub.asInterface(ServiceManager.getService(
|
||||
Context.BACKUP_SERVICE)));
|
||||
|
||||
if (Build.VERSION.SDK_INT <= 0) {
|
||||
Slog.w(TAG, "**** ro.build.version.sdk not set!");
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.server.pm;
|
||||
|
||||
import android.app.ActivityManagerInternal;
|
||||
import android.app.backup.IBackupManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
@@ -135,6 +136,7 @@ public class PackageManagerServiceInjector {
|
||||
mDomainVerificationManagerInternalProducer;
|
||||
private final Singleton<Handler> mHandlerProducer;
|
||||
private final Singleton<BackgroundDexOptService> mBackgroundDexOptService;
|
||||
private final Singleton<IBackupManager> mIBackupManager;
|
||||
|
||||
PackageManagerServiceInjector(Context context, PackageManagerTracedLock lock,
|
||||
Installer installer, Object installLock, PackageAbiHelper abiHelper,
|
||||
@@ -170,7 +172,8 @@ public class PackageManagerServiceInjector {
|
||||
SystemWrapper systemWrapper,
|
||||
ServiceProducer getLocalServiceProducer,
|
||||
ServiceProducer getSystemServiceProducer,
|
||||
Producer<BackgroundDexOptService> backgroundDexOptService) {
|
||||
Producer<BackgroundDexOptService> backgroundDexOptService,
|
||||
Producer<IBackupManager> iBackupManager) {
|
||||
mContext = context;
|
||||
mLock = lock;
|
||||
mInstaller = installer;
|
||||
@@ -220,6 +223,7 @@ public class PackageManagerServiceInjector {
|
||||
domainVerificationManagerInternalProducer);
|
||||
mHandlerProducer = new Singleton<>(handlerProducer);
|
||||
mBackgroundDexOptService = new Singleton<>(backgroundDexOptService);
|
||||
mIBackupManager = new Singleton<>(iBackupManager);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -384,6 +388,10 @@ public class PackageManagerServiceInjector {
|
||||
return mBackgroundDexOptService.get(this, mPackageManager);
|
||||
}
|
||||
|
||||
public IBackupManager getIBackupManager() {
|
||||
return mIBackupManager.get(this, mPackageManager);
|
||||
}
|
||||
|
||||
/** Provides an abstraction to static access to system state. */
|
||||
public interface SystemWrapper {
|
||||
void disablePackageCaches();
|
||||
|
||||
Reference in New Issue
Block a user