diff options
author | Sooraj Sasindran <sasindran@google.com> | 2019-12-16 10:23:57 -0800 |
---|---|---|
committer | Sooraj Sasindran <sasindran@google.com> | 2020-01-13 14:35:47 -0800 |
commit | 07f4639c7c972b84b5db0d12d1a1c0ab3285b63a (patch) | |
tree | 23a95d55fcfb1c3acd1767535d403cf4108182e7 /telephony/common | |
parent | 2dbacb6ca4a43783da4a0377504e5c1807f8d75a (diff) |
Do not use hidden enabledSetting
Do not use hidden ApplicationInfo#enabledSetting
Bug: 140908357
Test: unit test
Test: unit test
om.android.frameworks.telephonytests (25 Tests)
[1/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_EmptyList: PASSED (379ms)
[2/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_Associated_Default: PASSED (25ms)
[3/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_Associated_DisabledUntilUsed: PASSED (1ms)
[4/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_Disabled: PASSED (25ms)
[5/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_DisabledUser: PASSED (76ms)
[6/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_Enabled: PASSED (26ms)
[7/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_MissingAssociated_Default: PASSED (25ms)
[8/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_UpdatedApp: PASSED (25ms)
[9/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_HasPrivileges_UpdatedAssociated_DisabledUntilUsed: PASSED (26ms)
[10/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_MissingApp: PASSED (26ms)
[11/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_Associated_Default: PASSED (25ms)
[12/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_Associated_Default_AlreadyRun: PASSED (26ms)
[13/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_Disabled: PASSED (25ms)
[14/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_DisabledUntilUsed: PASSED (51ms)
[15/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_DisabledUser: PASSED (26ms)
[16/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_Enabled: PASSED (50ms)
[17/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_EnabledAssociated_Default: PASSED (26ms)
[18/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NoPrivileges_UpdatedApp: PASSED (25ms)
[19/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NonSystemApp: PASSED (26ms)
[20/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NullPrivileges_Default: PASSED (26ms)
[21/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NullPrivileges_Disabled: PASSED (26ms)
[22/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NullPrivileges_DisabledUntilUsed: PASSED (26ms)
[23/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NullPrivileges_DisabledUser: PASSED (26ms)
[24/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NullPrivileges_Enabled: PASSED (26ms)
[25/25] com.android.internal.telephony.CarrierAppUtilsTest#testDisableCarrierAppsUntilPrivileged_NullPrivileges_UpdatedApp: PASSED (25ms)
Summary
-------
arm64-v8a FrameworksTelephonyTests: Passed: 25, Failed: 0, Ignored: 0, Assumption Failed: 0
Change-Id: I25d6c7ae0416dd96bf66dbd1615fba5ec87f80cf
Diffstat (limited to 'telephony/common')
-rw-r--r-- | telephony/common/com/android/internal/telephony/CarrierAppUtils.java | 84 |
1 files changed, 68 insertions, 16 deletions
diff --git a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java index a17a19c74e08..9bc534c2877a 100644 --- a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java +++ b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java @@ -27,10 +27,10 @@ import android.os.RemoteException; import android.os.UserHandle; import android.permission.IPermissionManager; import android.provider.Settings; -import android.util.Log; import android.telephony.TelephonyManager; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.Log; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; @@ -141,8 +141,8 @@ public final class CarrierAppUtils { ContentResolver contentResolver, int userId, ArraySet<String> systemCarrierAppsDisabledUntilUsed, ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed) { - List<ApplicationInfo> candidates = getDefaultCarrierAppCandidatesHelper(packageManager, - userId, systemCarrierAppsDisabledUntilUsed); + List<ApplicationInfo> candidates = getDefaultNotUpdatedCarrierAppCandidatesHelper( + packageManager, userId, systemCarrierAppsDisabledUntilUsed); if (candidates == null || candidates.isEmpty()) { return; } @@ -178,15 +178,16 @@ public final class CarrierAppUtils { } } + int enabledSetting = packageManager.getApplicationEnabledSetting(packageName, + userId); if (hasPrivileges) { // Only update enabled state for the app on /system. Once it has been // updated we shouldn't touch it. - if (!ai.isUpdatedSystemApp() - && (ai.enabledSetting + if (enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - || ai.enabledSetting + || enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED - || (ai.flags & ApplicationInfo.FLAG_INSTALLED) == 0)) { + || (ai.flags & ApplicationInfo.FLAG_INSTALLED) == 0) { Log.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); packageManager.setSystemAppInstallState( @@ -204,9 +205,12 @@ public final class CarrierAppUtils { // Also enable any associated apps for this carrier app. if (associatedAppList != null) { for (ApplicationInfo associatedApp : associatedAppList) { - if (associatedApp.enabledSetting + int associatedAppEnabledSetting = + packageManager.getApplicationEnabledSetting( + associatedApp.packageName, userId); + if (associatedAppEnabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - || associatedApp.enabledSetting + || associatedAppEnabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED || (associatedApp.flags & ApplicationInfo.FLAG_INSTALLED) == 0) { @@ -231,8 +235,7 @@ public final class CarrierAppUtils { } else { // No carrier privileges // Only update enabled state for the app on /system. Once it has been // updated we shouldn't touch it. - if (!ai.isUpdatedSystemApp() - && ai.enabledSetting + if (enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT && (ai.flags & ApplicationInfo.FLAG_INSTALLED) != 0) { Log.i(TAG, "Update state(" + packageName @@ -249,7 +252,10 @@ public final class CarrierAppUtils { if (!hasRunOnce) { if (associatedAppList != null) { for (ApplicationInfo associatedApp : associatedAppList) { - if (associatedApp.enabledSetting + int associatedAppEnabledSetting = + packageManager.getApplicationEnabledSetting( + associatedApp.packageName, userId); + if (associatedAppEnabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT && (associatedApp.flags & ApplicationInfo.FLAG_INSTALLED) != 0) { @@ -360,6 +366,31 @@ public final class CarrierAppUtils { return apps; } + private static List<ApplicationInfo> getDefaultNotUpdatedCarrierAppCandidatesHelper( + IPackageManager packageManager, + int userId, + ArraySet<String> systemCarrierAppsDisabledUntilUsed) { + if (systemCarrierAppsDisabledUntilUsed == null) { + return null; + } + + int size = systemCarrierAppsDisabledUntilUsed.size(); + if (size == 0) { + return null; + } + + List<ApplicationInfo> apps = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + String packageName = systemCarrierAppsDisabledUntilUsed.valueAt(i); + ApplicationInfo ai = + getApplicationInfoIfNotUpdatedSystemApp(packageManager, userId, packageName); + if (ai != null) { + apps.add(ai); + } + } + return apps; + } + private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper( IPackageManager packageManager, int userId, @@ -372,11 +403,11 @@ public final class CarrierAppUtils { systemCarrierAssociatedAppsDisabledUntilUsed.valueAt(i); for (int j = 0; j < associatedAppPackages.size(); j++) { ApplicationInfo ai = - getApplicationInfoIfSystemApp( + getApplicationInfoIfNotUpdatedSystemApp( packageManager, userId, associatedAppPackages.get(j)); // Only update enabled state for the app on /system. Once it has been updated we // shouldn't touch it. - if (ai != null && !ai.isUpdatedSystemApp()) { + if (ai != null) { List<ApplicationInfo> appList = associatedApps.get(carrierAppPackage); if (appList == null) { appList = new ArrayList<>(); @@ -390,6 +421,26 @@ public final class CarrierAppUtils { } @Nullable + private static ApplicationInfo getApplicationInfoIfNotUpdatedSystemApp( + IPackageManager packageManager, + int userId, + String packageName) { + try { + ApplicationInfo ai = packageManager.getApplicationInfo(packageName, + PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS + | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS + | PackageManager.MATCH_SYSTEM_ONLY + | PackageManager.MATCH_FACTORY_ONLY, userId); + if (ai != null) { + return ai; + } + } catch (RemoteException e) { + Log.w(TAG, "Could not reach PackageManager", e); + } + return null; + } + + @Nullable private static ApplicationInfo getApplicationInfoIfSystemApp( IPackageManager packageManager, int userId, @@ -397,8 +448,9 @@ public final class CarrierAppUtils { try { ApplicationInfo ai = packageManager.getApplicationInfo(packageName, PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS - | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, userId); - if (ai != null && ai.isSystemApp()) { + | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS + | PackageManager.MATCH_SYSTEM_ONLY, userId); + if (ai != null) { return ai; } } catch (RemoteException e) { |