Modify PhoneCapabilities for device capabilities
Support IRadioConfig getPhoneCapabilities_1_3
Created ModemFeatures LongDef and SlotType IntDef
Update old PhoneCapability methods to use new fields
Test: atest FrameworksTelephonyTests
Bug: 143238237
Bug: 143238191
Change-Id: Ic00bb3ba81d5460a04f08312fc9b90bf61cd4c6b
diff --git a/Android.bp b/Android.bp
index 21d4c0f..34c8a47 100644
--- a/Android.bp
+++ b/Android.bp
@@ -96,6 +96,7 @@
"android.hardware.radio.config-V1.0-java-shallow",
"android.hardware.radio.config-V1.1-java-shallow",
"android.hardware.radio.config-V1.2-java-shallow",
+ "android.hardware.radio.config-V1.3-java-shallow",
"android.hardware.radio.deprecated-V1.0-java-shallow",
"ecc-protos-lite",
"libphonenumber-nogeocoder",
diff --git a/src/java/com/android/internal/telephony/CellularNetworkValidator.java b/src/java/com/android/internal/telephony/CellularNetworkValidator.java
index 0530312..4b8e102 100644
--- a/src/java/com/android/internal/telephony/CellularNetworkValidator.java
+++ b/src/java/com/android/internal/telephony/CellularNetworkValidator.java
@@ -102,7 +102,7 @@
*/
public boolean isValidationFeatureSupported() {
return PhoneConfigurationManager.getInstance().getCurrentPhoneCapability()
- .validationBeforeSwitchSupported;
+ .getPsDataConnectionLingerTimeMillis() > 0;
}
@VisibleForTesting
diff --git a/src/java/com/android/internal/telephony/PhoneConfigurationManager.java b/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
index 86ab72b..7a0614c 100644
--- a/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
+++ b/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
@@ -28,12 +28,12 @@
import android.os.RegistrantList;
import android.sysprop.TelephonyProperties;
import android.telephony.PhoneCapability;
-import com.android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.telephony.Rlog;
import java.util.HashMap;
import java.util.Map;
@@ -311,7 +311,7 @@
}
public int getNumberOfModemsWithSimultaneousDataConnections() {
- return mStaticCapability.maxActiveData;
+ return mStaticCapability.getMaxActivePsVoice();
}
private void notifyCapabilityChanged() {
@@ -326,7 +326,7 @@
*/
public void switchMultiSimConfig(int numOfSims) {
log("switchMultiSimConfig: with numOfSims = " + numOfSims);
- if (getStaticPhoneCapability().logicalModemList.size() < numOfSims) {
+ if (getStaticPhoneCapability().getLogicalModemUuids().size() < numOfSims) {
log("switchMultiSimConfig: Phone is not capable of enabling "
+ numOfSims + " sims, exiting!");
return;
diff --git a/src/java/com/android/internal/telephony/RadioConfig.java b/src/java/com/android/internal/telephony/RadioConfig.java
index 922aba7..24d79f2 100644
--- a/src/java/com/android/internal/telephony/RadioConfig.java
+++ b/src/java/com/android/internal/telephony/RadioConfig.java
@@ -38,15 +38,19 @@
import android.os.Registrant;
import android.os.RemoteException;
import android.os.WorkSource;
-import com.android.telephony.Rlog;
+import android.telephony.PhoneCapability;
+import android.telephony.Rlog;
+import android.telephony.SimSlotCapability;
import android.util.SparseArray;
import com.android.internal.telephony.uicc.IccSlotStatus;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.NoSuchElementException;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
/**
* This class provides wrapper APIs for IRadioConfig interface.
@@ -64,6 +68,8 @@
private static final HalVersion RADIO_CONFIG_HAL_VERSION_1_1 = new HalVersion(1, 1);
+ private static final HalVersion RADIO_CONFIG_HAL_VERSION_1_3 = new HalVersion(1, 3);
+
private final boolean mIsMobileNetworkSupported;
private volatile IRadioConfig mRadioConfigProxy = null;
// IRadioConfig version
@@ -340,11 +346,20 @@
logd(rr.serialString() + "> " + requestToString(rr.mRequest));
}
- try {
- ((android.hardware.radio.config.V1_1.IRadioConfig) mRadioConfigProxy)
- .getPhoneCapability(rr.mSerial);
- } catch (RemoteException | RuntimeException e) {
- resetProxyAndRequestList("getPhoneCapability", e);
+ if (mRadioConfigVersion.greaterOrEqual(RADIO_CONFIG_HAL_VERSION_1_3)) {
+ try {
+ ((android.hardware.radio.config.V1_3.IRadioConfig) mRadioConfigProxy)
+ .getPhoneCapability_1_3(rr.mSerial);
+ } catch (RemoteException | RuntimeException e) {
+ resetProxyAndRequestList("getPhoneCapability_1_3", e);
+ }
+ } else {
+ try {
+ ((android.hardware.radio.config.V1_1.IRadioConfig) mRadioConfigProxy)
+ .getPhoneCapability(rr.mSerial);
+ } catch (RemoteException | RuntimeException e) {
+ resetProxyAndRequestList("getPhoneCapability", e);
+ }
}
}
@@ -487,6 +502,49 @@
return response;
}
+ static PhoneCapability convertHalPhoneCapability(
+ android.hardware.radio.config.V1_1.PhoneCapability pc) {
+ long psDataConnectionLingerTimeMillis = pc.isInternetLingeringSupported ? 1 : 0;
+
+ List<String> logicalModemUuids = new ArrayList<>();
+ for (android.hardware.radio.config.V1_1.ModemInfo modemInfo : pc.logicalModemList) {
+ logicalModemUuids.add("com.xxxx.lm" + modemInfo.modemId);
+ }
+
+ List<List<Long>> features = new ArrayList<>();
+ for (int i = 0; i < pc.maxActiveData; i++) {
+ List<Long> feature = new ArrayList<>();
+ feature.add(PhoneCapability.MODEM_FEATURE_PS_VOICE_REG);
+ features.add(feature);
+ }
+
+ return new PhoneCapability(0, 0, 0, 0, psDataConnectionLingerTimeMillis, 0,
+ null, null, null, null, logicalModemUuids, null, features);
+ }
+
+ static PhoneCapability convertHalPhoneCapability_1_3(
+ android.hardware.radio.config.V1_3.PhoneCapability pc) {
+ List<SimSlotCapability> simSlotCapabilities = new ArrayList<>();
+ for (android.hardware.radio.config.V1_3.SimSlotCapability sc : pc.simSlotCapabilities) {
+ simSlotCapabilities.add(new SimSlotCapability(sc.physicalSlotId, sc.slotType));
+ }
+
+ List<List<Long>> features = new ArrayList<>();
+ for (android.hardware.radio.config.V1_3.ConcurrentModemFeatures cmf
+ : pc.concurrentFeatureSupport) {
+ features.add(cmf.modemFeatures
+ .stream()
+ .mapToLong(Integer::longValue)
+ .boxed()
+ .collect(Collectors.toList()));
+ }
+
+ return new PhoneCapability(pc.utranUeCategoryDl, pc.utranUeCategoryUl,
+ pc.eutranUeCategoryDl, pc.eutranUeCategoryUl, pc.psDataConnectionLingerTimeMillis,
+ pc.supportedRats, pc.geranBands, pc.utranBands, pc.eutranBands, pc.ngranBands,
+ pc.logicalModemUuids, simSlotCapabilities, features);
+ }
+
private static void logd(String log) {
Rlog.d(TAG, log);
}
diff --git a/src/java/com/android/internal/telephony/RadioConfigResponse.java b/src/java/com/android/internal/telephony/RadioConfigResponse.java
index 8e509de..0f4a719 100644
--- a/src/java/com/android/internal/telephony/RadioConfigResponse.java
+++ b/src/java/com/android/internal/telephony/RadioConfigResponse.java
@@ -20,14 +20,12 @@
import android.hardware.radio.V1_0.RadioResponseInfo;
import android.hardware.radio.config.V1_1.ModemsConfig;
import android.hardware.radio.config.V1_2.IRadioConfigResponse;
-import android.telephony.ModemInfo;
import android.telephony.PhoneCapability;
-import com.android.telephony.Rlog;
import com.android.internal.telephony.uicc.IccSlotStatus;
+import com.android.telephony.Rlog;
import java.util.ArrayList;
-import java.util.List;
/**
* This class is the implementation of IRadioConfigResponse interface.
@@ -115,23 +113,6 @@
}
}
- private PhoneCapability convertHalPhoneCapability(
- android.hardware.radio.config.V1_1.PhoneCapability phoneCapability) {
- // TODO b/121394331: clean up V1_1.PhoneCapability fields.
- int maxActiveVoiceCalls = 0;
- int maxActiveData = phoneCapability.maxActiveData;
- int max5G = 0;
- boolean validationBeforeSwitchSupported = phoneCapability.isInternetLingeringSupported;
- List<ModemInfo> logicalModemList = new ArrayList();
-
- for (android.hardware.radio.config.V1_1.ModemInfo
- modemInfo : phoneCapability.logicalModemList) {
- logicalModemList.add(new ModemInfo(modemInfo.modemId));
- }
-
- return new PhoneCapability(maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList,
- validationBeforeSwitchSupported);
- }
/**
* Response function for IRadioConfig.getPhoneCapability().
*/
@@ -140,7 +121,7 @@
RILRequest rr = mRadioConfig.processResponse(responseInfo);
if (rr != null) {
- PhoneCapability ret = convertHalPhoneCapability(phoneCapability);
+ PhoneCapability ret = RadioConfig.convertHalPhoneCapability(phoneCapability);
if (responseInfo.error == RadioError.NONE) {
// send response
RadioResponse.sendMessageResponse(rr.mResult, ret);
@@ -158,6 +139,31 @@
}
/**
+ * Response function for IRadioConfig.getPhoneCapability_1_3().
+ */
+ public void getPhoneCapabilityResponse_1_3(RadioResponseInfo responseInfo,
+ android.hardware.radio.config.V1_3.PhoneCapability phoneCapability) {
+ RILRequest rr = mRadioConfig.processResponse(responseInfo);
+
+ if (rr != null) {
+ PhoneCapability ret = RadioConfig.convertHalPhoneCapability_1_3(phoneCapability);
+ if (responseInfo.error == RadioError.NONE) {
+ // send response
+ RadioResponse.sendMessageResponse(rr.mResult, ret);
+ Rlog.d(TAG, rr.serialString() + "< "
+ + mRadioConfig.requestToString(rr.mRequest) + " " + ret.toString());
+ } else {
+ rr.onError(responseInfo.error, ret);
+ Rlog.e(TAG, rr.serialString() + "< "
+ + mRadioConfig.requestToString(rr.mRequest) + " error "
+ + responseInfo.error);
+ }
+ } else {
+ Rlog.e(TAG, "getPhoneCapabilityResponse_1_3: Error " + responseInfo.toString());
+ }
+ }
+
+ /**
* Response function for IRadioConfig.setPreferredDataModem().
*/
public void setPreferredDataModemResponse(RadioResponseInfo responseInfo) {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkValidatorTest.java b/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkValidatorTest.java
index 155e3ea..e564da5 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkValidatorTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/CellularNetworkValidatorTest.java
@@ -46,9 +46,9 @@
private CellularNetworkValidator mValidatorUT;
private int mValidatedSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private static final PhoneCapability CAPABILITY_WITH_VALIDATION_SUPPORTED =
- new PhoneCapability(1, 1, 0, null, true);
+ new PhoneCapability(0, 0, 0, 0, 1, 0, null, null, null, null, null, null, null);
private static final PhoneCapability CAPABILITY_WITHOUT_VALIDATION_SUPPORTED =
- new PhoneCapability(1, 1, 0, null, false);
+ new PhoneCapability(0, 0, 0, 0, 0, 0, null, null, null, null, null, null, null);
CellularNetworkValidator.ValidationCallback mCallback = (validated, subId) -> {
mValidated = validated;
@@ -75,7 +75,7 @@
*/
@Test
@SmallTest
- public void testValidationSupported() throws Exception {
+ public void testValidationSupported() {
doReturn(CAPABILITY_WITH_VALIDATION_SUPPORTED).when(mPhoneConfigurationManager)
.getCurrentPhoneCapability();
assertTrue(mValidatorUT.isValidationFeatureSupported());
@@ -90,7 +90,7 @@
*/
@Test
@SmallTest
- public void testValidateSuccess() throws Exception {
+ public void testValidateSuccess() {
int subId = 1;
int timeout = 1000;
NetworkRequest expectedRequest = new NetworkRequest.Builder()
@@ -124,7 +124,7 @@
*/
@Test
@SmallTest
- public void testValidateTimeout() throws Exception {
+ public void testValidateTimeout() {
int subId = 1;
int timeout = 100;
NetworkRequest expectedRequest = new NetworkRequest.Builder()
@@ -159,7 +159,7 @@
*/
@Test
@SmallTest
- public void testValidateFailure() throws Exception {
+ public void testValidateFailure() {
int subId = 1;
int timeout = 100;
NetworkRequest expectedRequest = new NetworkRequest.Builder()
@@ -192,7 +192,7 @@
*/
@Test
@SmallTest
- public void testNetworkAvailableNotValidated() throws Exception {
+ public void testNetworkAvailableNotValidated() {
int subId = 1;
int timeout = 100;
NetworkRequest expectedRequest = new NetworkRequest.Builder()
diff --git a/tests/telephonytests/src/com/android/internal/telephony/PhoneCapabilityTest.java b/tests/telephonytests/src/com/android/internal/telephony/PhoneCapabilityTest.java
index a504dc1..53d80b2 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/PhoneCapabilityTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/PhoneCapabilityTest.java
@@ -20,9 +20,9 @@
import static org.junit.Assert.assertNotEquals;
import android.os.Parcel;
-import android.telephony.ModemInfo;
+import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.PhoneCapability;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.telephony.SimSlotCapability;
import org.junit.Test;
@@ -31,53 +31,108 @@
public class PhoneCapabilityTest {
@Test
- @SmallTest
- public void basicTests() throws Exception {
- int maxActiveVoiceCalls = 1;
- int maxActiveData = 2;
- int max5G = 3;
- ModemInfo modemInfo = new ModemInfo(1, 2, true, false);
- List<ModemInfo> logicalModemList = new ArrayList<>();
- logicalModemList.add(modemInfo);
+ public void basicTests() {
+ int utranUeCategoryDl = 1;
+ int utranUeCategoryUl = 2;
+ int eutranUeCategoryDl = 3;
+ int eutranUeCategoryUl = 4;
+ long lingerTime = 5;
+ long supportedRats = 6;
+ List<Integer> geranBands = new ArrayList<>();
+ geranBands.add(1);
+ List<Integer> utranBands = new ArrayList<>();
+ utranBands.add(2);
+ List<Integer> eutranBands = new ArrayList<>();
+ eutranBands.add(3);
+ List<Integer> ngranBands = new ArrayList<>();
+ ngranBands.add(4);
+ List<String> logicalModemUuids = new ArrayList<>();
+ logicalModemUuids.add("com.google.android.lm0");
+ List<SimSlotCapability> simSlotCapabilities = new ArrayList<>();
+ simSlotCapabilities.add(new SimSlotCapability(1, 2));
+ List<List<Long>> concurrentFeaturesSupport = new ArrayList<>();
+ List<Long> feature = new ArrayList<>();
+ feature.add(PhoneCapability.MODEM_FEATURE_CDMA2000_EHRPD_REG);
+ concurrentFeaturesSupport.add(feature);
- PhoneCapability capability = new PhoneCapability(maxActiveVoiceCalls, maxActiveData, max5G,
- logicalModemList, false);
+ PhoneCapability capability = new PhoneCapability(utranUeCategoryDl, utranUeCategoryUl,
+ eutranUeCategoryDl, eutranUeCategoryUl, lingerTime,
+ supportedRats, geranBands, utranBands, eutranBands, ngranBands, logicalModemUuids,
+ simSlotCapabilities, concurrentFeaturesSupport);
- assertEquals(maxActiveVoiceCalls, capability.maxActiveVoiceCalls);
- assertEquals(maxActiveData, capability.maxActiveData);
- assertEquals(max5G, capability.max5G);
- assertEquals(1, capability.logicalModemList.size());
- assertEquals(modemInfo, capability.logicalModemList.get(0));
- PhoneCapability toCompare = new PhoneCapability(
- maxActiveVoiceCalls + 1, maxActiveData - 1, max5G, logicalModemList, false);
- assertEquals(capability, new PhoneCapability(
- maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList, false));
+ assertEquals(utranUeCategoryDl, capability.getUeCategory(false, AccessNetworkType.UTRAN));
+ assertEquals(utranUeCategoryUl, capability.getUeCategory(true, AccessNetworkType.UTRAN));
+ assertEquals(eutranUeCategoryDl, capability.getUeCategory(false, AccessNetworkType.EUTRAN));
+ assertEquals(eutranUeCategoryUl, capability.getUeCategory(true, AccessNetworkType.EUTRAN));
+ assertEquals(lingerTime, capability.getPsDataConnectionLingerTimeMillis());
+ assertEquals(supportedRats, capability.getSupportedRats());
+ assertEquals(geranBands, capability.getBands(AccessNetworkType.GERAN));
+ assertEquals(utranBands, capability.getBands(AccessNetworkType.UTRAN));
+ assertEquals(eutranBands, capability.getBands(AccessNetworkType.EUTRAN));
+ assertEquals(ngranBands, capability.getBands(AccessNetworkType.NGRAN));
+ assertEquals(logicalModemUuids, capability.getLogicalModemUuids());
+ assertEquals(simSlotCapabilities, capability.getSimSlotCapabilities());
+ assertEquals(concurrentFeaturesSupport, capability.getConcurrentFeaturesSupport());
+
+ PhoneCapability toCompare = new PhoneCapability(utranUeCategoryDl + 1,
+ utranUeCategoryUl + 1, eutranUeCategoryDl + 1, eutranUeCategoryUl + 1,
+ lingerTime + 1, supportedRats + 1, geranBands, utranBands, eutranBands, ngranBands,
+ logicalModemUuids, simSlotCapabilities, concurrentFeaturesSupport);
+ assertEquals(capability, new PhoneCapability(utranUeCategoryDl, utranUeCategoryUl,
+ eutranUeCategoryDl, eutranUeCategoryUl, lingerTime,
+ supportedRats, geranBands, utranBands, eutranBands, ngranBands, logicalModemUuids,
+ simSlotCapabilities, concurrentFeaturesSupport));
assertNotEquals(capability, toCompare);
}
@Test
- @SmallTest
- public void parcelReadWrite() throws Exception {
- int maxActiveVoiceCalls = 1;
- int maxActiveData = 2;
- int max5G = 3;
- ModemInfo modemInfo = new ModemInfo(1, 2, true, false);
- List<ModemInfo> logicalModemList = new ArrayList<>();
- logicalModemList.add(modemInfo);
+ public void parcelReadWrite() {
+ int utranUeCategoryDl = 1;
+ int utranUeCategoryUl = 2;
+ int eutranUeCategoryDl = 3;
+ int eutranUeCategoryUl = 4;
+ long lingerTime = 5;
+ long supportedRats = 6;
+ List<Integer> geranBands = new ArrayList<>();
+ geranBands.add(1);
+ List<Integer> utranBands = new ArrayList<>();
+ utranBands.add(2);
+ List<Integer> eutranBands = new ArrayList<>();
+ eutranBands.add(3);
+ List<Integer> ngranBands = new ArrayList<>();
+ ngranBands.add(4);
+ List<String> logicalModemUuids = new ArrayList<>();
+ logicalModemUuids.add("com.google.android.lm0");
+ List<SimSlotCapability> simSlotCapabilities = new ArrayList<>();
+ simSlotCapabilities.add(new SimSlotCapability(1, 2));
+ List<List<Long>> concurrentFeaturesSupport = new ArrayList<>();
+ List<Long> feature = new ArrayList<>();
+ feature.add(PhoneCapability.MODEM_FEATURE_NETWORK_SCAN);
+ concurrentFeaturesSupport.add(feature);
- PhoneCapability capability = new PhoneCapability(maxActiveVoiceCalls, maxActiveData, max5G,
- logicalModemList, false);
+ PhoneCapability capability = new PhoneCapability(utranUeCategoryDl, utranUeCategoryUl,
+ eutranUeCategoryDl, eutranUeCategoryUl, lingerTime,
+ supportedRats, geranBands, utranBands, eutranBands, ngranBands, logicalModemUuids,
+ simSlotCapabilities, concurrentFeaturesSupport);
Parcel parcel = Parcel.obtain();
capability.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
PhoneCapability toCompare = PhoneCapability.CREATOR.createFromParcel(parcel);
- assertEquals(maxActiveVoiceCalls, toCompare.maxActiveVoiceCalls);
- assertEquals(maxActiveData, toCompare.maxActiveData);
- assertEquals(max5G, toCompare.max5G);
- assertEquals(1, toCompare.logicalModemList.size());
- assertEquals(modemInfo, toCompare.logicalModemList.get(0));
+ assertEquals(utranUeCategoryDl, capability.getUeCategory(false, AccessNetworkType.UTRAN));
+ assertEquals(utranUeCategoryUl, capability.getUeCategory(true, AccessNetworkType.UTRAN));
+ assertEquals(eutranUeCategoryDl, capability.getUeCategory(false, AccessNetworkType.EUTRAN));
+ assertEquals(eutranUeCategoryUl, capability.getUeCategory(true, AccessNetworkType.EUTRAN));
+ assertEquals(lingerTime, capability.getPsDataConnectionLingerTimeMillis());
+ assertEquals(supportedRats, capability.getSupportedRats());
+ assertEquals(geranBands, capability.getBands(AccessNetworkType.GERAN));
+ assertEquals(utranBands, capability.getBands(AccessNetworkType.UTRAN));
+ assertEquals(eutranBands, capability.getBands(AccessNetworkType.EUTRAN));
+ assertEquals(ngranBands, capability.getBands(AccessNetworkType.NGRAN));
+ assertEquals(logicalModemUuids, capability.getLogicalModemUuids());
+ assertEquals(simSlotCapabilities, capability.getSimSlotCapabilities());
+ assertEquals(concurrentFeaturesSupport, capability.getConcurrentFeaturesSupport());
assertEquals(capability, toCompare);
}
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/PhoneSwitcherTest.java b/tests/telephonytests/src/com/android/internal/telephony/PhoneSwitcherTest.java
index 443eb4d..04d0c89 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/PhoneSwitcherTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/PhoneSwitcherTest.java
@@ -123,8 +123,8 @@
@Before
public void setUp() throws Exception {
super.setUp(getClass().getSimpleName());
-
- PhoneCapability phoneCapability = new PhoneCapability(1, 1, 0, null, false);
+ PhoneCapability phoneCapability = new PhoneCapability(0, 0, 0, 0, 0, 0,
+ null, null, null, null, null, null, null);
doReturn(phoneCapability).when(mPhoneConfigurationManager).getCurrentPhoneCapability();
doReturn(Call.State.ACTIVE).when(mActiveCall).getState();
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SimSlotCapabilityTest.java b/tests/telephonytests/src/com/android/internal/telephony/SimSlotCapabilityTest.java
new file mode 100644
index 0000000..8763c82
--- /dev/null
+++ b/tests/telephonytests/src/com/android/internal/telephony/SimSlotCapabilityTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telephony;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import android.os.Parcel;
+import android.telephony.SimSlotCapability;
+
+import org.junit.Test;
+
+public class SimSlotCapabilityTest {
+ @Test
+ public void basicTests() {
+ int physicalSlotId = 0;
+ int slotType = SimSlotCapability.SLOT_TYPE_UICC;
+
+ SimSlotCapability capability = new SimSlotCapability(physicalSlotId, slotType);
+ assertEquals(physicalSlotId, capability.getPhysicalSlotIndex());
+ assertEquals(slotType, capability.getSlotType());
+
+ SimSlotCapability toCompare = new SimSlotCapability(physicalSlotId + 1,
+ SimSlotCapability.SLOT_TYPE_IUICC);
+ assertEquals(capability, new SimSlotCapability(physicalSlotId, slotType));
+ assertNotEquals(capability, toCompare);
+ }
+
+ @Test
+ public void parcelReadWrite() {
+ int physicalSlotId = 0;
+ int slotType = SimSlotCapability.SLOT_TYPE_EUICC;
+
+ SimSlotCapability capability = new SimSlotCapability(physicalSlotId, slotType);
+
+ Parcel parcel = Parcel.obtain();
+ capability.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ SimSlotCapability toCompare = SimSlotCapability.CREATOR.createFromParcel(parcel);
+
+ assertEquals(physicalSlotId, capability.getPhysicalSlotIndex());
+ assertEquals(slotType, capability.getSlotType());
+ assertEquals(capability, toCompare);
+ }
+}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
index 0a40be4..9b2344c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
@@ -129,16 +129,17 @@
doReturn(mMockSubInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
doReturn(0/*slotIndex*/).when(mMockSubInfo).getSimSlotIndex();
// mTelephonyRegistry.listen with notifyNow = true should trigger callback immediately.
- PhoneCapability phoneCapability = new PhoneCapability(1, 2, 3, null, false);
+ PhoneCapability phoneCapability = new PhoneCapability(1, 2, 3, 4, 5, 6,
+ null, null, null, null, null, null, null);
mTelephonyRegistry.notifyPhoneCapabilityChanged(phoneCapability);
mTelephonyRegistry.listenWithFeature(mContext.getOpPackageName(), mContext.getFeatureId(),
- mPhoneStateListener.callback,
- LISTEN_PHONE_CAPABILITY_CHANGE, true);
+ mPhoneStateListener.callback, LISTEN_PHONE_CAPABILITY_CHANGE, true);
processAllMessages();
assertEquals(phoneCapability, mPhoneCapability);
// notifyPhoneCapabilityChanged with a new capability. Callback should be triggered.
- phoneCapability = new PhoneCapability(3, 2, 2, null, false);
+ phoneCapability = new PhoneCapability(6, 5, 4, 3, 2, 1,
+ null, null, null, null, null, null, null);
mTelephonyRegistry.notifyPhoneCapabilityChanged(phoneCapability);
processAllMessages();
assertEquals(phoneCapability, mPhoneCapability);