Loading core/java/android/os/incremental/IncrementalManager.java +4 −9 Original line number Diff line number Diff line Loading @@ -304,20 +304,16 @@ public final class IncrementalManager { } /** * Called when a callback wants to stop listen to the loading progress of an installed package. * Decrease the count of the callbacks on the associated to the corresponding storage. * If the count becomes zero, unregister the storage listener. * Called to stop all listeners from listening to loading progress of an installed package. * @param codePath Path of the installed package * @return True if the package name and associated storage id are valid. False otherwise. */ public boolean unregisterLoadingProgressCallback(@NonNull String codePath, @NonNull IPackageLoadingProgressCallback callback) { public void unregisterLoadingProgressCallbacks(@NonNull String codePath) { final IncrementalStorage storage = openStorage(codePath); if (storage == null) { // storage does not exist, package not installed return false; return; } return mLoadingProgressCallbacks.unregisterCallback(storage, callback); mLoadingProgressCallbacks.cleanUpCallbacks(storage); } private static class LoadingProgressCallbacks extends IStorageLoadingProgressListener.Stub { Loading @@ -325,7 +321,6 @@ public final class IncrementalManager { private final SparseArray<RemoteCallbackList<IPackageLoadingProgressCallback>> mCallbacks = new SparseArray<>(); // TODO(b/165841827): disable callbacks when app state changes to fully loaded public void cleanUpCallbacks(@NonNull IncrementalStorage storage) { final int storageId = storage.getId(); final RemoteCallbackList<IPackageLoadingProgressCallback> callbacksForStorage; Loading services/core/java/android/content/pm/PackageManagerInternal.java +0 −22 Original line number Diff line number Diff line Loading @@ -996,28 +996,6 @@ public abstract class PackageManagerInternal { */ public abstract boolean isSuspendingAnyPackages(String suspendingPackage, int userId); /** * Register to listen for loading progress of an installed package. * @param packageName The name of the installed package * @param callback To loading reporting progress * @param userId The user under which to check. * @return Whether the registration was successful. It can fail if the package has not been * installed yet. */ public abstract boolean registerInstalledLoadingProgressCallback(@NonNull String packageName, @NonNull InstalledLoadingProgressCallback callback, int userId); /** * Unregister to stop listening to loading progress of an installed package * @param packageName The name of the installed package * @param callback To unregister * @return True if the callback is removed from registered callback list. False is the callback * does not exist on the registered callback list, which can happen if the callback has * already been unregistered. */ public abstract boolean unregisterInstalledLoadingProgressCallback(@NonNull String packageName, @NonNull InstalledLoadingProgressCallback callback); /** * Returns the string representation of a known package. For example, * {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard. Loading services/core/java/com/android/server/pm/IncrementalStates.java +0 −18 Original line number Diff line number Diff line Loading @@ -248,24 +248,6 @@ public final class IncrementalStates { } } /** * @return the current startable state. */ public boolean isStartable() { synchronized (mLock) { return mStartableState.isStartable(); } } /** * @return Whether the package is still being loaded or has been fully loaded. */ public boolean isLoading() { synchronized (mLock) { return mLoadingState.isLoading(); } } /** * @return all current states in a Parcelable. */ Loading services/core/java/com/android/server/pm/LauncherAppsService.java +0 −37 Original line number Diff line number Diff line Loading @@ -1316,10 +1316,6 @@ public class LauncherAppsService extends SystemService { } finally { mListeners.finishBroadcast(); } PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class); pmi.registerInstalledLoadingProgressCallback(packageName, new PackageLoadingProgressCallback(packageName, user), user.getIdentifier()); super.onPackageAdded(packageName, uid); } Loading Loading @@ -1542,38 +1538,5 @@ public class LauncherAppsService extends SystemService { checkCallbackCount(); } } class PackageLoadingProgressCallback extends PackageManagerInternal.InstalledLoadingProgressCallback { private String mPackageName; private UserHandle mUser; PackageLoadingProgressCallback(String packageName, UserHandle user) { super(mCallbackHandler); mPackageName = packageName; mUser = user; } @Override public void onLoadingProgressChanged(float progress) { final int n = mListeners.beginBroadcast(); try { for (int i = 0; i < n; i++) { IOnAppsChangedListener listener = mListeners.getBroadcastItem(i); BroadcastCookie cookie = (BroadcastCookie) mListeners.getBroadcastCookie(i); if (!isEnabledProfileOf(cookie.user, mUser, "onLoadingProgressChanged")) { continue; } try { listener.onPackageLoadingProgressChanged(mUser, mPackageName, progress); } catch (RemoteException re) { Slog.d(TAG, "Callback failed ", re); } } } finally { mListeners.finishBroadcast(); } } } } } services/core/java/com/android/server/pm/PackageManagerService.java +7 −53 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import static android.Manifest.permission.SET_HARMFUL_APP_WARNINGS; import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.MODE_IGNORED; import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.CATEGORY_BROWSABLE; import static android.content.Intent.CATEGORY_DEFAULT; import static android.content.Intent.CATEGORY_HOME; import static android.content.Intent.EXTRA_LONG_VERSION_CODE; Loading Loading @@ -68,11 +67,7 @@ import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_RESTORE; import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_SETUP; import static android.content.pm.PackageManager.INSTALL_STAGED; import static android.content.pm.PackageManager.INSTALL_SUCCEEDED; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; import static android.content.pm.PackageManager.MATCH_ALL; import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.MATCH_APEX; Loading Loading @@ -378,11 +373,6 @@ import com.android.server.pm.dex.DexManager; import com.android.server.pm.dex.DexoptOptions; import com.android.server.pm.dex.PackageDexUsage; import com.android.server.pm.dex.ViewCompiler; import com.android.server.pm.verify.domain.DomainVerificationManagerInternal; import com.android.server.pm.verify.domain.DomainVerificationService; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxy; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV1; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV2; import com.android.server.pm.parsing.PackageCacher; import com.android.server.pm.parsing.PackageInfoUtils; import com.android.server.pm.parsing.PackageParser2; Loading @@ -396,6 +386,11 @@ import com.android.server.pm.permission.LegacyPermissionManagerService; import com.android.server.pm.permission.Permission; import com.android.server.pm.permission.PermissionManagerService; import com.android.server.pm.permission.PermissionManagerServiceInternal; import com.android.server.pm.verify.domain.DomainVerificationManagerInternal; import com.android.server.pm.verify.domain.DomainVerificationService; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxy; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV1; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV2; import com.android.server.rollback.RollbackManagerInternal; import com.android.server.security.VerityUtils; import com.android.server.storage.DeviceStorageMonitorInternal; Loading @@ -405,7 +400,6 @@ import com.android.server.utils.Watchable; import com.android.server.utils.Watched; import com.android.server.utils.WatchedArrayMap; import com.android.server.utils.WatchedSparseBooleanArray; import com.android.server.utils.WatchedSparseIntArray; import com.android.server.utils.Watcher; import com.android.server.wm.ActivityTaskManagerInternal; Loading Loading @@ -467,7 +461,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function.Supplier; /** * Keep track of all those APKs everywhere. Loading Loading @@ -19170,6 +19163,8 @@ public class PackageManagerService extends IPackageManager.Stub extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, mInstalledUserIds, null /* instantUserIds */, newBroadcastAllowList, null); // Unregister progress listener mIncrementalManager.unregisterLoadingProgressCallbacks(codePath); // Unregister health listener as it will always be healthy from now mIncrementalManager.unregisterHealthListener(codePath); } Loading Loading @@ -27046,47 +27041,6 @@ public class PackageManagerService extends IPackageManager.Stub return PackageManagerService.this.isSuspendingAnyPackages(suspendingPackage, userId); } @Override public boolean registerInstalledLoadingProgressCallback(String packageName, PackageManagerInternal.InstalledLoadingProgressCallback callback, int userId) { final PackageSetting ps = getPackageSettingForUser(packageName, Binder.getCallingUid(), userId); if (ps == null) { return false; } if (!ps.isPackageLoading()) { Slog.w(TAG, "Failed registering loading progress callback. Package is fully loaded."); return false; } if (mIncrementalManager == null) { Slog.w(TAG, "Failed registering loading progress callback. Incremental is not enabled"); return false; } return mIncrementalManager.registerLoadingProgressCallback(ps.getPathString(), (IPackageLoadingProgressCallback) callback.getBinder()); } @Override public boolean unregisterInstalledLoadingProgressCallback(String packageName, PackageManagerInternal.InstalledLoadingProgressCallback callback) { final PackageSetting ps; synchronized (mLock) { ps = mSettings.getPackageLPr(packageName); if (ps == null) { Slog.w(TAG, "Failed unregistering loading progress callback. Package " + packageName + " is not installed"); return false; } } if (mIncrementalManager == null) { return false; } return mIncrementalManager.unregisterLoadingProgressCallback(ps.getPathString(), (IPackageLoadingProgressCallback) callback.getBinder()); } @Override public IncrementalStatesInfo getIncrementalStatesInfo( @NonNull String packageName, int filterCallingUid, int userId) { Loading
core/java/android/os/incremental/IncrementalManager.java +4 −9 Original line number Diff line number Diff line Loading @@ -304,20 +304,16 @@ public final class IncrementalManager { } /** * Called when a callback wants to stop listen to the loading progress of an installed package. * Decrease the count of the callbacks on the associated to the corresponding storage. * If the count becomes zero, unregister the storage listener. * Called to stop all listeners from listening to loading progress of an installed package. * @param codePath Path of the installed package * @return True if the package name and associated storage id are valid. False otherwise. */ public boolean unregisterLoadingProgressCallback(@NonNull String codePath, @NonNull IPackageLoadingProgressCallback callback) { public void unregisterLoadingProgressCallbacks(@NonNull String codePath) { final IncrementalStorage storage = openStorage(codePath); if (storage == null) { // storage does not exist, package not installed return false; return; } return mLoadingProgressCallbacks.unregisterCallback(storage, callback); mLoadingProgressCallbacks.cleanUpCallbacks(storage); } private static class LoadingProgressCallbacks extends IStorageLoadingProgressListener.Stub { Loading @@ -325,7 +321,6 @@ public final class IncrementalManager { private final SparseArray<RemoteCallbackList<IPackageLoadingProgressCallback>> mCallbacks = new SparseArray<>(); // TODO(b/165841827): disable callbacks when app state changes to fully loaded public void cleanUpCallbacks(@NonNull IncrementalStorage storage) { final int storageId = storage.getId(); final RemoteCallbackList<IPackageLoadingProgressCallback> callbacksForStorage; Loading
services/core/java/android/content/pm/PackageManagerInternal.java +0 −22 Original line number Diff line number Diff line Loading @@ -996,28 +996,6 @@ public abstract class PackageManagerInternal { */ public abstract boolean isSuspendingAnyPackages(String suspendingPackage, int userId); /** * Register to listen for loading progress of an installed package. * @param packageName The name of the installed package * @param callback To loading reporting progress * @param userId The user under which to check. * @return Whether the registration was successful. It can fail if the package has not been * installed yet. */ public abstract boolean registerInstalledLoadingProgressCallback(@NonNull String packageName, @NonNull InstalledLoadingProgressCallback callback, int userId); /** * Unregister to stop listening to loading progress of an installed package * @param packageName The name of the installed package * @param callback To unregister * @return True if the callback is removed from registered callback list. False is the callback * does not exist on the registered callback list, which can happen if the callback has * already been unregistered. */ public abstract boolean unregisterInstalledLoadingProgressCallback(@NonNull String packageName, @NonNull InstalledLoadingProgressCallback callback); /** * Returns the string representation of a known package. For example, * {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard. Loading
services/core/java/com/android/server/pm/IncrementalStates.java +0 −18 Original line number Diff line number Diff line Loading @@ -248,24 +248,6 @@ public final class IncrementalStates { } } /** * @return the current startable state. */ public boolean isStartable() { synchronized (mLock) { return mStartableState.isStartable(); } } /** * @return Whether the package is still being loaded or has been fully loaded. */ public boolean isLoading() { synchronized (mLock) { return mLoadingState.isLoading(); } } /** * @return all current states in a Parcelable. */ Loading
services/core/java/com/android/server/pm/LauncherAppsService.java +0 −37 Original line number Diff line number Diff line Loading @@ -1316,10 +1316,6 @@ public class LauncherAppsService extends SystemService { } finally { mListeners.finishBroadcast(); } PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class); pmi.registerInstalledLoadingProgressCallback(packageName, new PackageLoadingProgressCallback(packageName, user), user.getIdentifier()); super.onPackageAdded(packageName, uid); } Loading Loading @@ -1542,38 +1538,5 @@ public class LauncherAppsService extends SystemService { checkCallbackCount(); } } class PackageLoadingProgressCallback extends PackageManagerInternal.InstalledLoadingProgressCallback { private String mPackageName; private UserHandle mUser; PackageLoadingProgressCallback(String packageName, UserHandle user) { super(mCallbackHandler); mPackageName = packageName; mUser = user; } @Override public void onLoadingProgressChanged(float progress) { final int n = mListeners.beginBroadcast(); try { for (int i = 0; i < n; i++) { IOnAppsChangedListener listener = mListeners.getBroadcastItem(i); BroadcastCookie cookie = (BroadcastCookie) mListeners.getBroadcastCookie(i); if (!isEnabledProfileOf(cookie.user, mUser, "onLoadingProgressChanged")) { continue; } try { listener.onPackageLoadingProgressChanged(mUser, mPackageName, progress); } catch (RemoteException re) { Slog.d(TAG, "Callback failed ", re); } } } finally { mListeners.finishBroadcast(); } } } } }
services/core/java/com/android/server/pm/PackageManagerService.java +7 −53 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import static android.Manifest.permission.SET_HARMFUL_APP_WARNINGS; import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.MODE_IGNORED; import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.CATEGORY_BROWSABLE; import static android.content.Intent.CATEGORY_DEFAULT; import static android.content.Intent.CATEGORY_HOME; import static android.content.Intent.EXTRA_LONG_VERSION_CODE; Loading Loading @@ -68,11 +67,7 @@ import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_RESTORE; import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_SETUP; import static android.content.pm.PackageManager.INSTALL_STAGED; import static android.content.pm.PackageManager.INSTALL_SUCCEEDED; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; import static android.content.pm.PackageManager.MATCH_ALL; import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.MATCH_APEX; Loading Loading @@ -378,11 +373,6 @@ import com.android.server.pm.dex.DexManager; import com.android.server.pm.dex.DexoptOptions; import com.android.server.pm.dex.PackageDexUsage; import com.android.server.pm.dex.ViewCompiler; import com.android.server.pm.verify.domain.DomainVerificationManagerInternal; import com.android.server.pm.verify.domain.DomainVerificationService; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxy; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV1; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV2; import com.android.server.pm.parsing.PackageCacher; import com.android.server.pm.parsing.PackageInfoUtils; import com.android.server.pm.parsing.PackageParser2; Loading @@ -396,6 +386,11 @@ import com.android.server.pm.permission.LegacyPermissionManagerService; import com.android.server.pm.permission.Permission; import com.android.server.pm.permission.PermissionManagerService; import com.android.server.pm.permission.PermissionManagerServiceInternal; import com.android.server.pm.verify.domain.DomainVerificationManagerInternal; import com.android.server.pm.verify.domain.DomainVerificationService; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxy; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV1; import com.android.server.pm.verify.domain.proxy.DomainVerificationProxyV2; import com.android.server.rollback.RollbackManagerInternal; import com.android.server.security.VerityUtils; import com.android.server.storage.DeviceStorageMonitorInternal; Loading @@ -405,7 +400,6 @@ import com.android.server.utils.Watchable; import com.android.server.utils.Watched; import com.android.server.utils.WatchedArrayMap; import com.android.server.utils.WatchedSparseBooleanArray; import com.android.server.utils.WatchedSparseIntArray; import com.android.server.utils.Watcher; import com.android.server.wm.ActivityTaskManagerInternal; Loading Loading @@ -467,7 +461,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function.Supplier; /** * Keep track of all those APKs everywhere. Loading Loading @@ -19170,6 +19163,8 @@ public class PackageManagerService extends IPackageManager.Stub extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, mInstalledUserIds, null /* instantUserIds */, newBroadcastAllowList, null); // Unregister progress listener mIncrementalManager.unregisterLoadingProgressCallbacks(codePath); // Unregister health listener as it will always be healthy from now mIncrementalManager.unregisterHealthListener(codePath); } Loading Loading @@ -27046,47 +27041,6 @@ public class PackageManagerService extends IPackageManager.Stub return PackageManagerService.this.isSuspendingAnyPackages(suspendingPackage, userId); } @Override public boolean registerInstalledLoadingProgressCallback(String packageName, PackageManagerInternal.InstalledLoadingProgressCallback callback, int userId) { final PackageSetting ps = getPackageSettingForUser(packageName, Binder.getCallingUid(), userId); if (ps == null) { return false; } if (!ps.isPackageLoading()) { Slog.w(TAG, "Failed registering loading progress callback. Package is fully loaded."); return false; } if (mIncrementalManager == null) { Slog.w(TAG, "Failed registering loading progress callback. Incremental is not enabled"); return false; } return mIncrementalManager.registerLoadingProgressCallback(ps.getPathString(), (IPackageLoadingProgressCallback) callback.getBinder()); } @Override public boolean unregisterInstalledLoadingProgressCallback(String packageName, PackageManagerInternal.InstalledLoadingProgressCallback callback) { final PackageSetting ps; synchronized (mLock) { ps = mSettings.getPackageLPr(packageName); if (ps == null) { Slog.w(TAG, "Failed unregistering loading progress callback. Package " + packageName + " is not installed"); return false; } } if (mIncrementalManager == null) { return false; } return mIncrementalManager.unregisterLoadingProgressCallback(ps.getPathString(), (IPackageLoadingProgressCallback) callback.getBinder()); } @Override public IncrementalStatesInfo getIncrementalStatesInfo( @NonNull String packageName, int filterCallingUid, int userId) {