From 3e2365108092ba6c7944fbee4fab31839a3c173f Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Thu, 28 Feb 2019 14:31:56 -0800 Subject: [PATCH] Update ImsSsData/ImsSsInfo API based on API council feedback. Bug: 126699932 Bug: 126702587 Bug: 126701185 Bug: 126702997 Test: atest FrameworksTelephonyTests Change-Id: I8500c2905bbc34d9033e2869b51d38b8d9b4727f --- api/system-current.txt | 16 ++++----- .../telephony/ims/ImsCallSessionListener.java | 3 +- .../java/android/telephony/ims/ImsSsData.java | 42 ++++++++++++---------- .../java/android/telephony/ims/ImsSsInfo.java | 4 +-- 4 files changed, 35 insertions(+), 30 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 7fcc6c0a924f..0e7adfdb70f4 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6841,7 +6841,7 @@ package android.telephony.ims { method public void callSessionResumeFailed(android.telephony.ims.ImsReasonInfo); method public void callSessionResumeReceived(android.telephony.ims.ImsCallProfile); method public void callSessionResumed(android.telephony.ims.ImsCallProfile); - method public void callSessionRttAudioIndicatorChanged(android.telephony.ims.ImsStreamMediaProfile); + method public void callSessionRttAudioIndicatorChanged(@NonNull android.telephony.ims.ImsStreamMediaProfile); method public void callSessionRttMessageReceived(String); method public void callSessionRttModifyRequestReceived(android.telephony.ims.ImsCallProfile); method public void callSessionRttModifyResponseReceived(int); @@ -7145,12 +7145,12 @@ package android.telephony.ims { public final class ImsSsData implements android.os.Parcelable { ctor public ImsSsData(int, int, int, int, int); method public int describeContents(); - method public android.telephony.ims.ImsCallForwardInfo[] getCallForwardInfo(); + method @Nullable public java.util.List getCallForwardInfo(); method public int getRequestType(); method public int getResult(); method public int getServiceClass(); method public int getServiceType(); - method @NonNull public android.telephony.ims.ImsSsInfo[] getSuppServiceInfo(); + method @NonNull public java.util.List getSuppServiceInfo(); method public int getTeleserviceType(); method public boolean isTypeBarring(); method public boolean isTypeCf(); @@ -7210,11 +7210,11 @@ package android.telephony.ims { field public static final int SS_WAIT = 12; // 0xc } - public static class ImsSsData.Builder { + public static final class ImsSsData.Builder { ctor public ImsSsData.Builder(int, int, int, int, int); method @NonNull public android.telephony.ims.ImsSsData build(); - method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull android.telephony.ims.ImsCallForwardInfo[]); - method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull android.telephony.ims.ImsSsInfo[]); + method @NonNull public android.telephony.ims.ImsSsData.Builder setCallForwardingInfo(@NonNull java.util.List); + method @NonNull public android.telephony.ims.ImsSsData.Builder setSuppServiceInfo(@NonNull java.util.List); } public final class ImsSsInfo implements android.os.Parcelable { @@ -7223,7 +7223,7 @@ package android.telephony.ims { method public int getClirInterrogationStatus(); method public int getClirOutgoingState(); method @Deprecated public String getIcbNum(); - method public String getIncomingCommunicationBarringNumber(); + method @Nullable public String getIncomingCommunicationBarringNumber(); method public int getProvisionStatus(); method public int getStatus(); method public void writeToParcel(android.os.Parcel, int); @@ -7244,7 +7244,7 @@ package android.telephony.ims { field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff } - public static class ImsSsInfo.Builder { + public static final class ImsSsInfo.Builder { ctor public ImsSsInfo.Builder(int); method @NonNull public android.telephony.ims.ImsSsInfo build(); method @NonNull public android.telephony.ims.ImsSsInfo.Builder setClirInterrogationStatus(int); diff --git a/telephony/java/android/telephony/ims/ImsCallSessionListener.java b/telephony/java/android/telephony/ims/ImsCallSessionListener.java index 337375ac51c3..542a5fd8d6a7 100644 --- a/telephony/java/android/telephony/ims/ImsCallSessionListener.java +++ b/telephony/java/android/telephony/ims/ImsCallSessionListener.java @@ -16,6 +16,7 @@ package android.telephony.ims; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.os.RemoteException; import android.telephony.CallQuality; @@ -606,7 +607,7 @@ public class ImsCallSessionListener { * * @param profile updated ImsStreamMediaProfile */ - public void callSessionRttAudioIndicatorChanged(ImsStreamMediaProfile profile) { + public void callSessionRttAudioIndicatorChanged(@NonNull ImsStreamMediaProfile profile) { try { mListener.callSessionRttAudioIndicatorChanged(profile); } catch (RemoteException e) { diff --git a/telephony/java/android/telephony/ims/ImsSsData.java b/telephony/java/android/telephony/ims/ImsSsData.java index 3a82517955ce..86832bb13f7e 100644 --- a/telephony/java/android/telephony/ims/ImsSsData.java +++ b/telephony/java/android/telephony/ims/ImsSsData.java @@ -17,6 +17,7 @@ package android.telephony.ims; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; @@ -24,6 +25,9 @@ import android.telephony.Rlog; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * Provides STK Call Control Supplementary Service information. @@ -260,13 +264,13 @@ public final class ImsSsData implements Parcelable { public final int result; private int[] mSsInfo; - private ImsCallForwardInfo[] mCfInfo; - private ImsSsInfo[] mImsSsInfo; + private List mCfInfo; + private List mImsSsInfo; /** * Builder for optional ImsSsData parameters. */ - public static class Builder { + public static final class Builder { private ImsSsData mImsSsData; /** @@ -301,7 +305,7 @@ public final class ImsSsData implements Parcelable { * Set the array of {@link ImsSsInfo}s that are associated with this supplementary service * data. */ - public @NonNull Builder setSuppServiceInfo(@NonNull ImsSsInfo[] imsSsInfos) { + public @NonNull Builder setSuppServiceInfo(@NonNull List imsSsInfos) { mImsSsData.mImsSsInfo = imsSsInfos; return this; } @@ -311,7 +315,7 @@ public final class ImsSsData implements Parcelable { * service data. */ public @NonNull Builder setCallForwardingInfo( - @NonNull ImsCallForwardInfo[] imsCallForwardInfos) { + @NonNull List imsCallForwardInfos) { mImsSsData.mCfInfo = imsCallForwardInfos; return this; } @@ -360,8 +364,8 @@ public final class ImsSsData implements Parcelable { serviceClass = in.readInt(); result = in.readInt(); mSsInfo = in.createIntArray(); - mCfInfo = (ImsCallForwardInfo[])in.readParcelableArray(this.getClass().getClassLoader()); - mImsSsInfo = (ImsSsInfo[])in.readParcelableArray(this.getClass().getClassLoader()); + mCfInfo = in.readParcelableList(new ArrayList<>(), this.getClass().getClassLoader()); + mImsSsInfo = in.readParcelableList(new ArrayList<>(), this.getClass().getClassLoader()); } public static final Creator CREATOR = new Creator() { @@ -384,8 +388,8 @@ public final class ImsSsData implements Parcelable { out.writeInt(getServiceClass()); out.writeInt(getResult()); out.writeIntArray(mSsInfo); - out.writeParcelableArray(mCfInfo, 0); - out.writeParcelableArray(mImsSsInfo, 0); + out.writeParcelableList(mCfInfo, 0); + out.writeParcelableList(mImsSsInfo, 0); } @Override @@ -500,12 +504,12 @@ public final class ImsSsData implements Parcelable { /** @hide */ public void setImsSpecificSuppServiceInfo(ImsSsInfo[] imsSsInfo) { - mImsSsInfo = imsSsInfo; + mImsSsInfo = Arrays.asList(imsSsInfo); } /** @hide */ public void setCallForwardingInfo(ImsCallForwardInfo[] cfInfo) { - mCfInfo = cfInfo; + mCfInfo = Arrays.asList(cfInfo); } /** @@ -524,7 +528,7 @@ public final class ImsSsData implements Parcelable { int[] result = new int[2]; - if (mImsSsInfo == null || mImsSsInfo.length == 0) { + if (mImsSsInfo == null || mImsSsInfo.size() == 0) { Rlog.e(TAG, "getSuppServiceInfoCompat: Could not parse mImsSsInfo, returning empty " + "int[]"); return result; @@ -535,26 +539,26 @@ public final class ImsSsData implements Parcelable { if (isTypeClir()) { // Assume there will only be one ImsSsInfo. // contains {"n","m"} parameters - result[0] = mImsSsInfo[0].getClirOutgoingState(); - result[1] = mImsSsInfo[0].getClirInterrogationStatus(); + result[0] = mImsSsInfo.get(0).getClirOutgoingState(); + result[1] = mImsSsInfo.get(0).getClirInterrogationStatus(); return result; } // COLR 7.31 if (isTypeColr()) { - result[0] = mImsSsInfo[0].getProvisionStatus(); + result[0] = mImsSsInfo.get(0).getProvisionStatus(); } // Facility Lock CLCK 7.4 (for call barring), CLIP 7.6, COLP 7.8, as well as any // other result, just return the status for the "n" parameter and provisioning status for // "m" as the default. - result[0] = mImsSsInfo[0].getStatus(); - result[1] = mImsSsInfo[0].getProvisionStatus(); + result[0] = mImsSsInfo.get(0).getStatus(); + result[1] = mImsSsInfo.get(0).getProvisionStatus(); return result; } /** * @return an array of {@link ImsSsInfo}s associated with this supplementary service data. */ - public @NonNull ImsSsInfo[] getSuppServiceInfo() { + public @NonNull List getSuppServiceInfo() { return mImsSsInfo; } @@ -562,7 +566,7 @@ public final class ImsSsData implements Parcelable { * @return an array of {@link ImsCallForwardInfo}s associated with this supplementary service * data. **/ - public ImsCallForwardInfo[] getCallForwardInfo() { + public @Nullable List getCallForwardInfo() { return mCfInfo; } diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java index 031f9e10175b..fba390c26242 100644 --- a/telephony/java/android/telephony/ims/ImsSsInfo.java +++ b/telephony/java/android/telephony/ims/ImsSsInfo.java @@ -173,7 +173,7 @@ public final class ImsSsInfo implements Parcelable { /** * Builds {@link ImsSsInfo} instances, which may include optional parameters. */ - public static class Builder { + public static final class Builder { private final ImsSsInfo mImsSsInfo; @@ -304,7 +304,7 @@ public final class ImsSsInfo implements Parcelable { /** * @return The Incoming Communication Barring (ICB) number. */ - public String getIncomingCommunicationBarringNumber() { + public @Nullable String getIncomingCommunicationBarringNumber() { return mIcbNum; } -- 2.11.0