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

Commit 67cf15e1 authored by Chen Xu's avatar Chen Xu Committed by Gerrit Code Review
Browse files

Merge "rename precise carrier id to specific carrier id"

parents 14854cf3 ba774e91
Loading
Loading
Loading
Loading
+40 −37
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * CarrierResolver identifies the subscription carrier and returns a canonical carrier Id
@@ -71,15 +70,15 @@ public class CarrierResolver extends Handler {
    private List<CarrierMatchingRule> mCarrierMatchingRulesOnMccMnc = new ArrayList<>();
    // cached carrier Id
    private int mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
    // cached precise carrier Id
    private int mPreciseCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
    // cached specific carrier Id
    private int mSpecificCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
    // cached MNO carrier Id. mno carrier shares the same mccmnc as cid and can be solely
    // identified by mccmnc only. If there is no such mno carrier, mno carrier id equals to
    // the cid.
    private int mMnoCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
    // cached carrier name
    private String mCarrierName;
    private String mPreciseCarrierName;
    private String mSpecificCarrierName;
    // cached preferapn name
    private String mPreferApn;
    // cached service provider name. telephonyManager API returns empty string as default value.
@@ -350,7 +349,7 @@ public class CarrierResolver extends Handler {
    }

    private void updateCarrierIdAndName(int cid, String name,
                                        int preciseCarrierId, String preciseCarrierName,
                                        int specificCarrierId, String specificCarrierName,
                                        int mnoCid) {
        boolean update = false;
        if (!equals(name, mCarrierName, true)) {
@@ -391,34 +390,34 @@ public class CarrierResolver extends Handler {
        }

        update = false;
        if (preciseCarrierId != mPreciseCarrierId) {
            logd("[updatePreciseCarrierId] from:" + mPreciseCarrierId + " to:"
                    + preciseCarrierId);
            mPreciseCarrierId = preciseCarrierId;
        if (specificCarrierId != mSpecificCarrierId) {
            logd("[updateSpecificCarrierId] from:" + mSpecificCarrierId + " to:"
                    + specificCarrierId);
            mSpecificCarrierId = specificCarrierId;
            update = true;
        }
        if (preciseCarrierName != mPreciseCarrierName) {
            logd("[updatePreciseCarrierName] from:" + mPreciseCarrierName + " to:"
                    + preciseCarrierName);
            mPreciseCarrierName = preciseCarrierName;
        if (specificCarrierName != mSpecificCarrierName) {
            logd("[updateSpecificCarrierName] from:" + mSpecificCarrierName + " to:"
                    + specificCarrierName);
            mSpecificCarrierName = specificCarrierName;
            update = true;
        }
        if (update) {
            mCarrierIdLocalLog.log("[updatePreciseCarrierIdAndName] cid:" + mPreciseCarrierId
                    + " name:" + mPreciseCarrierName);
            mCarrierIdLocalLog.log("[updateSpecificCarrierIdAndName] cid:"
                    + mSpecificCarrierId + " name:" + mSpecificCarrierName);
            final Intent intent = new Intent(TelephonyManager
                    .ACTION_SUBSCRIPTION_PRECISE_CARRIER_IDENTITY_CHANGED);
            intent.putExtra(TelephonyManager.EXTRA_PRECISE_CARRIER_ID, mPreciseCarrierId);
            intent.putExtra(TelephonyManager.EXTRA_PRECISE_CARRIER_NAME, mPreciseCarrierName);
                    .ACTION_SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED);
            intent.putExtra(TelephonyManager.EXTRA_SPECIFIC_CARRIER_ID, mSpecificCarrierId);
            intent.putExtra(TelephonyManager.EXTRA_SPECIFIC_CARRIER_NAME, mSpecificCarrierName);
            intent.putExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID, mPhone.getSubId());
            mContext.sendBroadcast(intent);

            // notify content observers for precise carrier id change event.
            // notify content observers for specific carrier id change event.
            ContentValues cv = new ContentValues();
            cv.put(CarrierId.PRECISE_CARRIER_ID, mPreciseCarrierId);
            cv.put(CarrierId.PRECISE_CARRIER_ID_NAME, mPreciseCarrierName);
            cv.put(CarrierId.SPECIFIC_CARRIER_ID, mSpecificCarrierId);
            cv.put(CarrierId.SPECIFIC_CARRIER_ID_NAME, mSpecificCarrierName);
            mContext.getContentResolver().update(
                    Telephony.CarrierId.getPreciseCarrierIdUriForSubscriptionId(mPhone.getSubId()),
                    Telephony.CarrierId.getSpecificCarrierIdUriForSubscriptionId(mPhone.getSubId()),
                    cv, null, null);
        }
    }
@@ -742,8 +741,8 @@ public class CarrierResolver extends Handler {
                maxRuleParent.mCid = maxRuleParent.mParentCid;
                maxRuleParent.mName = getCarrierNameFromId(maxRuleParent.mCid);
            }
            logd("[matchSubscriptionCarrier] precise cid: " + maxRule.mCid + " precise name: "
                    + maxRule.mName +" cid: " + maxRuleParent.mCid
            logd("[matchSubscriptionCarrier] specific cid: " + maxRule.mCid
                    + " specific name: " + maxRule.mName +" cid: " + maxRuleParent.mCid
                    + " name: " + maxRuleParent.mName);
            updateCarrierIdAndName(maxRuleParent.mCid, maxRuleParent.mName,
                    maxRule.mCid, maxRule.mName,
@@ -783,25 +782,29 @@ public class CarrierResolver extends Handler {
    }
    /**
     * Returns fine-grained carrier id of the current subscription. Carrier ids with a valid parent
     * id are precise carrier ids.
     * The precise carrier id can be used to further differentiate a carrier by different
     * networks, by prepaid v.s.postpaid or even by 4G v.s.3G plan. Each carrier has a unique
     * carrier id but can have multiple precise carrier id. e.g,
     * {@link #getCarrierId()} will always return Tracfone (id 2022) for a Tracfone SIM, while
     * {@link #getPreciseCarrierId()} can return Tracfone AT&T or Tracfone T-Mobile based on the
     * current underlying network.
     * id are specific carrier ids.
     *
     * A specific carrier ID can represent the fact that a carrier may be in effect an aggregation
     * of other carriers (ie in an MVNO type scenario) where each of these specific carriers which
     * are used to make up the actual carrier service may have different carrier configurations.
     * A specific carrier ID could also be used, for example, in a scenario where a carrier requires
     * different carrier configuration for different service offering such as a prepaid plan.
     * e.g, {@link #getCarrierId()} will always return Tracfone (id 2022) for a Tracfone SIM, while
     * {@link #getSpecificCarrierId()} can return Tracfone AT&T or Tracfone T-Mobile based on the
     * IMSI from the current subscription.
     *
     * For carriers without any fine-grained carrier ids, return {@link #getCarrierId()}
     */
    public int getPreciseCarrierId() {
        return mPreciseCarrierId;
    public int getSpecificCarrierId() {
        return mSpecificCarrierId;
    }

    public String getCarrierName() {
        return mCarrierName;
    }

    public String getPreciseCarrierName() {
        return mPreciseCarrierName;
    public String getSpecificCarrierName() {
        return mSpecificCarrierName;
    }

    public int getMnoCarrierId() {
@@ -963,10 +966,10 @@ public class CarrierResolver extends Handler {
        ipw.decreaseIndent();

        ipw.println("mCarrierId: " + mCarrierId);
        ipw.println("mPreciseCarrierId: " + mPreciseCarrierId);
        ipw.println("mSpecificCarrierId: " + mSpecificCarrierId);
        ipw.println("mMnoCarrierId: " + mMnoCarrierId);
        ipw.println("mCarrierName: " + mCarrierName);
        ipw.println("mPreciseCarrierName: " + mPreciseCarrierName);
        ipw.println("mSpecificCarrierName: " + mSpecificCarrierName);
        ipw.println("carrier_list_version: " + getCarrierListVersion());

        ipw.println("mCarrierMatchingRules on mccmnc: "
+4 −4
Original line number Diff line number Diff line
@@ -1655,13 +1655,13 @@ public class GsmCdmaPhone extends Phone {
    }

    @Override
    public int getPreciseCarrierId() {
        return mCarrierResolver.getPreciseCarrierId();
    public int getSpecificCarrierId() {
        return mCarrierResolver.getSpecificCarrierId();
    }

    @Override
    public String getPreciseCarrierName() {
        return mCarrierResolver.getPreciseCarrierName();
    public String getSpecificCarrierName() {
        return mCarrierResolver.getSpecificCarrierName();
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -3207,11 +3207,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return TelephonyManager.UNKNOWN_CARRIER_ID;
    }

    public int getPreciseCarrierId() {
    public int getSpecificCarrierId() {
        return TelephonyManager.UNKNOWN_CARRIER_ID;
    }

    public String getPreciseCarrierName() {
    public String getSpecificCarrierName() {
        return null;
    }

+6 −5
Original line number Diff line number Diff line
@@ -177,27 +177,27 @@ public class CarrierResolverTest extends TelephonyTest {
        mCarrierResolver.sendEmptyMessage(SIM_LOAD_EVENT);
        waitForMs(200);
        assertEquals(CID_ATT, mCarrierResolver.getCarrierId());
        assertEquals(CID_ATT, mCarrierResolver.getPreciseCarrierId());
        assertEquals(CID_ATT, mCarrierResolver.getSpecificCarrierId());

        doReturn(GID_TRACFONE).when(mPhone).getGroupIdLevel1();
        mCarrierResolver.sendEmptyMessage(SIM_LOAD_EVENT);
        waitForMs(200);
        assertEquals(CID_TRACFONE, mCarrierResolver.getCarrierId());
        assertEquals(CID_TRACFONE_ATT, mCarrierResolver.getPreciseCarrierId());
        assertEquals(CID_TRACFONE_ATT, mCarrierResolver.getSpecificCarrierId());

        doReturn(MCCMNC_TRACFONE_TMO).when(mTelephonyManager)
                .getSimOperatorNumericForPhone(eq(phoneId));
        mCarrierResolver.sendEmptyMessage(SIM_LOAD_EVENT);
        waitForMs(200);
        assertEquals(CID_TRACFONE, mCarrierResolver.getCarrierId());
        assertEquals(CID_TRACFONE_TMO, mCarrierResolver.getPreciseCarrierId());
        assertEquals(CID_TRACFONE_TMO, mCarrierResolver.getSpecificCarrierId());

        doReturn(MCCMNC_O2).when(mTelephonyManager)
                .getSimOperatorNumericForPhone(eq(phoneId));
        mCarrierResolver.sendEmptyMessage(SIM_LOAD_EVENT);
        waitForMs(200);
        assertEquals(CID_O2, mCarrierResolver.getCarrierId());
        assertEquals(CID_O2, mCarrierResolver.getPreciseCarrierId());
        assertEquals(CID_O2, mCarrierResolver.getSpecificCarrierId());

        doReturn(MCCMNC_O2).when(mTelephonyManager)
                .getSimOperatorNumericForPhone(eq(phoneId));
@@ -205,7 +205,7 @@ public class CarrierResolverTest extends TelephonyTest {
        mCarrierResolver.sendEmptyMessage(SIM_LOAD_EVENT);
        waitForMs(200);
        assertEquals(CID_O2, mCarrierResolver.getCarrierId());
        assertEquals(CID_O2_PREPAID, mCarrierResolver.getPreciseCarrierId());
        assertEquals(CID_O2_PREPAID, mCarrierResolver.getSpecificCarrierId());
    }

    @Test
@@ -223,6 +223,7 @@ public class CarrierResolverTest extends TelephonyTest {
        waitForMs(200);
        assertEquals(CID_UNKNOWN, mCarrierResolver.getCarrierId());
        assertNull(mCarrierResolver.getCarrierName());
        assertNull(mCarrierResolver.getCarrierName());
    }

    @Test