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

Commit 730feab8 authored by Nagendra Prasad Nagarle Basavaraju's avatar Nagendra Prasad Nagarle Basavaraju Committed by Android (Google) Code Review
Browse files

Merge "Flagging requirement for notifyDataActivityChanged based on Slot." into main

parents f78dc983 55254f2e
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -63,3 +63,10 @@ flag {
  bug:"286171724"
}

flag {
 name: "notify_data_activity_changed_with_slot"
  namespace: "telephony"
  description: "notify data activity changed for slot id"
  bug: "309896936"
}
+16 −4
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.telephony.ims.ImsCallSession;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.MediaQualityStatus;

import com.android.internal.telephony.flags.FeatureFlags;
import com.android.telephony.Rlog;

import java.util.List;
@@ -55,10 +56,15 @@ public class DefaultPhoneNotifier implements PhoneNotifier {

    private TelephonyRegistryManager mTelephonyRegistryMgr;

    /** Feature flags */
    @NonNull
    private final FeatureFlags mFeatureFlags;

    public DefaultPhoneNotifier(Context context) {

    public DefaultPhoneNotifier(Context context, @NonNull FeatureFlags featureFlags) {
        mTelephonyRegistryMgr = (TelephonyRegistryManager) context.getSystemService(
            Context.TELEPHONY_REGISTRY_SERVICE);
        mFeatureFlags = featureFlags;
    }

    @Override
@@ -125,10 +131,16 @@ public class DefaultPhoneNotifier implements PhoneNotifier {

    @Override
    public void notifyDataActivity(Phone sender) {
        int phoneId = sender.getPhoneId();

        int subId = sender.getSubId();

        if (mFeatureFlags.notifyDataActivityChangedWithSlot()) {
            int phoneId = sender.getPhoneId();
            mTelephonyRegistryMgr.notifyDataActivityChanged(phoneId, subId,
                    sender.getDataActivityState());
        } else {
            mTelephonyRegistryMgr.notifyDataActivityChanged(subId, sender.getDataActivityState());
        }
    }

    @Override
+12 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.internal.telephony;
import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED;
import static android.telephony.TelephonyManager.EXTRA_ACTIVE_SIM_SUPPORTED_COUNT;

import android.annotation.NonNull;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncResult;
@@ -37,6 +38,7 @@ import android.text.TextUtils;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.telephony.Rlog;

@@ -75,6 +77,10 @@ public class PhoneConfigurationManager {
    private final Map<Integer, Boolean> mPhoneStatusMap;
    private MockableInterface mMi = new MockableInterface();
    private TelephonyManager mTelephonyManager;

    /** Feature flags */
    @NonNull
    private final FeatureFlags mFeatureFlags;
    /**
     * True if 'Virtual DSDA' i.e., in-call IMS connectivity on both subs with only single logical
     * modem, is enabled.
@@ -88,10 +94,11 @@ public class PhoneConfigurationManager {
     * Init method to instantiate the object
     * Should only be called once.
     */
    public static PhoneConfigurationManager init(Context context) {
    public static PhoneConfigurationManager init(Context context,
            @NonNull FeatureFlags featureFlags) {
        synchronized (PhoneConfigurationManager.class) {
            if (sInstance == null) {
                sInstance = new PhoneConfigurationManager(context);
                sInstance = new PhoneConfigurationManager(context, featureFlags);
            } else {
                Log.wtf(LOG_TAG, "init() called multiple times!  sInstance = " + sInstance);
            }
@@ -103,8 +110,9 @@ public class PhoneConfigurationManager {
     * Constructor.
     * @param context context needed to send broadcast.
     */
    private PhoneConfigurationManager(Context context) {
    private PhoneConfigurationManager(Context context, @NonNull FeatureFlags featureFlags) {
        mContext = context;
        mFeatureFlags = featureFlags;
        // TODO: send commands to modem once interface is ready.
        mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        //initialize with default, it'll get updated when RADIO is ON/AVAILABLE
@@ -360,7 +368,7 @@ public class PhoneConfigurationManager {
    }

    private void notifyCapabilityChanged() {
        PhoneNotifier notifier = new DefaultPhoneNotifier(mContext);
        PhoneNotifier notifier = new DefaultPhoneNotifier(mContext, mFeatureFlags);

        notifier.notifyPhoneCapabilityChanged(mStaticCapability);
    }
+2 −2
Original line number Diff line number Diff line
@@ -163,7 +163,7 @@ public class PhoneFactory {
                // register statsd pullers.
                sMetricsCollector = new MetricsCollector(context);

                sPhoneNotifier = new DefaultPhoneNotifier(context);
                sPhoneNotifier = new DefaultPhoneNotifier(context, featureFlags);

                int cdmaSubscription = CdmaSubscriptionSourceManager.getDefault(context);
                Rlog.i(LOG_TAG, "Cdma Subscription set to " + cdmaSubscription);
@@ -256,7 +256,7 @@ public class PhoneFactory {
                    Rlog.i(LOG_TAG, "IMS is not supported on this device, skipping ImsResolver.");
                }

                sPhoneConfigurationManager = PhoneConfigurationManager.init(sContext);
                sPhoneConfigurationManager = PhoneConfigurationManager.init(sContext, featureFlags);

                sCellularNetworkValidator = CellularNetworkValidator.make(sContext);

+23 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.telephony.CellIdentityGsm;
import android.telephony.CellInfo;
@@ -34,12 +35,14 @@ import android.telephony.TelephonyManager;
import android.telephony.ims.ImsCallProfile;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.imsphone.ImsPhoneCall;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;

import java.util.ArrayList;
import java.util.Collections;
@@ -51,6 +54,8 @@ public class DefaultPhoneNotifierTest extends TelephonyTest {

    private DefaultPhoneNotifier mDefaultPhoneNotifierUT;

    private FeatureFlags mFeatureFlags;

    // Mocked classes
    SignalStrength mSignalStrength;
    CellInfo mCellInfo;
@@ -66,13 +71,14 @@ public class DefaultPhoneNotifierTest extends TelephonyTest {
        super.setUp(getClass().getSimpleName());
        mSignalStrength = mock(SignalStrength.class);
        mCellInfo = mock(CellInfo.class);
        mFeatureFlags = Mockito.mock(FeatureFlags.class);
        mForeGroundCall = mock(GsmCdmaCall.class);
        mBackGroundCall = mock(GsmCdmaCall.class);
        mRingingCall = mock(GsmCdmaCall.class);
        mImsForeGroundCall = mock(ImsPhoneCall.class);
        mImsBackGroundCall = mock(ImsPhoneCall.class);
        mImsRingingCall = mock(ImsPhoneCall.class);
        mDefaultPhoneNotifierUT = new DefaultPhoneNotifier(mContext);
        mDefaultPhoneNotifierUT = new DefaultPhoneNotifier(mContext, mFeatureFlags);
    }

    @After
@@ -94,6 +100,22 @@ public class DefaultPhoneNotifierTest extends TelephonyTest {

    @Test @SmallTest
    public void testNotifyDataActivity() throws Exception {
        when(mFeatureFlags.notifyDataActivityChangedWithSlot()).thenReturn(false);
        //mock data activity state
        doReturn(TelephonyManager.DATA_ACTIVITY_NONE).when(mPhone).getDataActivityState();
        mDefaultPhoneNotifierUT.notifyDataActivity(mPhone);
        verify(mTelephonyRegistryManager).notifyDataActivityChanged(eq(0),
                eq(TelephonyManager.DATA_ACTIVITY_NONE));

        doReturn(1).when(mPhone).getSubId();
        doReturn(TelephonyManager.DATA_ACTIVITY_IN).when(mPhone).getDataActivityState();
        mDefaultPhoneNotifierUT.notifyDataActivity(mPhone);
        verify(mTelephonyRegistryManager).notifyDataActivityChanged(eq(1),
                eq(TelephonyManager.DATA_ACTIVITY_IN));
    }
    @Test @SmallTest
    public void testNotifyDataActivityWithSlot() throws Exception {
        when(mFeatureFlags.notifyDataActivityChangedWithSlot()).thenReturn(true);
        //mock data activity state
        doReturn(TelephonyManager.DATA_ACTIVITY_NONE).when(mPhone).getDataActivityState();
        doReturn(PHONE_ID).when(mPhone).getPhoneId();
Loading