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

Commit db54ac35 authored by Chen Xu's avatar Chen Xu Committed by android-build-merger
Browse files

Merge "rename precise carrier id to specific carrier id" am: 67cf15e1

am: b6e40d26

Change-Id: Iec792be67ae86dd8e5e57fd08400314fb4a03a38
parents 72029527 b6e40d26
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
@@ -3214,11 +3214,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