Merge "[pm] cleanup unused PackageManagerInternal APIs for loading progress" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2b94075386
@@ -304,20 +304,16 @@ public final class IncrementalManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a callback wants to stop listen to the loading progress of an installed package.
|
* Called to stop all listeners from listening to 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.
|
|
||||||
* @param codePath Path of the 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,
|
public void unregisterLoadingProgressCallbacks(@NonNull String codePath) {
|
||||||
@NonNull IPackageLoadingProgressCallback callback) {
|
|
||||||
final IncrementalStorage storage = openStorage(codePath);
|
final IncrementalStorage storage = openStorage(codePath);
|
||||||
if (storage == null) {
|
if (storage == null) {
|
||||||
// storage does not exist, package not installed
|
// 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 {
|
private static class LoadingProgressCallbacks extends IStorageLoadingProgressListener.Stub {
|
||||||
@@ -325,7 +321,6 @@ public final class IncrementalManager {
|
|||||||
private final SparseArray<RemoteCallbackList<IPackageLoadingProgressCallback>> mCallbacks =
|
private final SparseArray<RemoteCallbackList<IPackageLoadingProgressCallback>> mCallbacks =
|
||||||
new SparseArray<>();
|
new SparseArray<>();
|
||||||
|
|
||||||
// TODO(b/165841827): disable callbacks when app state changes to fully loaded
|
|
||||||
public void cleanUpCallbacks(@NonNull IncrementalStorage storage) {
|
public void cleanUpCallbacks(@NonNull IncrementalStorage storage) {
|
||||||
final int storageId = storage.getId();
|
final int storageId = storage.getId();
|
||||||
final RemoteCallbackList<IPackageLoadingProgressCallback> callbacksForStorage;
|
final RemoteCallbackList<IPackageLoadingProgressCallback> callbacksForStorage;
|
||||||
|
|||||||
@@ -996,28 +996,6 @@ public abstract class PackageManagerInternal {
|
|||||||
*/
|
*/
|
||||||
public abstract boolean isSuspendingAnyPackages(String suspendingPackage, int userId);
|
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,
|
* Returns the string representation of a known package. For example,
|
||||||
* {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard.
|
* {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard.
|
||||||
|
|||||||
@@ -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.
|
* @return all current states in a Parcelable.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1316,10 +1316,6 @@ public class LauncherAppsService extends SystemService {
|
|||||||
} finally {
|
} finally {
|
||||||
mListeners.finishBroadcast();
|
mListeners.finishBroadcast();
|
||||||
}
|
}
|
||||||
PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);
|
|
||||||
pmi.registerInstalledLoadingProgressCallback(packageName,
|
|
||||||
new PackageLoadingProgressCallback(packageName, user),
|
|
||||||
user.getIdentifier());
|
|
||||||
super.onPackageAdded(packageName, uid);
|
super.onPackageAdded(packageName, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1542,38 +1538,5 @@ public class LauncherAppsService extends SystemService {
|
|||||||
checkCallbackCount();
|
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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_DEFAULT;
|
||||||
import static android.app.AppOpsManager.MODE_IGNORED;
|
import static android.app.AppOpsManager.MODE_IGNORED;
|
||||||
import static android.content.Intent.ACTION_MAIN;
|
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_DEFAULT;
|
||||||
import static android.content.Intent.CATEGORY_HOME;
|
import static android.content.Intent.CATEGORY_HOME;
|
||||||
import static android.content.Intent.EXTRA_LONG_VERSION_CODE;
|
import static android.content.Intent.EXTRA_LONG_VERSION_CODE;
|
||||||
@@ -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_REASON_DEVICE_SETUP;
|
||||||
import static android.content.pm.PackageManager.INSTALL_STAGED;
|
import static android.content.pm.PackageManager.INSTALL_STAGED;
|
||||||
import static android.content.pm.PackageManager.INSTALL_SUCCEEDED;
|
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_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_ALL;
|
||||||
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
import static android.content.pm.PackageManager.MATCH_ANY_USER;
|
||||||
import static android.content.pm.PackageManager.MATCH_APEX;
|
import static android.content.pm.PackageManager.MATCH_APEX;
|
||||||
@@ -378,11 +373,6 @@ import com.android.server.pm.dex.DexManager;
|
|||||||
import com.android.server.pm.dex.DexoptOptions;
|
import com.android.server.pm.dex.DexoptOptions;
|
||||||
import com.android.server.pm.dex.PackageDexUsage;
|
import com.android.server.pm.dex.PackageDexUsage;
|
||||||
import com.android.server.pm.dex.ViewCompiler;
|
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.PackageCacher;
|
||||||
import com.android.server.pm.parsing.PackageInfoUtils;
|
import com.android.server.pm.parsing.PackageInfoUtils;
|
||||||
import com.android.server.pm.parsing.PackageParser2;
|
import com.android.server.pm.parsing.PackageParser2;
|
||||||
@@ -396,6 +386,11 @@ import com.android.server.pm.permission.LegacyPermissionManagerService;
|
|||||||
import com.android.server.pm.permission.Permission;
|
import com.android.server.pm.permission.Permission;
|
||||||
import com.android.server.pm.permission.PermissionManagerService;
|
import com.android.server.pm.permission.PermissionManagerService;
|
||||||
import com.android.server.pm.permission.PermissionManagerServiceInternal;
|
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.rollback.RollbackManagerInternal;
|
||||||
import com.android.server.security.VerityUtils;
|
import com.android.server.security.VerityUtils;
|
||||||
import com.android.server.storage.DeviceStorageMonitorInternal;
|
import com.android.server.storage.DeviceStorageMonitorInternal;
|
||||||
@@ -405,7 +400,6 @@ import com.android.server.utils.Watchable;
|
|||||||
import com.android.server.utils.Watched;
|
import com.android.server.utils.Watched;
|
||||||
import com.android.server.utils.WatchedArrayMap;
|
import com.android.server.utils.WatchedArrayMap;
|
||||||
import com.android.server.utils.WatchedSparseBooleanArray;
|
import com.android.server.utils.WatchedSparseBooleanArray;
|
||||||
import com.android.server.utils.WatchedSparseIntArray;
|
|
||||||
import com.android.server.utils.Watcher;
|
import com.android.server.utils.Watcher;
|
||||||
import com.android.server.wm.ActivityTaskManagerInternal;
|
import com.android.server.wm.ActivityTaskManagerInternal;
|
||||||
|
|
||||||
@@ -467,7 +461,6 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Keep track of all those APKs everywhere.
|
* Keep track of all those APKs everywhere.
|
||||||
@@ -19170,6 +19163,8 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
extras, 0 /*flags*/,
|
extras, 0 /*flags*/,
|
||||||
null /*targetPackage*/, null /*finishedReceiver*/,
|
null /*targetPackage*/, null /*finishedReceiver*/,
|
||||||
mInstalledUserIds, null /* instantUserIds */, newBroadcastAllowList, null);
|
mInstalledUserIds, null /* instantUserIds */, newBroadcastAllowList, null);
|
||||||
|
// Unregister progress listener
|
||||||
|
mIncrementalManager.unregisterLoadingProgressCallbacks(codePath);
|
||||||
// Unregister health listener as it will always be healthy from now
|
// Unregister health listener as it will always be healthy from now
|
||||||
mIncrementalManager.unregisterHealthListener(codePath);
|
mIncrementalManager.unregisterHealthListener(codePath);
|
||||||
}
|
}
|
||||||
@@ -27046,47 +27041,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
return PackageManagerService.this.isSuspendingAnyPackages(suspendingPackage, userId);
|
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
|
@Override
|
||||||
public IncrementalStatesInfo getIncrementalStatesInfo(
|
public IncrementalStatesInfo getIncrementalStatesInfo(
|
||||||
@NonNull String packageName, int filterCallingUid, int userId) {
|
@NonNull String packageName, int filterCallingUid, int userId) {
|
||||||
|
|||||||
@@ -344,8 +344,8 @@ public class PackageSetting extends PackageSettingBase {
|
|||||||
installSource.originatingPackageName);
|
installSource.originatingPackageName);
|
||||||
proto.end(sourceToken);
|
proto.end(sourceToken);
|
||||||
}
|
}
|
||||||
proto.write(PackageProto.StatesProto.IS_STARTABLE, incrementalStates.isStartable());
|
proto.write(PackageProto.StatesProto.IS_STARTABLE, isPackageStartable());
|
||||||
proto.write(PackageProto.StatesProto.IS_LOADING, incrementalStates.isLoading());
|
proto.write(PackageProto.StatesProto.IS_LOADING, isPackageLoading());
|
||||||
writeUsersInfoToProto(proto, PackageProto.USERS);
|
writeUsersInfoToProto(proto, PackageProto.USERS);
|
||||||
writePackageUserPermissionsProto(proto, PackageProto.USER_PERMISSIONS, users, dataProvider);
|
writePackageUserPermissionsProto(proto, PackageProto.USER_PERMISSIONS, users, dataProvider);
|
||||||
proto.end(packageToken);
|
proto.end(packageToken);
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ import android.annotation.UserIdInt;
|
|||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.IncrementalStatesInfo;
|
import android.content.pm.IncrementalStatesInfo;
|
||||||
import android.content.pm.IntentFilterVerificationInfo;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.content.pm.PackageManager.UninstallReason;
|
import android.content.pm.PackageManager.UninstallReason;
|
||||||
import android.content.pm.PackageParser;
|
import android.content.pm.PackageParser;
|
||||||
import android.content.pm.PackageUserState;
|
import android.content.pm.PackageUserState;
|
||||||
@@ -42,8 +40,6 @@ import android.util.SparseArray;
|
|||||||
import android.util.proto.ProtoOutputStream;
|
import android.util.proto.ProtoOutputStream;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
|
|
||||||
import com.android.server.pm.verify.domain.DomainVerificationService;
|
|
||||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -731,14 +727,14 @@ public abstract class PackageSettingBase extends SettingBase {
|
|||||||
* @return True if package is startable, false otherwise.
|
* @return True if package is startable, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean isPackageStartable() {
|
public boolean isPackageStartable() {
|
||||||
return incrementalStates.isStartable();
|
return getIncrementalStates().isStartable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return True if package is still being loaded, false if the package is fully loaded.
|
* @return True if package is still being loaded, false if the package is fully loaded.
|
||||||
*/
|
*/
|
||||||
public boolean isPackageLoading() {
|
public boolean isPackageLoading() {
|
||||||
return incrementalStates.isLoading();
|
return getIncrementalStates().isLoading();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -71,12 +71,12 @@ public class IncrementalStatesTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mIncrementalStates = new IncrementalStates();
|
mIncrementalStates = new IncrementalStates();
|
||||||
assertFalse(mIncrementalStates.isStartable());
|
assertFalse(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
mIncrementalStates.setCallback(mCallback);
|
mIncrementalStates.setCallback(mCallback);
|
||||||
mIncrementalStates.onCommit(true);
|
mIncrementalStates.onCommit(true);
|
||||||
// Test that package is now startable and loading
|
// Test that package is now startable and loading
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
assertTrue(mIncrementalStates.isLoading());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isLoading());
|
||||||
mUnstartableCalled.close();
|
mUnstartableCalled.close();
|
||||||
mFullyLoadedCalled.close();
|
mFullyLoadedCalled.close();
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ public class IncrementalStatesTest {
|
|||||||
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY);
|
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY);
|
||||||
// Test that package is still startable
|
// Test that package is still startable
|
||||||
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN, mUnstartableReason.get());
|
assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN, mUnstartableReason.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ public class IncrementalStatesTest {
|
|||||||
IStorageHealthListener.HEALTH_STATUS_READS_PENDING);
|
IStorageHealthListener.HEALTH_STATUS_READS_PENDING);
|
||||||
// Test that package is still startable
|
// Test that package is still startable
|
||||||
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -116,7 +116,7 @@ public class IncrementalStatesTest {
|
|||||||
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_STORAGE);
|
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_STORAGE);
|
||||||
// Test that package is still startable
|
// Test that package is still startable
|
||||||
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN,
|
assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN,
|
||||||
mUnstartableReason.get());
|
mUnstartableReason.get());
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ public class IncrementalStatesTest {
|
|||||||
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_TRANSPORT);
|
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_TRANSPORT);
|
||||||
// Test that package is still startable
|
// Test that package is still startable
|
||||||
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN,
|
assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN,
|
||||||
mUnstartableReason.get());
|
mUnstartableReason.get());
|
||||||
}
|
}
|
||||||
@@ -145,12 +145,12 @@ public class IncrementalStatesTest {
|
|||||||
mIncrementalStates.setProgress(1.0f);
|
mIncrementalStates.setProgress(1.0f);
|
||||||
// Test that package is now fully loaded
|
// Test that package is now fully loaded
|
||||||
assertTrue(mFullyLoadedCalled.block(WAIT_TIMEOUT_MILLIS));
|
assertTrue(mFullyLoadedCalled.block(WAIT_TIMEOUT_MILLIS));
|
||||||
assertFalse(mIncrementalStates.isLoading());
|
assertFalse(mIncrementalStates.getIncrementalStatesInfo().isLoading());
|
||||||
mIncrementalStates.onStorageHealthStatusChanged(
|
mIncrementalStates.onStorageHealthStatusChanged(
|
||||||
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY);
|
IStorageHealthListener.HEALTH_STATUS_UNHEALTHY);
|
||||||
// Test that package is still startable
|
// Test that package is still startable
|
||||||
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS));
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -159,6 +159,6 @@ public class IncrementalStatesTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testStartableTransition_AppCrashOrAnr() {
|
public void testStartableTransition_AppCrashOrAnr() {
|
||||||
mIncrementalStates.onCrashOrAnr();
|
mIncrementalStates.onCrashOrAnr();
|
||||||
assertTrue(mIncrementalStates.isStartable());
|
assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user