Merge "Fix the race between carrier config and DDS change" am: 36538bb38c
am: 514010fc25
Change-Id: I16c87cb11e92ec2267dfa66c7da2904aa05e3644
This commit is contained in:
@@ -247,7 +247,14 @@ public class Tethering extends BaseNetworkObserver {
|
||||
(Intent ignored) -> {
|
||||
mLog.log("OBSERVED default data subscription change");
|
||||
updateConfiguration();
|
||||
mEntitlementMgr.reevaluateSimCardProvisioning();
|
||||
// To avoid launch unexpected provisioning checks, ignore re-provisioning when
|
||||
// no CarrierConfig loaded yet. Assume reevaluateSimCardProvisioning() will be
|
||||
// triggered again when CarrierConfig is loaded.
|
||||
if (mEntitlementMgr.getCarrierConfig() != null) {
|
||||
mEntitlementMgr.reevaluateSimCardProvisioning();
|
||||
} else {
|
||||
mLog.log("IGNORED reevaluate provisioning due to no carrier config loaded");
|
||||
}
|
||||
});
|
||||
mStateReceiver = new StateReceiver();
|
||||
|
||||
|
||||
@@ -158,6 +158,21 @@ public class EntitlementManager {
|
||||
}
|
||||
}
|
||||
|
||||
/** Get carrier configuration bundle. */
|
||||
public PersistableBundle getCarrierConfig() {
|
||||
final CarrierConfigManager configManager = (CarrierConfigManager) mContext
|
||||
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||
if (configManager == null) return null;
|
||||
|
||||
final PersistableBundle carrierConfig = configManager.getConfig();
|
||||
|
||||
if (CarrierConfigManager.isConfigForIdentifiedCarrier(carrierConfig)) {
|
||||
return carrierConfig;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// The logic here is aimed solely at confirming that a CarrierConfig exists
|
||||
// and affirms that entitlement checks are not required.
|
||||
//
|
||||
@@ -165,11 +180,7 @@ public class EntitlementManager {
|
||||
// entirely so that this is more intuitive.
|
||||
private boolean carrierConfigAffirmsEntitlementCheckNotRequired() {
|
||||
// Check carrier config for entitlement checks
|
||||
final CarrierConfigManager configManager = (CarrierConfigManager) mContext
|
||||
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||
if (configManager == null) return false;
|
||||
|
||||
final PersistableBundle carrierConfig = configManager.getConfig();
|
||||
final PersistableBundle carrierConfig = getCarrierConfig();
|
||||
if (carrierConfig == null) return false;
|
||||
|
||||
// A CarrierConfigManager was found and it has a config.
|
||||
|
||||
@@ -166,6 +166,7 @@ public final class EntitlementManagerTest {
|
||||
.thenReturn(mCarrierConfigManager);
|
||||
when(mCarrierConfigManager.getConfig()).thenReturn(mCarrierConfig);
|
||||
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL, true);
|
||||
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -198,6 +199,16 @@ public final class EntitlementManagerTest {
|
||||
assertTrue(mEnMgr.isTetherProvisioningRequired());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toleratesCarrierConfigNotLoaded() {
|
||||
setupForRequiredProvisioning();
|
||||
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, false);
|
||||
mEnMgr.updateConfiguration(
|
||||
new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID));
|
||||
// We still have a provisioning app configured, so still require provisioning.
|
||||
assertTrue(mEnMgr.isTetherProvisioningRequired());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void provisioningNotRequiredWhenAppNotFound() {
|
||||
setupForRequiredProvisioning();
|
||||
|
||||
Reference in New Issue
Block a user