From b77206708781f6ffc6d813686ce6cf58642229cd Mon Sep 17 00:00:00 2001 From: Sarah Chin Date: Wed, 1 Feb 2023 01:31:25 -0800 Subject: [PATCH] Cleanup satellite pointing APIs Assert null and use clean calling identity for callbacks Test: atest SatelliteManagerTest Bug: 266249740 Change-Id: I255c1b252ca755f263bf1d91f89243c368984300 --- .../telephony/satellite/SatelliteManager.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java index d0154271fce2a..7a60c582d51f6 100644 --- a/telephony/java/android/telephony/satellite/SatelliteManager.java +++ b/telephony/java/android/telephony/satellite/SatelliteManager.java @@ -179,7 +179,6 @@ public class SatelliteManager { * Error received from satellite service. */ public static final int SATELLITE_SERVICE_ERROR = 17; - /** * Satellite service is disabled on the requested subscription. */ @@ -275,6 +274,9 @@ public class SatelliteManager { @SatelliteServiceResult public int startSatellitePositionUpdates( @NonNull @CallbackExecutor Executor executor, @NonNull SatellitePositionUpdateCallback callback) { + Objects.requireNonNull(executor); + Objects.requireNonNull(callback); + try { ITelephony telephony = getITelephony(); if (telephony != null) { @@ -290,16 +292,16 @@ public class SatelliteManager { public void onSatellitePositionUpdate( @NonNull PointingInfo pointingInfo) { logd("onSatellitePositionUpdate: pointingInfo=" + pointingInfo); - executor.execute(() -> - callback.onSatellitePositionUpdate(pointingInfo)); + executor.execute(() -> Binder.withCleanCallingIdentity( + () -> callback.onSatellitePositionUpdate(pointingInfo))); } @Override public void onMessageTransferStateUpdate( @SatelliteMessageTransferState int state) { logd("onMessageTransferStateUpdate: state=" + state); - executor.execute(() -> - callback.onMessageTransferStateUpdate(state)); + executor.execute(() -> Binder.withCleanCallingIdentity( + () -> callback.onMessageTransferStateUpdate(state))); } }); if (result == SATELLITE_SERVICE_SUCCESS) { @@ -330,6 +332,8 @@ public class SatelliteManager { @RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION) @SatelliteServiceResult public int stopSatellitePositionUpdates( @NonNull SatellitePositionUpdateCallback callback) { + Objects.requireNonNull(callback); + if (!mSatellitePositionUpdateCallbacks.containsKey(callback)) { throw new IllegalArgumentException( "startSatellitePositionUpdates was never called with the callback provided.");