aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-05-24 18:01:43 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-05-24 18:01:43 +0000
commit7186dc5fb177bbd2095646ef726bfc86b0e12e7c (patch)
treeaf681066f44b6346c2fb0afebd3afb74e3893322
parent80ce47fde433a5bb406da51fbfd6bbb473c94630 (diff)
parentf3422e6d64d5858342c82fd3b858e4923bb983ec (diff)
downloadtelephony-7186dc5fb177bbd2095646ef726bfc86b0e12e7c.tar.gz
Merge "Hide system apps until installed (2/2)" into pi-dev
-rw-r--r--src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java3
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java352
2 files changed, 192 insertions, 163 deletions
diff --git a/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java b/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java
index a45c247aa8..a7bbb955a8 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccCarrierPrivilegeRules.java
@@ -310,7 +310,8 @@ public class UiccCarrierPrivilegeRules extends Handler {
// gained carrier privileges (as an indication that a matching SIM has been inserted).
PackageInfo pInfo = packageManager.getPackageInfo(packageName,
PackageManager.GET_SIGNATURES
- | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS);
+ | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS);
return getCarrierPrivilegeStatus(pInfo);
} catch (PackageManager.NameNotFoundException ex) {
log("Package " + packageName + " not found for carrier privilege status check");
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java b/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java
index 54a56df3cf..2192499a85 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java
@@ -87,15 +87,16 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_MissingApp() throws Exception {
Mockito.when(mPackageManager.getApplicationInfo("com.example.missing.app",
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(null);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(null);
ArraySet<String> systemCarrierAppsDisabledUntilUsed = new ArraySet<>();
systemCarrierAppsDisabledUntilUsed.add("com.example.missing.app");
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID,
systemCarrierAppsDisabledUntilUsed, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(Mockito.any(String[].class),
Mockito.anyInt());
@@ -107,12 +108,13 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
public void testDisableCarrierAppsUntilPrivileged_NonSystemApp() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
@@ -128,17 +130,18 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
@@ -148,37 +151,39 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_Disabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
- /** Configured app has privileges, and is already enabled - should only grant permissions. */
+ /** Configured app has privileges, and is already installed - should only grant permissions. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_Enabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
@@ -188,23 +193,25 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_UpdatedApp() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
+ | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
/**
- * Configured app has privileges, and is in the default state - should enable. Associated app
+ * Configured app has privileges, and is in the default state - should install. Associated app
* is missing and should not be touched.
*/
@Test @SmallTest
@@ -212,28 +219,27 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- ASSOCIATED_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, true, USER_ID);
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ ASSOCIATED_APP, true, USER_ID);
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
/**
* Configured app has privileges, and is in the default state along with associated app - should
- * enable both.
+ * install both.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_Associated_Default()
@@ -243,34 +249,34 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
mContentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 1, USER_ID);
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(appInfo);
ApplicationInfo associatedAppInfo = new ApplicationInfo();
associatedAppInfo.packageName = ASSOCIATED_APP;
associatedAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
associatedAppInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(ASSOCIATED_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- ASSOCIATED_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, true, USER_ID);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ ASSOCIATED_APP, true, USER_ID);
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
/**
- * Configured app has privileges, and is disabled until used - should enable. Associated app has
+ * Configured app has privileges, and is uninstalled - should install. Associated app has
* been updated and should not be touched.
*/
@Test @SmallTest
@@ -278,10 +284,12 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
ApplicationInfo associatedAppInfo = new ApplicationInfo();
associatedAppInfo.packageName = ASSOCIATED_APP;
associatedAppInfo.flags |=
@@ -289,53 +297,53 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
associatedAppInfo.enabledSetting =
PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
Mockito.when(mPackageManager.getApplicationInfo(ASSOCIATED_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- ASSOCIATED_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, true, USER_ID);
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ ASSOCIATED_APP, true, USER_ID);
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
/**
- * Configured app has privileges, and is disabled until used along with associated app - should
- * enable both.
+ * Configured app has privileges, and is uninstalled until used along with associated app -
+ * should install both.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_Associated_DisabledUntilUsed()
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
ApplicationInfo associatedAppInfo = new ApplicationInfo();
associatedAppInfo.packageName = ASSOCIATED_APP;
associatedAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
associatedAppInfo.enabledSetting =
PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
Mockito.when(mPackageManager.getApplicationInfo(ASSOCIATED_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- ASSOCIATED_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP, USER_ID, CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, true, USER_ID);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ ASSOCIATED_APP, true, USER_ID);
Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps(
new String[] {appInfo.packageName}, USER_ID);
}
@@ -345,17 +353,18 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_DisabledUser() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
@@ -367,98 +376,103 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Configured app has no privileges, and was disabled - should do nothing. */
+ /** Configured app has no privileges, and was uninstalled - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Disabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Telephony is not initialized, and app was disabled - should do nothing. */
+ /** Telephony is not initialized, and app was uninstalled - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Disabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Configured app has no privileges, and is explicitly enabled - should do nothing. */
+ /** Configured app has no privileges, and is explicitly installed - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Enabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Telephony is not initialized, and app is explicitly enabled - should do nothing. */
+ /** Telephony is not initialized, and app is explicitly installed - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Enabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
@@ -469,17 +483,19 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_UpdatedApp() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP
+ | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
@@ -490,51 +506,54 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_UpdatedApp() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
+ appInfo.flags |= (ApplicationInfo.FLAG_SYSTEM
+ | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_INSTALLED);
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
/**
- * Configured app has no privileges, and is in the default state - should disable until use.
- * Associated app is enabled and should not be touched.
+ * Configured app has no privileges, and is in the default state - should uninstalled.
+ * Associated app is installed and should not be touched.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_EnabledAssociated_Default()
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
ApplicationInfo associatedAppInfo = new ApplicationInfo();
associatedAppInfo.packageName = ASSOCIATED_APP;
associatedAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
associatedAppInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
Mockito.when(mPackageManager.getApplicationInfo(ASSOCIATED_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID,
- CALLING_PACKAGE);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- ASSOCIATED_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0,
- USER_ID, CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, false, USER_ID);
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ ASSOCIATED_APP, false, USER_ID);
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
@@ -542,34 +561,35 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
/**
* Configured app has no privileges, and is in the default state along with associated app -
- * should disable both.
+ * should uninstall both.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Associated_Default()
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
ApplicationInfo associatedAppInfo = new ApplicationInfo();
associatedAppInfo.packageName = ASSOCIATED_APP;
associatedAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
associatedAppInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(ASSOCIATED_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID,
- CALLING_PACKAGE);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- ASSOCIATED_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0,
- USER_ID, CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, false, USER_ID);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ ASSOCIATED_APP, false, USER_ID);
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
@@ -577,7 +597,7 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has already occurred - should only disable configured app.
+ * disabling has already occurred - should only uninstall configured app.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Associated_Default_AlreadyRun()
@@ -586,90 +606,98 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase {
mContentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 1, USER_ID);
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
ApplicationInfo associatedAppInfo = new ApplicationInfo();
associatedAppInfo.packageName = ASSOCIATED_APP;
associatedAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
associatedAppInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(ASSOCIATED_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID))
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, USER_ID))
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID,
- CALLING_PACKAGE);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.eq(ASSOCIATED_APP), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, false, USER_ID);
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.eq(ASSOCIATED_APP), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Telephony is not initialized, and app is in the default state - should disable until use. */
+ /** Telephony is not initialized, and app is in the default state - should uninstall it. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Default() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS);
- Mockito.verify(mPackageManager).setApplicationEnabledSetting(
- CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID,
- CALLING_PACKAGE);
+ Mockito.verify(mPackageManager).setSystemAppInstallState(
+ CARRIER_APP, false, USER_ID);
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Configured app has no privileges, and is disabled until used - should do nothing. */
+ /** Configured app has no privileges, and is disabled until used or not installed - should do
+ * nothing.
+ **/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_DisabledUntilUsed()
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
mTelephonyManager, mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());
}
- /** Telephony is not initialized, and app is disabled until used - should do nothing. */
+ /** Telephony is not initialized, and app is disabled until used or not installed - should do
+ * nothing.
+ **/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_DisabledUntilUsed()
throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
- appInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
appInfo.enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
- PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, USER_ID)).thenReturn(appInfo);
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
+ USER_ID)).thenReturn(appInfo);
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mPackageManager,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS);
- Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting(
- Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(),
- Mockito.anyString());
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppInstallState(
+ Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyInt());
Mockito.verify(mPackageManager, Mockito.never())
.grantDefaultPermissionsToEnabledCarrierApps(
Mockito.any(String[].class), Mockito.anyInt());