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

Commit 677267ef authored by Jack Yu's avatar Jack Yu Committed by Gerrit Code Review
Browse files

Merge changes from topic "sim_display_name_pnn"

* changes:
  Fixed that SIM name not updated issue
  When SPN is empty, use PNN in mobile network settings
  Push a full channel config after SIM swapped
  Fixed handover issue on connecting data connection
  Improved debug messages
  Fixed locale tracker logging
parents 7360f9b2 c48dc805
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -24,8 +24,11 @@ import android.Manifest;
import android.annotation.UnsupportedAppUsage;
import android.app.AppOpsManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
@@ -36,9 +39,11 @@ import android.os.Handler;
import android.os.Message;
import android.os.UserManager;
import android.provider.Telephony;
import android.telephony.CarrierConfigManager;
import android.telephony.Rlog;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.telephony.SubscriptionManager;
import android.telephony.emergency.EmergencyNumber;
import android.util.LocalLog;
import android.util.Log;
@@ -181,6 +186,21 @@ public class IccSmsInterfaceManager {
        mAppOps = appOps;
        mDispatchersController = dispatchersController;
        mSmsPermissions = new SmsPermissions(phone, context, appOps);

        mContext.registerReceiver(
                new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED
                                .equals(intent.getAction())) {
                            if (mPhone.getPhoneId() == intent.getIntExtra(
                                    CarrierConfigManager.EXTRA_SLOT_INDEX,
                                    SubscriptionManager.INVALID_SIM_SLOT_INDEX)) {
                                mCellBroadcastRangeManager.updateRanges();
                            }
                        }
                    }
                }, new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED));
    }

    protected void markMessagesAsRead(ArrayList<byte[]> messages) {
+6 −4
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ import java.util.Objects;
 */
public class LocaleTracker extends Handler {
    private static final boolean DBG = true;
    private static final String TAG = LocaleTracker.class.getSimpleName();

    /** Event for getting cell info from the modem */
    private static final int EVENT_REQUEST_CELL_INFO = 1;
@@ -125,6 +124,8 @@ public class LocaleTracker extends Handler {
    /** The maximum fail count to prevent delay time overflow */
    private static final int MAX_FAIL_COUNT = 30;

    private String mTag;

    private final Phone mPhone;

    private final NitzStateMachine mNitzStateMachine;
@@ -241,6 +242,7 @@ public class LocaleTracker extends Handler {
        mPhone = phone;
        mNitzStateMachine = nitzStateMachine;
        mSimState = TelephonyManager.SIM_STATE_UNKNOWN;
        mTag = LocaleTracker.class.getSimpleName() + "-" + mPhone.getPhoneId();

        final IntentFilter filter = new IntentFilter();
        filter.addAction(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED);
@@ -611,11 +613,11 @@ public class LocaleTracker extends Handler {
    }

    private void log(String msg) {
        Rlog.d(TAG, msg);
        Rlog.d(mTag, msg);
    }

    private void loge(String msg) {
        Rlog.e(TAG, msg);
        Rlog.e(mTag, msg);
    }

    /**
@@ -627,7 +629,7 @@ public class LocaleTracker extends Handler {
     */
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
        pw.println("LocaleTracker:");
        pw.println("LocaleTracker-" + mPhone.getPhoneId() + ":");
        ipw.increaseIndent();
        ipw.println("mIsTracking = " + mIsTracking);
        ipw.println("mOperatorNumeric = " + mOperatorNumeric);
+17 −15
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.telephony.RadioAccessFamily;
import android.telephony.Rlog;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.SimDisplayNameSource;
import android.telephony.TelephonyManager;
import android.telephony.UiccAccessRule;
import android.telephony.UiccSlotInfo;
@@ -1505,30 +1506,27 @@ public class SubscriptionController extends ISub.Stub {
     * @param nameSource Source of display name
     * @return int representing the priority. Higher value means higher priority.
     */
    public static int getNameSourcePriority(int nameSource) {
        switch (nameSource) {
            case SubscriptionManager.NAME_SOURCE_USER_INPUT:
                return 3;
            case SubscriptionManager.NAME_SOURCE_CARRIER:
                return 2;
            case SubscriptionManager.NAME_SOURCE_SIM_SOURCE:
                return 1;
            case SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE:
            default:
                return 0;
        }
    public static int getNameSourcePriority(@SimDisplayNameSource int nameSource) {
        int index = Arrays.asList(
                SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE,
                SubscriptionManager.NAME_SOURCE_SIM_PNN,
                SubscriptionManager.NAME_SOURCE_SIM_SPN,
                SubscriptionManager.NAME_SOURCE_CARRIER,
                SubscriptionManager.NAME_SOURCE_USER_INPUT // user has highest priority.
        ).indexOf(nameSource);
        return (index < 0) ? 0 : index;
    }

    /**
     * Set display name by simInfo index with name source
     * @param displayName the display name of SIM card
     * @param subId the unique SubInfoRecord index in database
     * @param nameSource 0: NAME_SOURCE_DEFAULT_SOURCE, 1: NAME_SOURCE_SIM_SOURCE,
     *                   2: NAME_SOURCE_USER_INPUT, 3: NAME_SOURCE_CARRIER
     * @param nameSource SIM display name source
     * @return the number of records updated
     */
    @Override
    public int setDisplayNameUsingSrc(String displayName, int subId, int nameSource) {
    public int setDisplayNameUsingSrc(String displayName, int subId,
                                      @SimDisplayNameSource int nameSource) {
        if (DBG) {
            logd("[setDisplayName]+  displayName:" + displayName + " subId:" + subId
                + " nameSource:" + nameSource);
@@ -1548,6 +1546,10 @@ public class SubscriptionController extends ISub.Stub {
                        && (getNameSourcePriority(subInfo.getNameSource())
                                > getNameSourcePriority(nameSource)
                        || (displayName != null && displayName.equals(subInfo.getDisplayName())))) {
                    logd("Name source " + subInfo.getNameSource() + "'s priority "
                            + getNameSourcePriority(subInfo.getNameSource()) + " is greater than "
                            + "name source " + nameSource + "'s priority "
                            + getNameSourcePriority(nameSource) + ", return now.");
                    return 0;
                }
            }
+3 −2
Original line number Diff line number Diff line
@@ -417,7 +417,8 @@ public class DataConnection extends StateMachine {
        return getCurrentState() == mDisconnectingState;
    }

    boolean isActive() {
    @VisibleForTesting
    public boolean isActive() {
        return getCurrentState() == mActiveState;
    }

@@ -2090,7 +2091,7 @@ public class DataConnection extends StateMachine {

                mDisabledApnTypeBitMask |= getDisallowedApnTypes();

                mNetworkAgent = DcNetworkAgent.createDcNetworkAgent(DataConnection.this,
                mNetworkAgent = new DcNetworkAgent(DataConnection.this,
                        mPhone, mNetworkInfo, mScore, misc, factorySerialNumber, mTransportType);
            }

+5 −31
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * This class represents a network agent which is communication channel between
@@ -66,23 +65,20 @@ public class DcNetworkAgent extends NetworkAgent {

    private final LocalLog mNetCapsLocalLog = new LocalLog(50);

    private static AtomicInteger sSerialNumber = new AtomicInteger(0);

    private NetworkInfo mNetworkInfo;

    private DcNetworkAgent(DataConnection dc, String tag, Phone phone, NetworkInfo ni,
                           int score, NetworkMisc misc, int factorySerialNumber,
                           int transportType) {
        super(dc.getHandler().getLooper(), phone.getContext(), tag, ni,
    DcNetworkAgent(DataConnection dc, Phone phone, NetworkInfo ni, int score, NetworkMisc misc,
                   int factorySerialNumber, int transportType) {
        super(dc.getHandler().getLooper(), phone.getContext(), "DcNetworkAgent", ni,
                dc.getNetworkCapabilities(), dc.getLinkProperties(), score, misc,
                factorySerialNumber);
        mTag = tag;
        mTag = "DcNetworkAgent" + "-" + netId;
        mPhone = phone;
        mNetworkCapabilities = dc.getNetworkCapabilities();
        mTransportType = transportType;
        mDataConnection = dc;
        mNetworkInfo = ni;
        logd(tag + " created for data connection " + dc.getName());
        logd(mTag + " created for data connection " + dc.getName());
    }

    /**
@@ -92,28 +88,6 @@ public class DcNetworkAgent extends NetworkAgent {
        return mTag;
    }

    /**
     * Constructor
     *
     * @param dc The data connection owns this network agent.
     * @param phone The phone object.
     * @param ni Network info.
     * @param score Score of the data connection.
     * @param misc The miscellaneous information of the data connection.
     * @param factorySerialNumber Serial number of telephony network factory.
     * @param transportType The transport of the data connection.
     * @return The network agent
     */
    public static DcNetworkAgent createDcNetworkAgent(DataConnection dc, Phone phone,
                                                      NetworkInfo ni, int score, NetworkMisc misc,
                                                      int factorySerialNumber, int transportType) {
        // Use serial number only. Do not use transport type because it can be transferred to
        // a different transport.
        String tag = "DcNetworkAgent-" + sSerialNumber.incrementAndGet();
        return new DcNetworkAgent(dc, tag, phone, ni, score, misc, factorySerialNumber,
                transportType);
    }

    /**
     * Set the data connection that owns this network agent.
     *
Loading