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

Commit 1b48e894 authored by Sarah Chin's avatar Sarah Chin
Browse files

Expose CDMA ERI API

Also remove CdmaEriInformation class, since it's not necessary to expose
the entire class.

Test: atest TelephonyManagerTest
Bug: 170421676
Change-Id: I810a492330e82f47949826a4b127164a5b950702
Merged-In: I810a492330e82f47949826a4b127164a5b950702
parent ea337540
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -46603,6 +46603,9 @@ package android.telephony {
    field public static final int DATA_ENABLED_REASON_USER = 0; // 0x0
    field public static final int DATA_SUSPENDED = 3; // 0x3
    field public static final int DATA_UNKNOWN = -1; // 0xffffffff
    field public static final int ERI_FLASH = 2; // 0x2
    field public static final int ERI_OFF = 1; // 0x1
    field public static final int ERI_ON = 0; // 0x0
    field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT";
    field public static final String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
    field public static final String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
+1 −0
Original line number Diff line number Diff line
@@ -10108,6 +10108,7 @@ package android.telephony {
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCarrierPrivilegeStatus(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<java.lang.String> getCarrierPrivilegedPackagesForAllActiveSubscriptions();
    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierRestrictionRules getCarrierRestrictionRules();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCdmaEnhancedRoamingIndicatorIconIndex();
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn();
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMdn(int);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String getCdmaMin();
+2 −6
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.os.Handler;
import android.os.Looper;
import android.provider.Settings.Global;
import android.telephony.Annotation;
import android.telephony.CdmaEriInformation;
import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthCdma;
import android.telephony.PhoneStateListener;
@@ -423,11 +422,8 @@ public class MobileSignalController extends SignalController<
        if (isCarrierNetworkChangeActive()) {
            return false;
        }
        if (isCdma() && mServiceState != null) {
            final int iconMode = mPhone.getCdmaEriInformation().getEriIconMode();
            return mPhone.getCdmaEriInformation().getEriIconIndex() != CdmaEriInformation.ERI_OFF
                    && (iconMode == CdmaEriInformation.ERI_ICON_MODE_NORMAL
                    || iconMode == CdmaEriInformation.ERI_ICON_MODE_FLASH);
        if (isCdma()) {
            return mPhone.getCdmaEnhancedRoamingIndicatorIconIndex() != TelephonyManager.ERI_OFF;
        } else {
            return mServiceState != null && mServiceState.getRoaming();
        }
+2 −11
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import android.net.wifi.WifiManager;
import android.os.Handler;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.telephony.CdmaEriInformation;
import android.telephony.CellSignalStrength;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
@@ -119,8 +118,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    private NetworkCapabilities mNetCapabilities;
    private ConnectivityManager.NetworkCallback mNetworkCallback;

    private CdmaEriInformation mEriInformation;

    @Rule
    public TestWatcher failWatcher = new TestWatcher() {
        @Override
@@ -181,11 +178,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyDisplayInfo).getNetworkType();
        doReturn(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE).when(mTelephonyDisplayInfo)
                .getOverrideNetworkType();

        mEriInformation = new CdmaEriInformation(CdmaEriInformation.ERI_OFF,
                CdmaEriInformation.ERI_ICON_MODE_NORMAL);
        when(mMockTm.getCdmaEriInformation()).thenReturn(mEriInformation);

        mConfig = new Config();
        mConfig.hspaDataDistinguishable = true;
        mCallbackHandler = mock(CallbackHandler.class);
@@ -308,9 +300,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    }

    public void setCdmaRoaming(boolean isRoaming) {
        mEriInformation.setEriIconIndex(isRoaming ?
                CdmaEriInformation.ERI_ON : CdmaEriInformation.ERI_OFF);
        when(mMockTm.getCdmaEriInformation()).thenReturn(mEriInformation);
        when(mMockTm.getCdmaEnhancedRoamingIndicatorIconIndex()).thenReturn(
                isRoaming ? TelephonyManager.ERI_ON : TelephonyManager.ERI_OFF);
    }

    public void setVoiceRegState(int voiceRegState) {
+0 −169
Original line number Diff line number Diff line
/**
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.telephony;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * CDMA ERI (Enhanced Roaming Indicator) information.
 *
 * This contains the following ERI information
 *
 * 1. ERI (Enhanced Roaming Indicator) icon index. The number is assigned by
 *    3GPP2 C.R1001-H v1.0 Table 8.1-1. Additionally carriers define their own
 *    ERI icon index.
 * 2. CDMA ERI icon mode. This represents how the icon should be displayed.
 *    Its one of the following CDMA ERI icon mode
 *    {@link android.telephony.CdmaEriInformation#ERI_ICON_MODE_NORMAL}
 *    {@link android.telephony.CdmaEriInformation#ERI_ICON_MODE_FLASH}
 *
 * @hide
 */
public final class CdmaEriInformation implements Parcelable {
    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = {"ERI_"}, value = {
                ERI_ON,
                ERI_OFF,
                ERI_FLASH
            })
    public @interface EriIconIndex {}

    /**
     * ERI (Enhanced Roaming Indicator) is ON i.e value 0 defined by
     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
     */
    public static final int ERI_ON = 0;

    /**
     * ERI (Enhanced Roaming Indicator) is OFF i.e value 1 defined by
     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
     */
    public static final int ERI_OFF = 1;

    /**
     * ERI (Enhanced Roaming Indicator) is FLASH i.e value 2 defined by
     * 3GPP2 C.R1001-H v1.0 Table 8.1-1.
     */
    public static final int ERI_FLASH = 2;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = {"ERI_ICON_MODE_"}, value = {
                ERI_ICON_MODE_NORMAL,
                ERI_ICON_MODE_FLASH
            })
    public @interface EriIconMode {}

    /**
     * ERI (Enhanced Roaming Indicator) icon mode is normal. This constant represents that
     * the ERI icon should be displayed normally.
     *
     * Note: ERI is defined 3GPP2 C.R1001-H Table 8.1-1
     */
    public static final int ERI_ICON_MODE_NORMAL = 0;

    /**
     * ERI (Enhanced Roaming Indicator) icon mode flash. This constant represents that
     * the ERI icon should be flashing.
     *
     * Note: ERI is defined 3GPP2 C.R1001-H Table 8.1-1
     */
    public static final int ERI_ICON_MODE_FLASH = 1;

    private @EriIconIndex int mIconIndex;
    private @EriIconMode int mIconMode;

    /**
     * Creates CdmaEriInformation from iconIndex and iconMode
     *
     * @hide
     */
    public CdmaEriInformation(@EriIconIndex int iconIndex, @EriIconMode int iconMode) {
        mIconIndex = iconIndex;
        mIconMode = iconMode;
    }

    /** Gets the ERI icon index */
    public @EriIconIndex int getEriIconIndex() {
        return mIconIndex;
    }

    /**
     * Sets the ERI icon index
     *
     * @hide
     */
    public void setEriIconIndex(@EriIconIndex int iconIndex) {
        mIconIndex = iconIndex;
    }

    /** Gets the ERI icon mode */
    public @EriIconMode int getEriIconMode() {
        return mIconMode;
    }

    /**
     * Sets the ERI icon mode
     *
     * @hide
     */
    public void setEriIconMode(@EriIconMode int iconMode) {
        mIconMode = iconMode;
    }
    /** Implement the Parcelable interface */
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeInt(mIconIndex);
        dest.writeInt(mIconMode);
    }

    /** Implement the Parcelable interface */
    @Override
    public int describeContents() {
        return 0;
    }

    /**
     * Construct a CdmaEriInformation object from the given parcel
     */
    private CdmaEriInformation(Parcel in) {
        mIconIndex = in.readInt();
        mIconMode = in.readInt();
    }

    /** Implement the Parcelable interface */
    public static final @android.annotation.NonNull Parcelable.Creator<CdmaEriInformation> CREATOR =
            new Parcelable.Creator<CdmaEriInformation>() {
        @Override
        public CdmaEriInformation createFromParcel(Parcel in) {
            return new CdmaEriInformation(in);
        }

        @Override
        public CdmaEriInformation[] newArray(int size) {
            return new CdmaEriInformation[size];
        }
    };
}
Loading