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

Commit 32645d59 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Merge "improve mism support for phonestatelistner" into qt-dev...

Merge "Merge "Merge "improve mism support for phonestatelistner" into qt-dev am: 62751b80" into qt-dev-plus-aosp am: fd1359d9"
parents 994937ab a38f790e
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -94,8 +94,7 @@ public class MobileSignalController extends SignalController<
        mPhone = phone;
        mDefaults = defaults;
        mSubscriptionInfo = info;
        mPhoneStateListener = new MobilePhoneStateListener(info.getSubscriptionId(),
                receiverLooper);
        mPhoneStateListener = new MobilePhoneStateListener(receiverLooper);
        mNetworkNameSeparator = getStringIfExists(R.string.status_bar_network_name_separator);
        mNetworkNameDefault = getStringIfExists(
                com.android.internal.R.string.lockscreen_carrier_default);
@@ -574,8 +573,8 @@ public class MobileSignalController extends SignalController<
    }

    class MobilePhoneStateListener extends PhoneStateListener {
        public MobilePhoneStateListener(int subId, Looper looper) {
            super(subId, looper);
        public MobilePhoneStateListener(Looper looper) {
            super(looper);
        }

        @Override
+5 −3
Original line number Diff line number Diff line
@@ -662,8 +662,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
                cachedControllers.remove(subId);
            } else {
                MobileSignalController controller = new MobileSignalController(mContext, mConfig,
                        mHasMobileDataFeature, mPhone, mCallbackHandler,
                        this, subscriptions.get(i), mSubDefaults, mReceiverHandler.getLooper());
                        mHasMobileDataFeature, mPhone.createForSubscriptionId(subId),
                        mCallbackHandler, this, subscriptions.get(i),
                        mSubDefaults, mReceiverHandler.getLooper());
                controller.setUserSetupComplete(mUserSetup);
                mMobileSignalControllers.put(subId, controller);
                if (subscriptions.get(i).getSimSlotIndex() == 0) {
@@ -1049,7 +1050,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
        SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0,
                null, null, null, "", false, null, null);
        MobileSignalController controller = new MobileSignalController(mContext,
                mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, this, info,
                mConfig, mHasMobileDataFeature,
                mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this, info,
                mSubDefaults, mReceiverHandler.getLooper());
        mMobileSignalControllers.put(id, controller);
        controller.getState().userSetup = true;
+1 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
        when(mMockCm.getDefaultNetworkCapabilitiesForUser(0)).thenReturn(
                new NetworkCapabilities[] { mNetCapabilities });
        when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm);

        mSignalStrength = mock(SignalStrength.class);
        mServiceState = mock(ServiceState.class);
+12 −1
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;

import dalvik.system.VMRuntime;

/**
 * A listener class for monitoring changes in specific telephony states
 * on the device, including service state, signal strength, message
@@ -400,8 +402,12 @@ public class PhoneStateListener {
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
    public PhoneStateListener(Integer subId) {
        this(subId, Looper.myLooper());
        if (subId != null && VMRuntime.getRuntime().getTargetSdkVersion()
                >= Build.VERSION_CODES.Q) {
            throw new IllegalArgumentException("PhoneStateListener with subId: "
                    + subId + " is not supported, use default constructor");
        }
    }

    /**
     * Create a PhoneStateListener for the Phone using the specified subscription
     * and non-null Looper.
@@ -410,6 +416,11 @@ public class PhoneStateListener {
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
    public PhoneStateListener(Integer subId, Looper looper) {
        this(subId, new HandlerExecutor(new Handler(looper)));
        if (subId != null && VMRuntime.getRuntime().getTargetSdkVersion()
                >= Build.VERSION_CODES.Q) {
            throw new IllegalArgumentException("PhoneStateListener with subId: "
                    + subId + " is not supported, use default constructor");
        }
    }

    /**
+33 −18
Original line number Diff line number Diff line
@@ -108,6 +108,8 @@ import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import dalvik.system.VMRuntime;

/**
 * Provides access to information about the telephony services on
 * the device. Applications can use the methods in this class to
@@ -4869,18 +4871,22 @@ public class TelephonyManager {
     * Registers a listener object to receive notification of changes
     * in specified telephony states.
     * <p>
     * To register a listener, pass a {@link PhoneStateListener}
     * and specify at least one telephony state of interest in
     * the events argument.
     *
     * At registration, and when a specified telephony state
     * changes, the telephony manager invokes the appropriate
     * callback method on the listener object and passes the
     * current (updated) values.
     * To register a listener, pass a {@link PhoneStateListener} and specify at least one telephony
     * state of interest in the events argument.
     *
     * At registration, and when a specified telephony state changes, the telephony manager invokes
     * the appropriate callback method on the listener object and passes the current (updated)
     * values.
     * <p>
     * To unregister a listener, pass the listener object and set the
     * events argument to
     * To un-register a listener, pass the listener object and set the events argument to
     * {@link PhoneStateListener#LISTEN_NONE LISTEN_NONE} (0).
     *
     * If this TelephonyManager object has been created with {@link #createForSubscriptionId},
     * applies to the given subId. Otherwise, applies to
     * {@link SubscriptionManager#getDefaultSubscriptionId()}. To listen events for multiple subIds,
     * pass a separate listener object to each TelephonyManager object created with
     * {@link #createForSubscriptionId}.
     *
     * Note: if you call this method while in the middle of a binder transaction, you <b>must</b>
     * call {@link android.os.Binder#clearCallingIdentity()} before calling this method. A
     * {@link SecurityException} will be thrown otherwise.
@@ -4895,17 +4901,26 @@ public class TelephonyManager {
        if (mContext == null) return;
        try {
            boolean notifyNow = (getITelephony() != null);
            // If the listener has not explicitly set the subId (for example, created with the
            // default constructor), replace the subId so it will listen to the account the
            // telephony manager is created with.
            if (listener.mSubId == null) {
                listener.mSubId = mSubId;
            }

            ITelephonyRegistry registry = getTelephonyRegistry();
            if (registry != null) {
                registry.listenForSubscriber(listener.mSubId, getOpPackageName(),
                int subId;
                // subId from phonestatelistner is deprecated Q on forward, use the subId from
                // TelephonyManager instance.
                if (VMRuntime.getRuntime().getTargetSdkVersion() >= Build.VERSION_CODES.Q
                        || listener.mSubId == null) {
                    subId = mSubId;
                } else {
                    subId = listener.mSubId;
                }

                registry.listenForSubscriber(subId, getOpPackageName(),
                        listener.callback, events, notifyNow);
                // TODO: remove this once we remove PhoneStateListener constructor with subId.
                if (events == PhoneStateListener.LISTEN_NONE) {
                    listener.mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
                } else {
                    listener.mSubId = subId;
                }
            } else {
                Rlog.w(TAG, "telephony registry not ready.");
            }