Correct cache use in SubscriptionManager
Bug: 234632427 Change the SubscriptionManager caches so that error conditions (RemoteException, null ISub, TimeoutException) do not generate values in the cache. Instead, these error conditions are handled above the cache. Test: atest * SubscriptionControllerTest * android.telephony.cts.SubscriptionManagerTest Change-Id: I758a4636a49e7889cfd08b613e90cb09411fc8ab
This commit is contained in:
@@ -194,13 +194,24 @@ public class SubscriptionManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public T recompute(Void aVoid) {
|
||||
public T recompute(Void query) {
|
||||
// This always throws on any error. The exceptions must be handled outside
|
||||
// the cache.
|
||||
try {
|
||||
return mInterfaceMethod.applyOrThrow(TelephonyManager.getSubscriptionService());
|
||||
} catch (Exception re) {
|
||||
throw new RuntimeException(re);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public T query(Void query) {
|
||||
T result = mDefaultValue;
|
||||
|
||||
try {
|
||||
ISub iSub = TelephonyManager.getSubscriptionService();
|
||||
if (iSub != null) {
|
||||
result = mInterfaceMethod.applyOrThrow(iSub);
|
||||
result = super.query(query);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Rlog.w(LOG_TAG, "Failed to recompute cache key for " + mCacheKeyProperty);
|
||||
@@ -229,12 +240,24 @@ public class SubscriptionManager {
|
||||
|
||||
@Override
|
||||
public T recompute(Integer query) {
|
||||
// This always throws on any error. The exceptions must be handled outside
|
||||
// the cache.
|
||||
try {
|
||||
return mInterfaceMethod.applyOrThrow(
|
||||
TelephonyManager.getSubscriptionService(), query);
|
||||
} catch (Exception re) {
|
||||
throw new RuntimeException(re);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public T query(Integer query) {
|
||||
T result = mDefaultValue;
|
||||
|
||||
try {
|
||||
ISub iSub = TelephonyManager.getSubscriptionService();
|
||||
if (iSub != null) {
|
||||
result = mInterfaceMethod.applyOrThrow(iSub, query);
|
||||
result = super.query(query);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Rlog.w(LOG_TAG, "Failed to recompute cache key for " + mCacheKeyProperty);
|
||||
@@ -4118,4 +4141,3 @@ public class SubscriptionManager {
|
||||
usageSetting, subscriptionId, mContext.getOpPackageName()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user