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

Commit 09937f2f authored by Rambo Wang's avatar Rambo Wang Committed by Automerger Merge Worker
Browse files

Merge changes Ia6bab238,Id2e66c27,Ia57a2d8a am: 321127dd

parents 29a1fb54 321127dd
Loading
Loading
Loading
Loading
+38 −15
Original line number Original line Diff line number Diff line
@@ -31,6 +31,8 @@ import static android.telephony.TelephonyManager.SIM_STATE_NOT_READY;
import static android.telephony.TelephonyManager.SIM_STATE_READY;
import static android.telephony.TelephonyManager.SIM_STATE_READY;
import static android.telephony.TelephonyManager.SIM_STATE_UNKNOWN;
import static android.telephony.TelephonyManager.SIM_STATE_UNKNOWN;


import static com.android.internal.telephony.SubscriptionInfoUpdater.simStateString;

import android.annotation.ElapsedRealtimeLong;
import android.annotation.ElapsedRealtimeLong;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
@@ -178,6 +180,11 @@ public class CarrierPrivilegesTracker extends Handler {
     */
     */
    private static final int ACTION_CLEAR_UICC_RULES = 9;
    private static final int ACTION_CLEAR_UICC_RULES = 9;


    /**
     * Action to handle the case when UiccAccessRules has been loaded.
     */
    private static final int ACTION_UICC_ACCESS_RULES_LOADED = 10;

    private final Context mContext;
    private final Context mContext;
    private final Phone mPhone;
    private final Phone mPhone;
    private final PackageManager mPackageManager;
    private final PackageManager mPackageManager;
@@ -430,6 +437,10 @@ public class CarrierPrivilegesTracker extends Handler {
                handleClearUiccRules();
                handleClearUiccRules();
                break;
                break;
            }
            }
            case ACTION_UICC_ACCESS_RULES_LOADED: {
                handleUiccAccessRulesLoaded();
                break;
            }
            default: {
            default: {
                Rlog.e(TAG, "Received unknown msg type: " + msg.what);
                Rlog.e(TAG, "Received unknown msg type: " + msg.what);
                break;
                break;
@@ -502,16 +513,8 @@ public class CarrierPrivilegesTracker extends Handler {


        // Only include the UICC rules if the SIM is fully loaded
        // Only include the UICC rules if the SIM is fully loaded
        if (simState == SIM_STATE_LOADED) {
        if (simState == SIM_STATE_LOADED) {
            mClearUiccRulesUptimeMillis = CLEAR_UICC_RULE_NOT_SCHEDULED;
            mLocalLog.log("SIM fully loaded, handleUiccAccessRulesLoaded.");
            removeMessages(ACTION_CLEAR_UICC_RULES);
            handleUiccAccessRulesLoaded();

            updatedUiccRules = getSimRules();

            mLocalLog.log("SIM fully loaded:"
                    + " slotId=" + slotId
                    + " simState=" + simState
                    + " updated SIM-loaded rules=" + updatedUiccRules);
            maybeUpdateRulesAndNotifyRegistrants(mUiccRules, updatedUiccRules);
        } else {
        } else {
            if (!mUiccRules.isEmpty()
            if (!mUiccRules.isEmpty()
                    && mClearUiccRulesUptimeMillis == CLEAR_UICC_RULE_NOT_SCHEDULED) {
                    && mClearUiccRulesUptimeMillis == CLEAR_UICC_RULE_NOT_SCHEDULED) {
@@ -519,7 +522,8 @@ public class CarrierPrivilegesTracker extends Handler {
                        SystemClock.uptimeMillis() + CLEAR_UICC_RULES_DELAY_MILLIS;
                        SystemClock.uptimeMillis() + CLEAR_UICC_RULES_DELAY_MILLIS;
                sendMessageAtTime(obtainMessage(ACTION_CLEAR_UICC_RULES),
                sendMessageAtTime(obtainMessage(ACTION_CLEAR_UICC_RULES),
                        mClearUiccRulesUptimeMillis);
                        mClearUiccRulesUptimeMillis);
                mLocalLog.log("SIM is gone. Delay " + TimeUnit.MILLISECONDS.toSeconds(
                mLocalLog.log("SIM is gone, simState=" + simStateString(simState)
                        + ". Delay " + TimeUnit.MILLISECONDS.toSeconds(
                        CLEAR_UICC_RULES_DELAY_MILLIS) + " seconds to clear UICC rules.");
                        CLEAR_UICC_RULES_DELAY_MILLIS) + " seconds to clear UICC rules.");
            } else {
            } else {
                mLocalLog.log(
                mLocalLog.log(
@@ -528,6 +532,21 @@ public class CarrierPrivilegesTracker extends Handler {
        }
        }
    }
    }


    private void handleUiccAccessRulesLoaded() {
        mClearUiccRulesUptimeMillis = CLEAR_UICC_RULE_NOT_SCHEDULED;
        removeMessages(ACTION_CLEAR_UICC_RULES);

        List<UiccAccessRule> updatedUiccRules = getSimRules();
        mLocalLog.log("UiccAccessRules loaded:"
                + " updated SIM-loaded rules=" + updatedUiccRules);
        maybeUpdateRulesAndNotifyRegistrants(mUiccRules, updatedUiccRules);
    }

    /** Called when UiccAccessRules has been loaded */
    public void onUiccAccessRulesLoaded() {
        sendEmptyMessage(ACTION_UICC_ACCESS_RULES_LOADED);
    }

    private void handleClearUiccRules() {
    private void handleClearUiccRules() {
        mClearUiccRulesUptimeMillis = CLEAR_UICC_RULE_NOT_SCHEDULED;
        mClearUiccRulesUptimeMillis = CLEAR_UICC_RULE_NOT_SCHEDULED;
        removeMessages(ACTION_CLEAR_UICC_RULES);
        removeMessages(ACTION_CLEAR_UICC_RULES);
@@ -574,9 +593,11 @@ public class CarrierPrivilegesTracker extends Handler {
        // installed for a user it wasn't installed in before, which means there will be an
        // installed for a user it wasn't installed in before, which means there will be an
        // additional UID.
        // additional UID.
        getUidsForPackage(pkg.packageName, /* invalidateCache= */ true);
        getUidsForPackage(pkg.packageName, /* invalidateCache= */ true);
        mLocalLog.log("Package added/replaced/changed:"
        if (VDBG) {
            Rlog.d(TAG, "Package added/replaced/changed:"
                    + " pkg=" + Rlog.pii(TAG, pkgName)
                    + " pkg=" + Rlog.pii(TAG, pkgName)
                    + " cert hashes=" + mInstalledPackageCerts.get(pkgName));
                    + " cert hashes=" + mInstalledPackageCerts.get(pkgName));
        }


        maybeUpdatePrivilegedPackagesAndNotifyRegistrants();
        maybeUpdatePrivilegedPackagesAndNotifyRegistrants();
    }
    }
@@ -603,7 +624,9 @@ public class CarrierPrivilegesTracker extends Handler {
            return;
            return;
        }
        }


        mLocalLog.log("Package removed or disabled by user: pkg=" + Rlog.pii(TAG, pkgName));
        if (VDBG) {
            Rlog.d(TAG, "Package removed or disabled by user: pkg=" + Rlog.pii(TAG, pkgName));
        }


        maybeUpdatePrivilegedPackagesAndNotifyRegistrants();
        maybeUpdatePrivilegedPackagesAndNotifyRegistrants();
    }
    }
+8 −0
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ import android.util.ArraySet;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.CarrierAppUtils;
import com.android.internal.telephony.CarrierAppUtils;
import com.android.internal.telephony.CarrierPrivilegesTracker;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccCard;
import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.IccCardConstants;
@@ -240,6 +241,13 @@ public class UiccProfile extends IccCard {


                case EVENT_CARRIER_PRIVILEGES_LOADED:
                case EVENT_CARRIER_PRIVILEGES_LOADED:
                    if (VDBG) log("handleMessage: EVENT_CARRIER_PRIVILEGES_LOADED");
                    if (VDBG) log("handleMessage: EVENT_CARRIER_PRIVILEGES_LOADED");
                    Phone phone = PhoneFactory.getPhone(mPhoneId);
                    if (phone != null) {
                        CarrierPrivilegesTracker cpt = phone.getCarrierPrivilegesTracker();
                        if (cpt != null) {
                            cpt.onUiccAccessRulesLoaded();
                        }
                    }
                    onCarrierPrivilegesLoadedMessage();
                    onCarrierPrivilegesLoadedMessage();
                    updateExternalState();
                    updateExternalState();
                    break;
                    break;