diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-05 13:06:07 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-05 13:06:07 +0000 |
commit | 311357c3309683825853c3624a54e918f6678f3d (patch) | |
tree | 7c5af03f17d76f24d8d2d7790f803bf731f36f48 | |
parent | b39b7b2976e14b658e0e1737dea265f22a6d1271 (diff) | |
parent | dbc501f6aee7e87ff3e10d60c54c4ff6a820faaa (diff) | |
download | CellBroadcastReceiver-android12-mainline-media-swcodec-release.tar.gz |
Snap for 8152310 from dbc501f6aee7e87ff3e10d60c54c4ff6a820faaa to mainline-media-swcodec-releaseandroid-mainline-12.0.0_r91android12-mainline-media-swcodec-release
Change-Id: I2b052403c8ba81087a734e3234132d3a0fa05472
6 files changed, 63 insertions, 61 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index dd6291f03..f4fe98d17 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -33,7 +33,6 @@ import android.os.Bundle; import android.os.UserManager; import android.os.Vibrator; import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; import android.util.Log; import android.view.MenuItem; import android.widget.Switch; @@ -881,17 +880,8 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { */ public static @NonNull Resources getResources(@NonNull Context context, int subId) { - try { - if (subId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - || !SubscriptionManager.isValidSubscriptionId(subId) - // per the latest design, subId can be valid earlier than mcc mnc is known to - // telephony. check if sim is loaded to avoid caching the wrong resources. - || context.getSystemService(TelephonyManager.class).getSimApplicationState( - SubscriptionManager.getSlotIndex(subId)) != TelephonyManager.SIM_STATE_LOADED) { - return context.getResources(); - } - } catch (Exception e) { - Log.d(TAG, "Fail to getSimApplicationState due to " + e); + if (subId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID + || !SubscriptionManager.isValidSubscriptionId(subId)) { return context.getResources(); } @@ -902,7 +892,11 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { Resources res = SubscriptionManager.getResourcesForSubId(context, subId); - sResourcesCache.put(subId, res); + if (res.getConfiguration().mnc != 0) { + Log.d(TAG, "Cache resource for sub: " + subId + ", mcc: " + + res.getConfiguration().mcc + ", mnc:" + res.getConfiguration().mnc); + sResourcesCache.put(subId, res); + } return res; } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java index 4af6cc2f0..db5a270cd 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java @@ -16,11 +16,14 @@ package com.android.cellbroadcastreceiver.unit; +import static org.mockito.Mockito.spy; + import android.app.Activity; import android.app.ResourcesManager; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; +import android.content.res.Configuration; import android.content.res.Resources; import android.os.Handler; import android.test.ActivityUnitTestCase; @@ -114,8 +117,11 @@ public class CellBroadcastActivityTestCase<T extends Activity> extends ActivityU private HashMap<String, Object> mInjectedSystemServices = new HashMap<>(); + private Resources mResources; + public TestContext(Context base) { super(base); + mResources = spy(super.getResources()); } public <S> void injectSystemService(Class<S> cls, S service) { @@ -144,17 +150,14 @@ public class CellBroadcastActivityTestCase<T extends Activity> extends ActivityU return super.getSystemService(name); } - Resources mResources; @Override public Resources getResources() { - if (mResources != null) { - return mResources; - } - return super.getResources(); + return mResources; } - public void setResources(Resources resources) { - mResources = resources; + @Override + public Context createConfigurationContext(Configuration overrideConfiguration) { + return this; } } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java index acca9afe1..dd651e513 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java @@ -36,7 +36,6 @@ import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.telephony.SmsCbMessage; -import android.telephony.TelephonyManager; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; @@ -45,6 +44,7 @@ import android.widget.TextView; import com.android.cellbroadcastreceiver.CellBroadcastAlertDialog; import com.android.cellbroadcastreceiver.CellBroadcastAlertService; +import com.android.cellbroadcastreceiver.CellBroadcastSettings; import com.android.cellbroadcastreceiver.R; import com.android.internal.telephony.gsm.SmsCbConstants; @@ -69,9 +69,6 @@ public class CellBroadcastAlertDialogTest extends @Mock private IThermalService.Stub mMockedThermalService; - @Mock - TelephonyManager mTelephonyManager; - @Captor private ArgumentCaptor<Integer> mInt; @@ -90,9 +87,6 @@ public class CellBroadcastAlertDialogTest extends private ArrayList<SmsCbMessage> mMessageList; - @Mock - Resources mMockResources; - @Override protected Intent createActivityIntent() { mMessageList = new ArrayList<>(1); @@ -118,9 +112,7 @@ public class CellBroadcastAlertDialogTest extends mPowerManager = new PowerManager(mContext, mMockedPowerManagerService, mMockedThermalService, null); injectSystemService(PowerManager.class, mPowerManager); - doReturn(TelephonyManager.SIM_STATE_UNKNOWN).when(mTelephonyManager) - .getSimApplicationState(anyInt()); - injectSystemService(TelephonyManager.class, mTelephonyManager); + CellBroadcastSettings.resetResourcesCache(); } @After @@ -184,9 +176,10 @@ public class CellBroadcastAlertDialogTest extends public void testGetNewMessageListIfNeeded() throws Throwable { CellBroadcastAlertDialog activity = startActivity(); - mContext.setResources(mMockResources); - doReturn(false).when(mMockResources).getBoolean( + Resources spyRes = mContext.getResources(); + doReturn(false).when(spyRes).getBoolean( R.bool.show_cmas_messages_in_priority_order); + SmsCbMessage testMessage1 = CellBroadcastAlertServiceTest .createMessageForCmasMessageClass(12412, SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL, @@ -215,13 +208,12 @@ public class CellBroadcastAlertDialogTest extends assertTrue(messageList.size() == 2); assertEquals(testMessage2.getReceivedTime(), messageList.get(1).getReceivedTime()); - doReturn(true).when(mMockResources).getBoolean( + doReturn(true).when(spyRes).getBoolean( R.bool.show_cmas_messages_in_priority_order); + messageList = activity.getNewMessageListIfNeeded(inputList1, inputList2); assertTrue(messageList.size() == 2); assertEquals(testMessage1.getReceivedTime(), messageList.get(1).getReceivedTime()); - - mContext.setResources(null); } @InstrumentationTest diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java index 2e767feaa..67251d910 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java @@ -27,6 +27,7 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.content.res.Resources; import android.media.AudioManager; import android.os.SystemClock; @@ -38,6 +39,7 @@ import android.telephony.TelephonyManager; import android.test.ServiceTestCase; import com.android.cellbroadcastreceiver.CellBroadcastChannelManager; +import com.android.cellbroadcastreceiver.CellBroadcastSettings; import com.android.internal.telephony.ISub; import org.junit.After; @@ -69,6 +71,8 @@ public abstract class CellBroadcastServiceTestCase<T extends Service> extends Se @Mock protected SharedPreferences mMockedSharedPreferences; + protected Configuration mConfiguration; + MockedServiceManager mMockedServiceManager; Intent mServiceIntentToVerify; @@ -145,6 +149,11 @@ public abstract class CellBroadcastServiceTestCase<T extends Service> extends Se public SharedPreferences getSharedPreferences(String name, int mode) { return mMockedSharedPreferences; } + + @Override + public Context createConfigurationContext(Configuration overrideConfiguration) { + return this; + } } @Before @@ -159,20 +168,22 @@ public abstract class CellBroadcastServiceTestCase<T extends Service> extends Se doReturn(new String[]{""}).when(mResources).getStringArray(anyInt()); + mConfiguration = new Configuration(); + doReturn(mConfiguration).when(mResources).getConfiguration(); + doReturn(1).when(mMockSubscriptionInfo).getSubscriptionId(); doReturn(Arrays.asList(mMockSubscriptionInfo)).when(mMockedSubscriptionManager) .getActiveSubscriptionInfoList(); doReturn(mMockedTelephonyManager).when(mMockedTelephonyManager) .createForSubscriptionId(anyInt()); - doReturn(TelephonyManager.SIM_STATE_UNKNOWN).when(mMockedTelephonyManager) - .getSimApplicationState(anyInt()); mMockedServiceManager = new MockedServiceManager(); mMockedServiceManager.replaceService("isub", mSubService); mContext = new TestContextWrapper(getContext()); setContext(mContext); + CellBroadcastSettings.resetResourcesCache(); CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index c20d36560..16a5e8ea1 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -24,7 +24,6 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -41,8 +40,8 @@ import android.os.Looper; import android.os.RemoteException; import android.os.UserManager; import android.support.test.uiautomator.UiDevice; +import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; import androidx.preference.Preference; import androidx.preference.PreferenceManager; @@ -204,43 +203,48 @@ public class CellBroadcastSettingsTest extends Context mockContext2 = mock(Context.class); doReturn(mockResources).when(mockContext2).getResources(); + Configuration config = new Configuration(); + doReturn(config).when(mockResources).getConfiguration(); SubscriptionManager mockSubManager = mock(SubscriptionManager.class); - TelephonyManager mockTelephonyManager = mock(TelephonyManager.class); doReturn(Context.TELEPHONY_SUBSCRIPTION_SERVICE).when(mockContext) .getSystemServiceName(eq(SubscriptionManager.class)); doReturn(mockSubManager).when(mockContext).getSystemService( eq(Context.TELEPHONY_SUBSCRIPTION_SERVICE)); - doReturn(Context.TELEPHONY_SERVICE).when(mockContext) - .getSystemServiceName(eq(TelephonyManager.class)); - doReturn(mockTelephonyManager).when(mockContext) - .getSystemService(eq(Context.TELEPHONY_SERVICE)); - doReturn(TelephonyManager.SIM_STATE_UNKNOWN).when(mockTelephonyManager) - .getSimApplicationState(anyInt()); + SubscriptionInfo mockSubInfo = mock(SubscriptionInfo.class); + doReturn(mockSubInfo).when(mockSubManager).getActiveSubscriptionInfo(anyInt()); + doReturn(0).when(mockSubInfo).getMcc(); + doReturn(0).when(mockSubInfo).getMnc(); doReturn(mockContext2).when(mockContext).createConfigurationContext(any()); + + // The resource will not be cached for the sub CellBroadcastSettings.getResources( mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 1); - verify(mockContext, times(1)).getSystemService(anyString()); - verify(mockContext, times(3)).getResources(); + verify(mockContext, times(2)).getResources(); + verify(mockContext2, times(1)).getResources(); + // The resources will be cached for ths sub + config.mcc = 123; + config.mnc = 456; - doReturn(TelephonyManager.SIM_STATE_LOADED).when(mockTelephonyManager) - .getSimApplicationState(anyInt()); CellBroadcastSettings.getResources( - mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 2); + mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 1); - verify(mockContext, times(3)).getResources(); - verify(mockSubManager, times(1)).getActiveSubscriptionInfo(anyInt()); - verify(mockContext2, times(1)).getResources(); + verify(mockContext, times(2)).getResources(); + verify(mockContext2, times(2)).getResources(); + + // The resources should be read from the cached directly + CellBroadcastSettings.getResources( + mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 1); + + verify(mockContext, times(2)).getResources(); + verify(mockContext2, times(2)).getResources(); - doThrow(NullPointerException.class).when(mockTelephonyManager) - .getSimApplicationState(anyInt()); CellBroadcastSettings.getResources( mockContext, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID - 2); - verify(mockContext, times(4)).getResources(); - verify(mockSubManager, times(1)).getActiveSubscriptionInfo(anyInt()); - verify(mockContext2, times(1)).getResources(); + verify(mockContext, times(2)).getResources(); + verify(mockContext2, times(3)).getResources(); } @Test diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java index e4c80a32b..9447047a2 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java @@ -88,8 +88,6 @@ public abstract class CellBroadcastTest { doReturn(mResources).when(mContext).getResources(); doReturn(mContext).when(mContext).getApplicationContext(); doReturn(new String[]{""}).when(mResources).getStringArray(anyInt()); - doReturn(TelephonyManager.SIM_STATE_LOADED).when(mTelephonyManager) - .getSimApplicationState(anyInt()); } void carrierConfigSetStringArray(int subId, String key, String[] values) { |