Merge "Satellite Internet Support" into 24D1-dev
diff --git a/flags/misc.aconfig b/flags/misc.aconfig
index aabceca..1e714c5 100644
--- a/flags/misc.aconfig
+++ b/flags/misc.aconfig
@@ -90,3 +90,13 @@
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "hide_preinstalled_carrier_app_at_most_once"
+ namespace: "telephony"
+ description: "Fix bug when preloaded carrier app is uninstalled and lose provisioning data"
+ bug:"158028151"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index 018fc3d..287f839 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -175,8 +175,6 @@
private static final int EVENT_IS_SATELLITE_SUPPORTED_DONE = 16;
private static final int CMD_GET_SATELLITE_CAPABILITIES = 17;
private static final int EVENT_GET_SATELLITE_CAPABILITIES_DONE = 18;
- private static final int CMD_IS_SATELLITE_COMMUNICATION_ALLOWED = 19;
- private static final int EVENT_IS_SATELLITE_COMMUNICATION_ALLOWED_DONE = 20;
private static final int CMD_GET_TIME_SATELLITE_NEXT_VISIBLE = 21;
private static final int EVENT_GET_TIME_SATELLITE_NEXT_VISIBLE_DONE = 22;
private static final int EVENT_RADIO_STATE_CHANGED = 23;
@@ -1073,39 +1071,6 @@
break;
}
- case CMD_IS_SATELLITE_COMMUNICATION_ALLOWED: {
- request = (SatelliteControllerHandlerRequest) msg.obj;
- onCompleted =
- obtainMessage(EVENT_IS_SATELLITE_COMMUNICATION_ALLOWED_DONE, request);
- mSatelliteModemInterface
- .requestIsSatelliteCommunicationAllowedForCurrentLocation(onCompleted);
- break;
- }
-
- case EVENT_IS_SATELLITE_COMMUNICATION_ALLOWED_DONE: {
- ar = (AsyncResult) msg.obj;
- request = (SatelliteControllerHandlerRequest) ar.userObj;
- int error = SatelliteServiceUtils.getSatelliteError(ar,
- "isSatelliteCommunicationAllowedForCurrentLocation");
- Bundle bundle = new Bundle();
- if (error == SATELLITE_RESULT_SUCCESS) {
- if (ar.result == null) {
- loge("isSatelliteCommunicationAllowedForCurrentLocation: result is null");
- error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
- } else {
- boolean communicationAllowed = (boolean) ar.result;
- if (DBG) {
- logd("isSatelliteCommunicationAllowedForCurrentLocation: "
- + communicationAllowed);
- }
- bundle.putBoolean(SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED,
- communicationAllowed);
- }
- }
- ((ResultReceiver) request.argument).send(error, bundle);
- break;
- }
-
case CMD_GET_TIME_SATELLITE_NEXT_VISIBLE: {
request = (SatelliteControllerHandlerRequest) msg.obj;
onCompleted = obtainMessage(EVENT_GET_TIME_SATELLITE_NEXT_VISIBLE_DONE,
@@ -1955,26 +1920,6 @@
}
/**
- * Request to get whether satellite communication is allowed for the current location.
- *
- * @param subId The subId of the subscription to check whether satellite communication is
- * allowed for the current location for.
- * @param result The result receiver that returns whether satellite communication is allowed
- * for the current location if the request is successful or an error code
- * if the request failed.
- */
- public void requestIsSatelliteCommunicationAllowedForCurrentLocation(int subId,
- @NonNull ResultReceiver result) {
- int error = evaluateOemSatelliteRequestAllowed(false);
- if (error != SATELLITE_RESULT_SUCCESS) {
- result.send(error, null);
- return;
- }
-
- sendRequestAsync(CMD_IS_SATELLITE_COMMUNICATION_ALLOWED, result, null);
- }
-
- /**
* Request to get the time after which the satellite will be visible.
*
* @param subId The subId to get the time after which the satellite will be visible for.
@@ -2518,6 +2463,12 @@
logd("getSatellitePlmnsForCarrier: carrierEnabledSatelliteFlag is disabled");
return new ArrayList<>();
}
+
+ if (!isSatelliteSupportedViaCarrier(subId)) {
+ logd("Satellite for carrier is not supported.");
+ return new ArrayList<>();
+ }
+
synchronized (mSupportedSatelliteServicesLock) {
return mMergedPlmnListPerCarrier.get(subId, new ArrayList<>()).stream().toList();
}
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java b/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java
index 2f86eea..e51042f 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteModemInterface.java
@@ -1009,48 +1009,6 @@
}
/**
- * Request to get whether satellite communication is allowed for the current location.
- *
- * @param message The Message to send to result of the operation to.
- */
- public void requestIsSatelliteCommunicationAllowedForCurrentLocation(@NonNull Message message) {
- if (mSatelliteService != null) {
- try {
- mSatelliteService.requestIsSatelliteCommunicationAllowedForCurrentLocation(
- new IIntegerConsumer.Stub() {
- @Override
- public void accept(int result) {
- int error = SatelliteServiceUtils.fromSatelliteError(result);
- logd("requestIsCommunicationAllowedForCurrentLocation: "
- + error);
- Binder.withCleanCallingIdentity(() ->
- sendMessageWithResult(message, null, error));
- }
- }, new IBooleanConsumer.Stub() {
- @Override
- public void accept(boolean result) {
- logd("requestIsCommunicationAllowedForCurrentLocation: "
- + result);
- Binder.withCleanCallingIdentity(() -> sendMessageWithResult(
- message, result,
- SatelliteManager.SATELLITE_RESULT_SUCCESS));
- }
- });
- } catch (RemoteException e) {
- loge("requestIsCommunicationAllowedForCurrentLocation: RemoteException "
- + e);
- sendMessageWithResult(message, null,
- SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR);
- }
- } else {
- loge("requestIsCommunicationAllowedForCurrentLocation: "
- + "Satellite service is unavailable.");
- sendMessageWithResult(message, null,
- SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE);
- }
- }
-
- /**
* Request to get the time after which the satellite will be visible. This is an int
* representing the duration in seconds after which the satellite will be visible.
* This will return 0 if the satellite is currently visible.
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java b/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java
index 2a66a5f..e06e4fe 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java
@@ -23,6 +23,7 @@
import android.os.Bundle;
import android.os.CarrierAssociatedAppEntry;
import android.os.UserHandle;
+import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.test.mock.MockContentProvider;
@@ -34,9 +35,12 @@
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.telephony.flags.Flags;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
@@ -59,6 +63,9 @@
private static final int USER_ID = 12345;
private static final String CALLING_PACKAGE = "phone";
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
// Mocked classes
private Context mContext;
private PackageManager mPackageManager;
@@ -79,6 +86,7 @@
@Before
public void setUp() throws Exception {
+ mSetFlagsRule.enableFlags(Flags.FLAG_HIDE_PREINSTALLED_CARRIER_APP_AT_MOST_ONCE);
System.setProperty("dexmaker.dexcache",
InstrumentationRegistry.getTargetContext().getCacheDir().getPath());
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
@@ -113,6 +121,7 @@
public void testDisableCarrierAppsUntilPrivileged_EmptyList() {
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, new ArraySet<>(), ASSOCIATED_APPS, mContext);
+
Mockito.verifyNoMoreInteractions(mPackageManager, mTelephonyManager);
}
@@ -125,9 +134,11 @@
| PackageManager.MATCH_SYSTEM_ONLY)).thenReturn(null);
ArraySet<String> systemCarrierAppsDisabledUntilUsed = new ArraySet<>();
systemCarrierAppsDisabledUntilUsed.add("com.example.missing.app");
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, systemCarrierAppsDisabledUntilUsed, ASSOCIATED_APPS,
mContext);
+
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
Mockito.eq(PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN));
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -147,8 +158,10 @@
PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
Mockito.eq(PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN));
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -173,15 +186,16 @@
Mockito.when(mPackageManager
.getApplicationEnabledSetting(Mockito.anyString()))
.thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER);
-
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -199,15 +213,16 @@
Mockito.when(mPackageManager
.getApplicationEnabledSetting(Mockito.anyString()))
.thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
-
Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -231,8 +246,10 @@
| PackageManager.MATCH_SYSTEM_ONLY)).thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -255,11 +272,12 @@
Mockito.when(mPackageManager
.getApplicationEnabledSetting(Mockito.anyString()))
.thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
-
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -287,8 +305,10 @@
.thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
@@ -329,8 +349,10 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -371,8 +393,10 @@
.thenReturn(null);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(ASSOCIATED_APP,
@@ -412,8 +436,10 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -440,8 +466,10 @@
.thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -465,9 +493,11 @@
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -476,7 +506,7 @@
Mockito.eq(PackageManager.SYSTEM_APP_STATE_UNINSTALLED));
}
- /** Configured app has no privileges, and was uninstalled - should do nothing. */
+ /** Configured app has no privileges, and was explicitly disabled - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Disabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
@@ -492,8 +522,10 @@
.thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -502,7 +534,7 @@
Mockito.eq(PackageManager.SYSTEM_APP_STATE_UNINSTALLED));
}
- /** Telephony is not initialized, and app was uninstalled - should do nothing. */
+ /** Telephony is not initialized, and app was explicitly disabled - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Disabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
@@ -516,9 +548,11 @@
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -527,7 +561,7 @@
Mockito.eq(PackageManager.SYSTEM_APP_STATE_UNINSTALLED));
}
- /** Configured app has no privileges, and is explicitly installed - should do nothing. */
+ /** Configured app has no privileges, and was explicitly enabled - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Enabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
@@ -543,8 +577,10 @@
.thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -553,7 +589,7 @@
Mockito.eq(PackageManager.SYSTEM_APP_STATE_UNINSTALLED));
}
- /** Telephony is not initialized, and app is explicitly installed - should do nothing. */
+ /** Telephony is not initialized, and app was explicitly enabled - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Enabled() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
@@ -567,9 +603,11 @@
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -578,7 +616,8 @@
Mockito.eq(PackageManager.SYSTEM_APP_STATE_UNINSTALLED));
}
- /** Configured /data app has no privileges - should do nothing. */
+ /** Configured app has been installed as an update in /data and has no privileges
+ * - should do nothing. */
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_UpdatedApp() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
@@ -595,8 +634,10 @@
.thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -620,9 +661,11 @@
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -632,7 +675,8 @@
}
/**
- * Configured app has no privileges, and is in the default state - should uninstalled.
+ * Configured app has no privileges, is in the default state and it was never uninstalled before
+ * - should uninstalled.
* Associated app is installed and should not be touched.
*/
@Test @SmallTest
@@ -660,8 +704,10 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -675,8 +721,8 @@
}
/**
- * Configured app has no privileges, and is in the default state along with associated app -
- * should uninstall both.
+ * Configured app has no privileges, is in the default state along with associated app and never
+ * unstalled before - should uninstall both.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Associated_Default()
@@ -703,8 +749,10 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -717,7 +765,7 @@
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has already occurred - should only uninstall configured app.
+ * disabling has already occurred - should uninstall nothing.
*/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NoPrivileges_Associated_Default_HandledSdk()
@@ -747,15 +795,17 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Different associated app SDK than usual.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS,
makeAssociatedApp(CARRIER_APP, ASSOCIATED_APP, Build.VERSION.SDK_INT), mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
- Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_INSTALLED);
@@ -765,7 +815,7 @@
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has already occurred - should only uninstall configured app.
+ * disabling has already occurred - should uninstall nothing.
*/
@Test @SmallTest
public void testDCAUP_NoPrivileges_Associated_Default_HandledSdk_AssociatedSdkUnspecified()
@@ -795,14 +845,16 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Using SDK_UNSPECIFIED for the associated app's addedInSdk.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
- Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_INSTALLED);
@@ -812,15 +864,14 @@
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has not yet occurred on this SDK level - should uninstall both since the associated
- * app's SDK matches.
+ * disabling has not yet occurred on any SDK level - should uninstall both since disabling never
+ * occurred before and the associated app's SDK matches.
*/
@Test @SmallTest
public void testDCAUP_NoPrivileges_Associated_Default_NewSdk_AssociatedSdkCurrent()
throws Exception {
Settings.Secure.putIntForUser(
- mContentResolver, Settings.Secure.CARRIER_APPS_HANDLED,
- Build.VERSION.SDK_INT - 1, USER_ID);
+ mContentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 0, USER_ID);
ApplicationInfo appInfo = new ApplicationInfo();
appInfo.packageName = CARRIER_APP;
appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
@@ -843,10 +894,12 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Different associated app SDK than usual.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS,
makeAssociatedApp(CARRIER_APP, ASSOCIATED_APP, Build.VERSION.SDK_INT), mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -861,7 +914,7 @@
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has not yet occurred on the current SDK - should only uninstall configured app
+ * disabling has not yet occurred on the current SDK - should uninstall nothing
* since the associated app's SDK isn't specified but we've already run at least once.
*/
@Test @SmallTest
@@ -892,14 +945,16 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Using SDK_UNSPECIFIED for the associated app's addedInSdk.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
- Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_INSTALLED);
@@ -909,7 +964,7 @@
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has not yet occurred on the current SDK - should only uninstall configured app
+ * disabling has not yet occurred on the current SDK - should uninstall nothing
* since the associated app's SDK doesn't match.
*/
@Test @SmallTest
@@ -940,16 +995,18 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Different associated app SDK than usual.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS,
makeAssociatedApp(CARRIER_APP, ASSOCIATED_APP, Build.VERSION.SDK_INT - 1),
mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
- Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_INSTALLED);
@@ -959,8 +1016,8 @@
/**
* Configured app has no privileges, and is in the default state along with associated app, and
- * disabling has not yet occurred on this SDK level - should uninstall both since the associated
- * app's SDK is newer than the last evaluation.
+ * disabling has not yet occurred on this SDK level - should uninstall only associated
+ * app since the associated app's SDK is newer than the last evaluation.
*
* While this case is expected to feel somewhat strange, it effectively simulates skipping a
* whole SDK level in a single OTA. For example, the device is on P. A new associated app is
@@ -996,16 +1053,18 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Different associated app SDK than usual.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS,
makeAssociatedApp(CARRIER_APP, ASSOCIATED_APP, Build.VERSION.SDK_INT - 1),
mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
- Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(ASSOCIATED_APP,
PackageManager.SYSTEM_APP_STATE_INSTALLED);
@@ -1043,10 +1102,12 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Different associated app SDK than usual.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS,
makeAssociatedApp(CARRIER_APP, ASSOCIATED_APP, Build.VERSION.SDK_INT), mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -1089,9 +1150,11 @@
.thenReturn(associatedAppInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
// Using SDK_UNSPECIFIED for the associated app's addedInSdk.
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(ASSOCIATED_APP,
@@ -1104,7 +1167,10 @@
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
}
- /** Telephony is not initialized, and app is in the default state - should uninstall it. */
+ /**
+ * Telephony is not initialized, and app is in the default state and never uninstall before
+ * - should uninstall it.
+ **/
@Test @SmallTest
public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Default() throws Exception {
ApplicationInfo appInfo = new ApplicationInfo();
@@ -1118,16 +1184,51 @@
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
}
- /** Configured app has no privileges, and is disabled until used or not installed - should do
+ /**
+ * Telephony is not initialized, and app is in the default state but uninstall before
+ * - should not uninstall again.
+ **/
+ @Test @SmallTest
+ public void testDisableCarrierAppsUntilPrivileged_NullPrivileges_Default_alreadyUninstalled()
+ throws Exception {
+ Settings.Secure.putIntForUser(
+ mContentResolver, Settings.Secure.CARRIER_APPS_HANDLED,
+ Build.VERSION.SDK_INT, USER_ID);
+ ApplicationInfo appInfo = new ApplicationInfo();
+ appInfo.packageName = CARRIER_APP;
+ appInfo.flags |= ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_INSTALLED;
+ Mockito.when(mPackageManager
+ .getApplicationEnabledSetting(Mockito.anyString()))
+ .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
+ Mockito.when(mPackageManager.getApplicationInfo(CARRIER_APP,
+ PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
+ | PackageManager.MATCH_SYSTEM_ONLY))
+ .thenReturn(appInfo);
+
+ CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
+ null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
+ ASSOCIATED_APPS, mContext);
+
+ Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
+ PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
+ Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(CARRIER_APP,
+ PackageManager.SYSTEM_APP_STATE_UNINSTALLED);
+ }
+
+ /**
+ * Configured app has no privileges, and is disabled until used or not installed - should do
* nothing.
**/
@Test @SmallTest
@@ -1146,8 +1247,10 @@
.thenReturn(appInfo);
Mockito.when(mTelephonyManager.checkCarrierPrivilegesForPackageAnyPhone(CARRIER_APP))
.thenReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE, mTelephonyManager,
mContentResolver, USER_ID, CARRIER_APPS, ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
@@ -1156,8 +1259,9 @@
Mockito.eq(PackageManager.SYSTEM_APP_STATE_UNINSTALLED));
}
- /** Telephony is not initialized, and app is disabled until used or not installed - 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()
@@ -1173,9 +1277,11 @@
| PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
| PackageManager.MATCH_SYSTEM_ONLY))
.thenReturn(appInfo);
+
CarrierAppUtils.disableCarrierAppsUntilPrivileged(CALLING_PACKAGE,
null /* telephonyManager */, mContentResolver, USER_ID, CARRIER_APPS,
ASSOCIATED_APPS, mContext);
+
Mockito.verify(mPackageManager).setSystemAppState(CARRIER_APP,
PackageManager.SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN);
Mockito.verify(mPackageManager, Mockito.never()).setSystemAppState(Mockito.anyString(),
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
index f91c974..0f77e31 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
@@ -557,58 +557,6 @@
}
@Test
- public void testRequestIsSatelliteCommunicationAllowedForCurrentLocation() {
- mSatelliteAllowedSemaphore.drainPermits();
- setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS);
- verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS);
- mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID,
- mSatelliteAllowedReceiver);
- processAllMessages();
- assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1));
- assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, mQueriedSatelliteAllowedResultCode);
-
- resetSatelliteControllerUT();
- mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID,
- mSatelliteAllowedReceiver);
- processAllMessages();
- assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1));
- assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedSatelliteAllowedResultCode);
-
- resetSatelliteControllerUT();
- setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
- verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
- setUpResponseForRequestIsSatelliteAllowedForCurrentLocation(true,
- SATELLITE_RESULT_SUCCESS);
- mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID,
- mSatelliteAllowedReceiver);
- processAllMessages();
- assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1));
- assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteAllowedResultCode);
- assertTrue(mQueriedSatelliteAllowed);
-
- resetSatelliteControllerUT();
- setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
- verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
- setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation(SATELLITE_RESULT_SUCCESS);
- mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID,
- mSatelliteAllowedReceiver);
- processAllMessages();
- assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1));
- assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedSatelliteAllowedResultCode);
-
- resetSatelliteControllerUT();
- setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
- verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
- setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation(
- SATELLITE_RESULT_INVALID_MODEM_STATE);
- mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID,
- mSatelliteAllowedReceiver);
- processAllMessages();
- assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1));
- assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, mQueriedSatelliteAllowedResultCode);
- }
-
- @Test
public void testRequestTimeForNextSatelliteVisibility() {
mSatelliteVisibilityTimeSemaphore.drainPermits();
setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS);
@@ -1736,6 +1684,8 @@
// Trigger carrier config changed with carrierEnabledSatelliteFlag enabled
when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true);
+ mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
+ true);
for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair
: mCarrierConfigChangedListenerList) {
pair.first.execute(() -> pair.second.onCarrierConfigChanged(
@@ -2741,8 +2691,8 @@
verify(mMockSatelliteModemInterface, times(1)).setSatellitePlmn(anyInt(),
eq(plmnListPerCarrier), eq(allSatellitePlmnList), any(Message.class));
- // If the PlmnListPerCarrier and the overlay config plmn list are exist verify passing
- // the modem.
+ // If the PlmnListPerCarrier and the overlay config plmn list are exist but
+ // KEY_SATELLITE_ATTACH_SUPPORTED_BOOL is false, verify passing to the modem.
entitlementPlmnList = Arrays.stream(new String[]{"00101", "00102", "00103"}).toList();
overlayConfigPlmnList =
Arrays.stream(new String[]{"00101", "00102", "00104"}).toList();
@@ -2753,6 +2703,22 @@
entitlementPlmnList, mIIntegerConsumer);
plmnListPerCarrier = mSatelliteControllerUT.getSatellitePlmnsForCarrier(SUB_ID);
+ assertEquals(new ArrayList<>(), plmnListPerCarrier);
+ allSatellitePlmnList = SatelliteServiceUtils.mergeStrLists(
+ entitlementPlmnList, overlayConfigPlmnList);
+ verify(mMockSatelliteModemInterface, times(1)).setSatellitePlmn(anyInt(),
+ eq(entitlementPlmnList), eq(allSatellitePlmnList), any(Message.class));
+
+ // If the PlmnListPerCarrier and the overlay config plmn list are exist and
+ // KEY_SATELLITE_ATTACH_SUPPORTED_BOOL is true verify passing the modem.
+ reset(mMockSatelliteModemInterface);
+ mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
+ true);
+
+ mSatelliteControllerUT.onSatelliteEntitlementStatusUpdated(SUB_ID, true,
+ entitlementPlmnList, mIIntegerConsumer);
+
+ plmnListPerCarrier = mSatelliteControllerUT.getSatellitePlmnsForCarrier(SUB_ID);
allSatellitePlmnList = SatelliteServiceUtils.mergeStrLists(
plmnListPerCarrier, overlayConfigPlmnList);
@@ -3314,32 +3280,6 @@
}).when(mMockSatelliteModemInterface).requestIsSatelliteSupported(any(Message.class));
}
- private void setUpResponseForRequestIsSatelliteAllowedForCurrentLocation(
- boolean isSatelliteAllowed, @SatelliteManager.SatelliteResult int error) {
- SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS)
- ? null : new SatelliteException(error);
- doAnswer(invocation -> {
- Message message = (Message) invocation.getArguments()[0];
- AsyncResult.forMessage(message, isSatelliteAllowed, exception);
- message.sendToTarget();
- return null;
- }).when(mMockSatelliteModemInterface)
- .requestIsSatelliteCommunicationAllowedForCurrentLocation(any(Message.class));
- }
-
- private void setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation(
- @SatelliteManager.SatelliteResult int error) {
- SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS)
- ? null : new SatelliteException(error);
- doAnswer(invocation -> {
- Message message = (Message) invocation.getArguments()[0];
- AsyncResult.forMessage(message, null, exception);
- message.sendToTarget();
- return null;
- }).when(mMockSatelliteModemInterface)
- .requestIsSatelliteCommunicationAllowedForCurrentLocation(any(Message.class));
- }
-
private void setUpResponseForRequestTimeForNextSatelliteVisibility(
int satelliteVisibilityTime, @SatelliteManager.SatelliteResult int error) {
SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS)
@@ -3563,24 +3503,6 @@
return true;
}
- private boolean waitForRequestIsSatelliteAllowedForCurrentLocationResult(
- int expectedNumberOfEvents) {
- for (int i = 0; i < expectedNumberOfEvents; i++) {
- try {
- if (!mSatelliteAllowedSemaphore.tryAcquire(TIMEOUT, TimeUnit.MILLISECONDS)) {
- loge("Timeout to receive "
- + "requestIsCommunicationAllowedForCurrentLocation()"
- + " callback");
- return false;
- }
- } catch (Exception ex) {
- loge("waitForRequestIsSatelliteSupportedResult: Got exception=" + ex);
- return false;
- }
- }
- return true;
- }
-
private boolean waitForRequestTimeForNextSatelliteVisibilityResult(
int expectedNumberOfEvents) {
for (int i = 0; i < expectedNumberOfEvents; i++) {