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

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

Merge changes from topic "carrier_id_aosp_cp"

* changes:
  support mno carrier id
  Add null check for mIccRecords
  fix NPE crash in carrierResolver
  rename CarrierIdentifier to CarrierResolver
  read spn from IccRecord
  support carrier privilege rule for carrier id
parents 923d790a cfe155ac
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -79,5 +79,9 @@ message CarrierAttribute {
  // [Optional] Prefix of Integrated Circuit Card Identifier. Read from subscription EF_ICCID.
  // Sample values: 894430, 894410
  repeated string iccid_prefix = 8;

  // [Optional] Carrier Privilege Access Rule in hex string.
  // Sample values: 61ed377e85d386a8dfee6b864bd85b0bfaa5af88
  repeated string privilege_access_rule = 9;
};
+146 −94

File changed and moved.

Preview size limit exceeded, changes collapsed.

+5 −5
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ public class GsmCdmaPhone extends Phone {
    private ArrayList <MmiCode> mPendingMMIs = new ArrayList<MmiCode>();
    private IccPhoneBookInterfaceManager mIccPhoneBookIntManager;
    // Used for identify the carrier of current subscription
    private CarrierIdentifier mCarrerIdentifier;
    private CarrierResolver mCarrerResolver;

    private int mPrecisePhoneType;

@@ -226,7 +226,7 @@ public class GsmCdmaPhone extends Phone {
        mSST = mTelephonyComponentFactory.makeServiceStateTracker(this, this.mCi);
        // DcTracker uses SST so needs to be created after it is instantiated
        mDcTracker = mTelephonyComponentFactory.makeDcTracker(this);
        mCarrerIdentifier = mTelephonyComponentFactory.makeCarrierIdentifier(this);
        mCarrerResolver = mTelephonyComponentFactory.makeCarrierResolver(this);

        mSST.registerForNetworkAttached(this, EVENT_REGISTERED_TO_NETWORK, null);
        mDeviceStateMonitor = mTelephonyComponentFactory.makeDeviceStateMonitor(this);
@@ -1555,17 +1555,17 @@ public class GsmCdmaPhone extends Phone {

    @Override
    public int getCarrierId() {
        return mCarrerIdentifier.getCarrierId();
        return mCarrerResolver.getCarrierId();
    }

    @Override
    public String getCarrierName() {
        return mCarrerIdentifier.getCarrierName();
        return mCarrerResolver.getCarrierName();
    }

    @Override
    public int getCarrierIdListVersion() {
        return mCarrerIdentifier.getCarrierListVersion();
        return mCarrerResolver.getCarrierListVersion();
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -97,8 +97,8 @@ public class TelephonyComponentFactory {
        return new CarrierActionAgent(phone);
    }

    public CarrierIdentifier makeCarrierIdentifier(Phone phone) {
        return new CarrierIdentifier(phone);
    public CarrierResolver makeCarrierResolver(Phone phone) {
        return new CarrierResolver(phone);
    }

    public IccPhoneBookInterfaceManager makeIccPhoneBookInterfaceManager(Phone phone) {
+20 −0
Original line number Diff line number Diff line
@@ -1463,6 +1463,26 @@ public class UiccProfile extends IccCard {
                carrierPrivilegeRules.getCarrierPrivilegeStatusForUid(packageManager, uid);
    }

    /**
     * Match the input certificate to any loaded carrier privileges access rules.
     *
     * @param cert certificate in hex string
     * @return true if matching certificate is found. false otherwise.
     */
    public boolean hasCarrierPrivilegeRulesLoadedForCertHex(String cert) {
        UiccCarrierPrivilegeRules carrierPrivilegeRules = getCarrierPrivilegeRules();
        if (carrierPrivilegeRules != null) {
            List<UiccAccessRule> accessRules = carrierPrivilegeRules.getAccessRules();
            for (UiccAccessRule accessRule : accessRules) {
                String certHexString = accessRule.getCertificateHexString();
                if (!TextUtils.isEmpty(certHexString) && certHexString.equalsIgnoreCase(cert)) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * Exposes {@link UiccCarrierPrivilegeRules#getCarrierPackageNamesForIntent}.
     */
Loading