Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8908e2ca authored by Chris Manton's avatar Chris Manton Committed by Android (Google) Code Review
Browse files

Merge "Add override check for home network carrier service API" into mnc-dev

parents c5ce7ea3 cdd0ef91
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -1090,15 +1090,25 @@ public abstract class ServiceStateTracker extends Handler {
        }
    }

    /**
     * Check if device is non-roaming and always on home network.
     *
     * @param b carrier config bundle obtained from CarrierConfigManager
     * @return true if network is always on home network, false otherwise
     * @see CarrierConfigManager
     */
    protected final boolean alwaysOnHomeNetwork(BaseBundle b) {
        return b.getBoolean(CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL);
    }

    /**
     * Check if the network identifier has membership in the set of
     * network identifiers stored in the carrier config bundle.
     *
     * @param b a carrier config bundle object
     * @param b carrier config bundle obtained from CarrierConfigManager
     * @param network The network identifier to check network existence in bundle
     * @param key The key to index into the bundle presenting a string array of
     *            networks to check membership
     *
     * @return true if network has membership in bundle networks, false otherwise
     * @see CarrierConfigManager
     */
@@ -1111,19 +1121,19 @@ public abstract class ServiceStateTracker extends Handler {
        return false;
    }

    protected boolean isRoamingInGsmNetwork(BaseBundle b, String network) {
    protected final boolean isRoamingInGsmNetwork(BaseBundle b, String network) {
        return isInNetwork(b, network, CarrierConfigManager.KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY);
    }

    protected boolean isNonRoamingInGsmNetwork(BaseBundle b, String network) {
    protected final boolean isNonRoamingInGsmNetwork(BaseBundle b, String network) {
        return isInNetwork(b, network, CarrierConfigManager.KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY);
    }

    protected boolean isRoamingInCdmaNetwork(BaseBundle b, String network) {
    protected final boolean isRoamingInCdmaNetwork(BaseBundle b, String network) {
        return isInNetwork(b, network, CarrierConfigManager.KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY);
    }

    protected boolean isNonRoamingInCdmaNetwork(BaseBundle b, String network) {
    protected final boolean isNonRoamingInCdmaNetwork(BaseBundle b, String network) {
        return isInNetwork(b, network, CarrierConfigManager.KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY);
    }
}
+19 −8
Original line number Diff line number Diff line
@@ -1120,21 +1120,19 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
                PersistableBundle b = configLoader.getConfigForSubId(mPhone.getSubId());
                String systemId = Integer.toString(mNewSS.getSystemId());

                if (isNonRoamingInGsmNetwork(b, mNewSS.getOperatorNumeric())
                if (alwaysOnHomeNetwork(b)) {
                    log("updateRoamingState: carrier config override always on home network");
                    setRoamingOff();
                } else if (isNonRoamingInGsmNetwork(b, mNewSS.getOperatorNumeric())
                        || isNonRoamingInCdmaNetwork(b, systemId)) {
                    log("updateRoamingState: carrier config override set non-roaming:"
                            + mNewSS.getOperatorNumeric() + ", " + systemId);
                    mNewSS.setVoiceRoaming(false);
                    mNewSS.setDataRoaming(false);
                    mNewSS.setCdmaEriIconIndex(EriInfo.ROAMING_INDICATOR_OFF);
                    setRoamingOff();
                } else if (isRoamingInGsmNetwork(b, mNewSS.getOperatorNumeric())
                        || isRoamingInCdmaNetwork(b, systemId)) {
                    log("updateRoamingState: carrier config override set roaming:"
                            + mNewSS.getOperatorNumeric() + ", " + systemId);
                    mNewSS.setVoiceRoaming(true);
                    mNewSS.setDataRoaming(true);
                    mNewSS.setCdmaEriIconIndex(EriInfo.ROAMING_INDICATOR_ON);
                    mNewSS.setCdmaEriIconMode(EriInfo.ROAMING_ICON_MODE_NORMAL);
                    setRoamingOn();
                }
            } catch (RemoteException e) {
                loge("updateRoamingState: unable to access carrier config service");
@@ -1149,6 +1147,19 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
        }
    }

    private void setRoamingOn() {
        mNewSS.setVoiceRoaming(true);
        mNewSS.setDataRoaming(true);
        mNewSS.setCdmaEriIconIndex(EriInfo.ROAMING_INDICATOR_ON);
        mNewSS.setCdmaEriIconMode(EriInfo.ROAMING_ICON_MODE_NORMAL);
    }

    private void setRoamingOff() {
        mNewSS.setVoiceRoaming(false);
        mNewSS.setDataRoaming(false);
        mNewSS.setCdmaEriIconIndex(EriInfo.ROAMING_INDICATOR_OFF);
    }

    protected void pollStateDone() {
        if (DBG) log("pollStateDone: cdma oldSS=[" + mSS + "] newSS=[" + mNewSS + "]");

+4 −1
Original line number Diff line number Diff line
@@ -880,7 +880,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
            try {
                PersistableBundle b = configLoader.getConfigForSubId(mPhone.getSubId());

                if (isNonRoamingInGsmNetwork(b, mNewSS.getOperatorNumeric())) {
                if (alwaysOnHomeNetwork(b)) {
                    log("updateRoamingState: carrier config override always on home network");
                    roaming = false;
                } else if (isNonRoamingInGsmNetwork(b, mNewSS.getOperatorNumeric())) {
                    log("updateRoamingState: carrier config override set non roaming:"
                            + mNewSS.getOperatorNumeric());
                    roaming = false;