Merge "Fix the race between carrier config and DDS change"
am: 36538bb38c
Change-Id: Idf1e5c33560845095028127d6bc3f384471bd4a1
This commit is contained in:
@@ -247,7 +247,14 @@ public class Tethering extends BaseNetworkObserver {
|
|||||||
(Intent ignored) -> {
|
(Intent ignored) -> {
|
||||||
mLog.log("OBSERVED default data subscription change");
|
mLog.log("OBSERVED default data subscription change");
|
||||||
updateConfiguration();
|
updateConfiguration();
|
||||||
|
// 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();
|
mEntitlementMgr.reevaluateSimCardProvisioning();
|
||||||
|
} else {
|
||||||
|
mLog.log("IGNORED reevaluate provisioning due to no carrier config loaded");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
mStateReceiver = new StateReceiver();
|
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
|
// The logic here is aimed solely at confirming that a CarrierConfig exists
|
||||||
// and affirms that entitlement checks are not required.
|
// and affirms that entitlement checks are not required.
|
||||||
//
|
//
|
||||||
@@ -165,11 +180,7 @@ public class EntitlementManager {
|
|||||||
// entirely so that this is more intuitive.
|
// entirely so that this is more intuitive.
|
||||||
private boolean carrierConfigAffirmsEntitlementCheckNotRequired() {
|
private boolean carrierConfigAffirmsEntitlementCheckNotRequired() {
|
||||||
// Check carrier config for entitlement checks
|
// Check carrier config for entitlement checks
|
||||||
final CarrierConfigManager configManager = (CarrierConfigManager) mContext
|
final PersistableBundle carrierConfig = getCarrierConfig();
|
||||||
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
|
||||||
if (configManager == null) return false;
|
|
||||||
|
|
||||||
final PersistableBundle carrierConfig = configManager.getConfig();
|
|
||||||
if (carrierConfig == null) return false;
|
if (carrierConfig == null) return false;
|
||||||
|
|
||||||
// A CarrierConfigManager was found and it has a config.
|
// A CarrierConfigManager was found and it has a config.
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ public final class EntitlementManagerTest {
|
|||||||
.thenReturn(mCarrierConfigManager);
|
.thenReturn(mCarrierConfigManager);
|
||||||
when(mCarrierConfigManager.getConfig()).thenReturn(mCarrierConfig);
|
when(mCarrierConfigManager.getConfig()).thenReturn(mCarrierConfig);
|
||||||
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL, true);
|
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL, true);
|
||||||
|
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -198,6 +199,16 @@ public final class EntitlementManagerTest {
|
|||||||
assertTrue(mEnMgr.isTetherProvisioningRequired());
|
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
|
@Test
|
||||||
public void provisioningNotRequiredWhenAppNotFound() {
|
public void provisioningNotRequiredWhenAppNotFound() {
|
||||||
setupForRequiredProvisioning();
|
setupForRequiredProvisioning();
|
||||||
|
|||||||
Reference in New Issue
Block a user