Merge "Mainline use cellSignalStrength instead"

This commit is contained in:
SongFerng Wang
2019-12-12 10:01:20 +00:00
committed by Gerrit Code Review
2 changed files with 118 additions and 15 deletions

View File

@@ -26,6 +26,7 @@ import android.os.Bundle;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.telephony.CarrierConfigManager; import android.telephony.CarrierConfigManager;
import android.telephony.CellSignalStrength;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
@@ -48,6 +49,8 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnResume;
import java.util.List;
public class SimStatusDialogController implements LifecycleObserver, OnResume, OnPause { public class SimStatusDialogController implements LifecycleObserver, OnResume, OnPause {
private final static String TAG = "SimStatusDialogCtrl"; private final static String TAG = "SimStatusDialogCtrl";
@@ -430,11 +433,37 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
} }
private int getDbm(SignalStrength signalStrength) { private int getDbm(SignalStrength signalStrength) {
return signalStrength.getDbm(); List<CellSignalStrength> cellSignalStrengthList = signalStrength.getCellSignalStrengths();
int dbm = -1;
if (cellSignalStrengthList == null) {
return dbm;
}
for (CellSignalStrength cell : cellSignalStrengthList) {
if (cell.getDbm() != -1) {
dbm = cell.getDbm();
break;
}
}
return dbm;
} }
private int getAsuLevel(SignalStrength signalStrength) { private int getAsuLevel(SignalStrength signalStrength) {
return signalStrength.getAsuLevel(); List<CellSignalStrength> cellSignalStrengthList = signalStrength.getCellSignalStrengths();
int asu = -1;
if (cellSignalStrengthList == null) {
return asu;
}
for (CellSignalStrength cell : cellSignalStrengthList) {
if (cell.getAsuLevel() != -1) {
asu = cell.getAsuLevel();
break;
}
}
return asu;
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -45,6 +45,10 @@ import android.content.Context;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager; import android.telephony.CarrierConfigManager;
import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthCdma;
import android.telephony.CellSignalStrengthLte;
import android.telephony.CellSignalStrengthWcdma;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
@@ -73,6 +77,9 @@ import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowPackageManager; import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowDeviceInfoUtils.class}) @Config(shadows = {ShadowDeviceInfoUtils.class})
public class SimStatusDialogControllerTest { public class SimStatusDialogControllerTest {
@@ -90,6 +97,12 @@ public class SimStatusDialogControllerTest {
@Mock @Mock
private SignalStrength mSignalStrength; private SignalStrength mSignalStrength;
@Mock @Mock
private CellSignalStrengthCdma mCellSignalStrengthCdma;
@Mock
private CellSignalStrengthLte mCellSignalStrengthLte;
@Mock
private CellSignalStrengthWcdma mCellSignalStrengthWcdma;
@Mock
private CarrierConfigManager mCarrierConfigManager; private CarrierConfigManager mCarrierConfigManager;
@Mock @Mock
private PersistableBundle mPersistableBundle; private PersistableBundle mPersistableBundle;
@@ -113,8 +126,15 @@ public class SimStatusDialogControllerTest {
mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */)); mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
ShadowDeviceInfoUtils.setPhoneNumber(""); ShadowDeviceInfoUtils.setPhoneNumber("");
doReturn(mServiceState).when(mController).getCurrentServiceState(); doReturn(mServiceState).when(mController).getCurrentServiceState();
doReturn(0).when(mSignalStrength).getDbm(); //CellSignalStrength setup
doReturn(0).when(mSignalStrength).getAsuLevel(); doReturn(0).when(mCellSignalStrengthCdma).getDbm();
doReturn(0).when(mCellSignalStrengthCdma).getAsuLevel();
doReturn(0).when(mCellSignalStrengthLte).getDbm();
doReturn(0).when(mCellSignalStrengthLte).getAsuLevel();
doReturn(0).when(mCellSignalStrengthWcdma).getDbm();
doReturn(0).when(mCellSignalStrengthWcdma).getAsuLevel();
doReturn(null).when(mSignalStrength).getCellSignalStrengths();
doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
doReturn(mSignalStrength).when(mController).getSignalStrength(); doReturn(mSignalStrength).when(mController).getSignalStrength();
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt()); doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
@@ -226,18 +246,36 @@ public class SimStatusDialogControllerTest {
} }
@Test @Test
public void initialize_updateSignalStrengthWith50_shouldUpdateSignalStrengthTo50() { public void initialize_updateSignalStrengthWithLte50Wcdma40_shouldUpdateSignalStrengthTo50() {
final int signalDbm = 50; final int lteDbm = 50;
final int signalAsu = 50; final int lteAsu = 50;
doReturn(signalDbm).when(mSignalStrength).getDbm(); final int wcdmaDbm = 40;
doReturn(signalAsu).when(mSignalStrength).getAsuLevel(); final int wcdmaAsu = 40;
setupCellSignalStrength_lteWcdma(lteDbm, lteAsu, wcdmaDbm, wcdmaAsu);
when(mPersistableBundle.getBoolean( when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
mController.initialize(); mController.initialize();
final String signalStrengthString = final String signalStrengthString =
mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu); mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
}
@Test
public void initialize_updateSignalStrengthWithLte50Cdma30_shouldUpdateSignalStrengthTo50() {
final int lteDbm = 50;
final int lteAsu = 50;
final int cdmaDbm = 30;
final int cdmaAsu = 30;
setupCellSignalStrength_lteCdma(lteDbm, lteAsu, cdmaDbm, cdmaAsu);
when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
mController.initialize();
final String signalStrengthString =
mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString); verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
} }
@@ -248,17 +286,16 @@ public class SimStatusDialogControllerTest {
when(mPersistableBundle.getBoolean( when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
final int signalDbm = 50; final int lteDbm = 50;
final int signalAsu = 50; final int lteAsu = 50;
doReturn(signalDbm).when(mSignalStrength).getDbm(); setupCellSignalStrength_lteOnly(lteDbm, lteAsu);
doReturn(signalAsu).when(mSignalStrength).getAsuLevel();
when(mPersistableBundle.getBoolean( when(mPersistableBundle.getBoolean(
CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true); CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL)).thenReturn(true);
mController.initialize(); mController.initialize();
final String signalStrengthString = final String signalStrengthString =
mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu); mContext.getString(R.string.sim_signal_strength, lteDbm, lteAsu);
verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString); verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
} }
@@ -423,4 +460,41 @@ public class SimStatusDialogControllerTest {
// we should not crash when running the following line // we should not crash when running the following line
mController.initialize(); mController.initialize();
} }
private void setupCellSignalStrength_lteWcdma(int lteDbm, int lteAsu, int wcdmaDbm,
int wcdmaAsu) {
doReturn(lteDbm).when(mCellSignalStrengthLte).getDbm();
doReturn(lteAsu).when(mCellSignalStrengthLte).getAsuLevel();
doReturn(wcdmaDbm).when(mCellSignalStrengthWcdma).getDbm();
doReturn(wcdmaAsu).when(mCellSignalStrengthWcdma).getAsuLevel();
List<CellSignalStrength> cellSignalStrengthList = new ArrayList<>(2);
cellSignalStrengthList.add(mCellSignalStrengthLte);
cellSignalStrengthList.add(mCellSignalStrengthWcdma);
doReturn(cellSignalStrengthList).when(mSignalStrength).getCellSignalStrengths();
}
private void setupCellSignalStrength_lteCdma(int lteDbm, int lteAsu, int cdmaDbm, int cdmaAsu) {
doReturn(lteDbm).when(mCellSignalStrengthLte).getDbm();
doReturn(lteAsu).when(mCellSignalStrengthLte).getAsuLevel();
doReturn(cdmaDbm).when(mCellSignalStrengthCdma).getDbm();
doReturn(cdmaAsu).when(mCellSignalStrengthCdma).getAsuLevel();
List<CellSignalStrength> cellSignalStrengthList = new ArrayList<>(2);
cellSignalStrengthList.add(mCellSignalStrengthLte);
cellSignalStrengthList.add(mCellSignalStrengthCdma);
doReturn(cellSignalStrengthList).when(mSignalStrength).getCellSignalStrengths();
}
private void setupCellSignalStrength_lteOnly(int lteDbm, int lteAsu) {
doReturn(lteDbm).when(mCellSignalStrengthLte).getDbm();
doReturn(lteAsu).when(mCellSignalStrengthLte).getAsuLevel();
List<CellSignalStrength> cellSignalStrengthList = new ArrayList<>(2);
cellSignalStrengthList.add(mCellSignalStrengthLte);
doReturn(cellSignalStrengthList).when(mSignalStrength).getCellSignalStrengths();
}
} }