summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-05 13:06:07 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-02-05 13:06:07 +0000
commit311357c3309683825853c3624a54e918f6678f3d (patch)
tree7c5af03f17d76f24d8d2d7790f803bf731f36f48
parentb39b7b2976e14b658e0e1737dea265f22a6d1271 (diff)
parentdbc501f6aee7e87ff3e10d60c54c4ff6a820faaa (diff)
downloadCellBroadcastReceiver-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
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java20
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java17
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java22
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java15
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java48
-rw-r--r--tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java2
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) {