Loading src/java/com/android/internal/telephony/satellite/PointingAppController.java +49 −38 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ import android.text.TextUtils; import android.util.Log; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.internal.telephony.flags.FeatureFlags; Loading @@ -67,33 +66,41 @@ public class PointingAppController extends Handler { private static final int REQUEST_START_POINTING_UI = 1; private static final int REQUEST_REMOVE_LISTENER_FOR_POINTING_UI = 2; /** All the variables initialized inside the constructor are declared here. */ @NonNull private static PointingAppController sInstance; @NonNull private final Context mContext; @NonNull private final FeatureFlags mFeatureFlags; @NonNull private ActivityManager mActivityManager; @Nullable private PersistentLogger mPersistentLogger = null; /** All the variables initialized inside the constructor are declared here. */ private AtomicBoolean mStartedSatelliteTransmissionUpdates = new AtomicBoolean(false); private AtomicBoolean mLastNeedFullScreenPointingUI = new AtomicBoolean(false); private AtomicBoolean mLastIsDemoMode = new AtomicBoolean(false); private AtomicBoolean mLastIsEmergency = new AtomicBoolean(false); private AtomicBoolean mListenerForPointingUIRegistered = new AtomicBoolean(false); private final Object mListenerForPointingUIRegisteredLock = new Object(); @GuardedBy("mListenerForPointingUIRegisteredLock") private boolean mListenerForPointingUIRegistered; @NonNull private String mPointingUiPackageName = ""; @NonNull private String mPointingUiClassName = ""; @NonNull private ActivityManager mActivityManager; @NonNull public UidImportanceListener mUidImportanceListener = new UidImportanceListener(); /** * Map key: subId, value: SatelliteTransmissionUpdateHandler to notify registrants. */ private final ConcurrentHashMap<Integer, SatelliteTransmissionUpdateHandler> mSatelliteTransmissionUpdateHandlers = new ConcurrentHashMap<>(); @Nullable private PersistentLogger mPersistentLogger = null; /** * All the variables declared here should only be accessed by methods that run inside the * handler thread. */ @NonNull private String mPointingUiPackageName = ""; @NonNull private String mPointingUiClassName = ""; @NonNull public UidImportanceListener mUidImportanceListener = new UidImportanceListener(); /** * @return The singleton instance of PointingAppController. */ public static PointingAppController getInstance() { static PointingAppController getInstance() { if (sInstance == null) { loge("PointingAppController was not yet initialized."); } Loading @@ -106,7 +113,7 @@ public class PointingAppController extends Handler { * @param featureFlags The telephony feature flags. * @return The singleton instance of PointingAppController. */ public static PointingAppController make(@NonNull Context context, static PointingAppController make(@NonNull Context context, @NonNull FeatureFlags featureFlags) { if (sInstance == null) { sInstance = new PointingAppController(context, featureFlags); Loading @@ -120,11 +127,11 @@ public class PointingAppController extends Handler { * @param context The Context for the PointingUIController. */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) public PointingAppController(@NonNull Context context, protected PointingAppController(@NonNull Context context, @NonNull FeatureFlags featureFlags) { mContext = context; mFeatureFlags = featureFlags; mListenerForPointingUIRegistered = false; mListenerForPointingUIRegistered.set(false); mActivityManager = mContext.getSystemService(ActivityManager.class); mPersistentLogger = SatelliteServiceUtils.getPersistentLogger(context); } Loading Loading @@ -162,8 +169,8 @@ public class PointingAppController extends Handler { * transmission updates * @param startedSatelliteTransmissionUpdates boolean to set the flag */ @VisibleForTesting public void setStartedSatelliteTransmissionUpdates( @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void setStartedSatelliteTransmissionUpdates( boolean startedSatelliteTransmissionUpdates) { mStartedSatelliteTransmissionUpdates.set(startedSatelliteTransmissionUpdates); } Loading @@ -172,8 +179,8 @@ public class PointingAppController extends Handler { * Get the flag mStartedSatelliteTransmissionUpdates * @return returns mStartedSatelliteTransmissionUpdates */ @VisibleForTesting public boolean getStartedSatelliteTransmissionUpdates() { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected boolean getStartedSatelliteTransmissionUpdates() { return mStartedSatelliteTransmissionUpdates.get(); } Loading Loading @@ -338,7 +345,8 @@ public class PointingAppController extends Handler { * @param subId The subId of the subscription to register for receiving the updates. * @param callback The callback to notify of satellite transmission updates. */ public void registerForSatelliteTransmissionUpdates(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void registerForSatelliteTransmissionUpdates(int subId, ISatelliteTransmissionUpdateCallback callback) { subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteTransmissionUpdateHandler handler = Loading Loading @@ -367,7 +375,8 @@ public class PointingAppController extends Handler { * @param callback The callback that was passed to {@link * #registerForSatelliteTransmissionUpdates(int, ISatelliteTransmissionUpdateCallback)}. */ public void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result, ISatelliteTransmissionUpdateCallback callback) { subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteTransmissionUpdateHandler handler = Loading @@ -394,7 +403,8 @@ public class PointingAppController extends Handler { * {@link android.telephony.satellite.SatelliteTransmissionUpdateCallback * #onSatellitePositionChanged(pointingInfo)}. */ public void startSatelliteTransmissionUpdates(@NonNull Message message) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void startSatelliteTransmissionUpdates(@NonNull Message message) { if (mStartedSatelliteTransmissionUpdates.get()) { plogd("startSatelliteTransmissionUpdates: already started"); AsyncResult.forMessage(message, null, new SatelliteManager.SatelliteException( Loading @@ -411,7 +421,8 @@ public class PointingAppController extends Handler { * Reset the flag mStartedSatelliteTransmissionUpdates * This can be called by the pointing UI when the user stops pointing to the satellite. */ public void stopSatelliteTransmissionUpdates(@NonNull Message message) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void stopSatelliteTransmissionUpdates(@NonNull Message message) { setStartedSatelliteTransmissionUpdates(false); SatelliteModemInterface.getInstance().stopSendingSatellitePointingInfo(message); } Loading @@ -420,7 +431,8 @@ public class PointingAppController extends Handler { * Check if Pointing is needed and Launch Pointing UI * @param needFullScreenPointingUI if pointing UI has to be launchd with Full screen */ public void startPointingUI(boolean needFullScreenPointingUI, boolean isDemoMode, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void startPointingUI(boolean needFullScreenPointingUI, boolean isDemoMode, boolean isEmergency) { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { SomeArgs args = SomeArgs.obtain(); Loading Loading @@ -462,13 +474,12 @@ public class PointingAppController extends Handler { launchIntent.putExtra("isEmergency", isEmergency); try { synchronized (mListenerForPointingUIRegisteredLock) { if (!mListenerForPointingUIRegistered) { if (!mListenerForPointingUIRegistered.get()) { mActivityManager.addOnUidImportanceListener(mUidImportanceListener, IMPORTANCE_GONE); mListenerForPointingUIRegistered = true; } mListenerForPointingUIRegistered.set(true); } mLastNeedFullScreenPointingUI.set(needFullScreenPointingUI); mLastIsDemoMode.set(isDemoMode); mLastIsEmergency.set(isEmergency); Loading @@ -482,7 +493,8 @@ public class PointingAppController extends Handler { /** * Remove the Importance Listener For Pointing UI App once the satellite is disabled */ public void removeListenerForPointingUI() { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void removeListenerForPointingUI() { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { sendMessage(obtainMessage(REQUEST_REMOVE_LISTENER_FOR_POINTING_UI)); return; Loading @@ -493,15 +505,14 @@ public class PointingAppController extends Handler { private void handleRequestRemoveListenerForPointingUI() { plogd("handleRequestRemoveListenerForPointingUI"); synchronized (mListenerForPointingUIRegisteredLock) { if (mListenerForPointingUIRegistered) { if (mListenerForPointingUIRegistered.get()) { mActivityManager.removeOnUidImportanceListener(mUidImportanceListener); mListenerForPointingUIRegistered = false; } mListenerForPointingUIRegistered.set(false); } } public void updateSendDatagramTransferState(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void updateSendDatagramTransferState(int subId, @SatelliteManager.DatagramType int datagramType, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int sendPendingCount, int errorCode) { Loading @@ -525,8 +536,7 @@ public class PointingAppController extends Handler { * This API is used to notify PointingAppController that a send datagram has just been * requested. */ public void onSendDatagramRequested( int subId, @SatelliteManager.DatagramType int datagramType) { void onSendDatagramRequested(int subId, @SatelliteManager.DatagramType int datagramType) { subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteTransmissionUpdateHandler handler = mSatelliteTransmissionUpdateHandlers.get(subId); Loading @@ -540,7 +550,8 @@ public class PointingAppController extends Handler { } } public void updateReceiveDatagramTransferState(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void updateReceiveDatagramTransferState(int subId, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int receivePendingCount, int errorCode) { DatagramTransferStateHandlerRequest request = new DatagramTransferStateHandlerRequest( Loading tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class DatagramControllerTest extends TelephonyTest { @Mock private DatagramReceiverTest.TestDatagramReceiver mMockDatagramReceiver; @Mock private DatagramDispatcher mMockDatagramDispatcher; @Mock private PointingAppController mMockPointingAppController; @Mock private PointingAppControllerTest.TestPointingAppController mMockPointingAppController; @Mock private SatelliteSessionController mMockSatelliteSessionController; @Mock private SatelliteController mMockSatelliteController; Loading tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java +74 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.annotation.NonNull; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.AsyncResult; Loading @@ -50,6 +52,7 @@ import android.util.Log; import com.android.internal.R; import com.android.internal.telephony.TelephonyTest; import com.android.internal.telephony.flags.FeatureFlags; import org.junit.After; import org.junit.Before; Loading @@ -63,6 +66,7 @@ import org.mockito.MockitoAnnotations; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper Loading @@ -80,7 +84,7 @@ public class PointingAppControllerTest extends TelephonyTest { private static final String KEY_IS_DEMO_MODE = "isDemoMode"; private static final String KEY_IS_EMERGENCY = "isEmergency"; private PointingAppController mPointingAppController; private TestPointingAppController mPointingAppController; InOrder mInOrder; InOrder mInOrderForPointingUi; Loading @@ -107,7 +111,7 @@ public class PointingAppControllerTest extends TelephonyTest { replaceInstance(SatelliteController.class, "sInstance", null, mMockSatelliteController); doReturn(true).when(mFeatureFlags).satelliteImproveMultiThreadDesign(); mPointingAppController = new PointingAppController(mContext, mFeatureFlags); mPointingAppController = new TestPointingAppController(mContext, mFeatureFlags); mContextFixture.putResource(R.string.config_pointing_ui_package, KEY_POINTING_UI_PACKAGE_NAME); mContextFixture.putResource(R.string.config_pointing_ui_class, Loading Loading @@ -454,4 +458,72 @@ public class PointingAppControllerTest extends TelephonyTest { private static void loge(String message) { Log.e(TAG, message); } public static class TestPointingAppController extends PointingAppController { public TestPointingAppController(@NonNull Context context, @NonNull FeatureFlags featureFlags) { super(context, featureFlags); } @Override protected void setStartedSatelliteTransmissionUpdates( boolean startedSatelliteTransmissionUpdates) { super.setStartedSatelliteTransmissionUpdates(startedSatelliteTransmissionUpdates); } @Override protected boolean getStartedSatelliteTransmissionUpdates() { return super.getStartedSatelliteTransmissionUpdates(); } @Override protected void registerForSatelliteTransmissionUpdates(int subId, ISatelliteTransmissionUpdateCallback callback) { super.registerForSatelliteTransmissionUpdates(subId, callback); } @Override protected void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result, ISatelliteTransmissionUpdateCallback callback) { super.unregisterForSatelliteTransmissionUpdates(subId, result, callback); } @Override protected void startSatelliteTransmissionUpdates(@NonNull Message message) { super.startSatelliteTransmissionUpdates(message); } @Override protected void stopSatelliteTransmissionUpdates(@NonNull Message message) { super.stopSatelliteTransmissionUpdates(message); } @Override protected void startPointingUI(boolean needFullScreenPointingUI, boolean isDemoMode, boolean isEmergency) { super.startPointingUI(needFullScreenPointingUI, isDemoMode, isEmergency); } @Override protected void removeListenerForPointingUI() { super.removeListenerForPointingUI(); } @Override protected void updateSendDatagramTransferState(int subId, @SatelliteManager.DatagramType int datagramType, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int sendPendingCount, int errorCode) { super.updateSendDatagramTransferState(subId, datagramType, datagramTransferState, sendPendingCount, errorCode); } @Override protected void updateReceiveDatagramTransferState(int subId, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int receivePendingCount, int errorCode) { super.updateReceiveDatagramTransferState(subId, datagramTransferState, receivePendingCount, errorCode); } } } tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -266,7 +266,7 @@ public class SatelliteControllerTest extends TelephonyTest { @Mock private DatagramControllerTest.TestDatagramController mMockDatagramController; @Mock private SatelliteModemInterface mMockSatelliteModemInterface; @Mock private SatelliteSessionController mMockSatelliteSessionController; @Mock private PointingAppController mMockPointingAppController; @Mock private PointingAppControllerTest.TestPointingAppController mMockPointingAppController; @Mock private ControllerMetricsStats mMockControllerMetricsStats; @Mock private ProvisionMetricsStats mMockProvisionMetricsStats; @Mock private SessionMetricsStats mMockSessionMetricsStats; Loading Loading
src/java/com/android/internal/telephony/satellite/PointingAppController.java +49 −38 Original line number Diff line number Diff line Loading @@ -44,7 +44,6 @@ import android.text.TextUtils; import android.util.Log; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.internal.telephony.flags.FeatureFlags; Loading @@ -67,33 +66,41 @@ public class PointingAppController extends Handler { private static final int REQUEST_START_POINTING_UI = 1; private static final int REQUEST_REMOVE_LISTENER_FOR_POINTING_UI = 2; /** All the variables initialized inside the constructor are declared here. */ @NonNull private static PointingAppController sInstance; @NonNull private final Context mContext; @NonNull private final FeatureFlags mFeatureFlags; @NonNull private ActivityManager mActivityManager; @Nullable private PersistentLogger mPersistentLogger = null; /** All the variables initialized inside the constructor are declared here. */ private AtomicBoolean mStartedSatelliteTransmissionUpdates = new AtomicBoolean(false); private AtomicBoolean mLastNeedFullScreenPointingUI = new AtomicBoolean(false); private AtomicBoolean mLastIsDemoMode = new AtomicBoolean(false); private AtomicBoolean mLastIsEmergency = new AtomicBoolean(false); private AtomicBoolean mListenerForPointingUIRegistered = new AtomicBoolean(false); private final Object mListenerForPointingUIRegisteredLock = new Object(); @GuardedBy("mListenerForPointingUIRegisteredLock") private boolean mListenerForPointingUIRegistered; @NonNull private String mPointingUiPackageName = ""; @NonNull private String mPointingUiClassName = ""; @NonNull private ActivityManager mActivityManager; @NonNull public UidImportanceListener mUidImportanceListener = new UidImportanceListener(); /** * Map key: subId, value: SatelliteTransmissionUpdateHandler to notify registrants. */ private final ConcurrentHashMap<Integer, SatelliteTransmissionUpdateHandler> mSatelliteTransmissionUpdateHandlers = new ConcurrentHashMap<>(); @Nullable private PersistentLogger mPersistentLogger = null; /** * All the variables declared here should only be accessed by methods that run inside the * handler thread. */ @NonNull private String mPointingUiPackageName = ""; @NonNull private String mPointingUiClassName = ""; @NonNull public UidImportanceListener mUidImportanceListener = new UidImportanceListener(); /** * @return The singleton instance of PointingAppController. */ public static PointingAppController getInstance() { static PointingAppController getInstance() { if (sInstance == null) { loge("PointingAppController was not yet initialized."); } Loading @@ -106,7 +113,7 @@ public class PointingAppController extends Handler { * @param featureFlags The telephony feature flags. * @return The singleton instance of PointingAppController. */ public static PointingAppController make(@NonNull Context context, static PointingAppController make(@NonNull Context context, @NonNull FeatureFlags featureFlags) { if (sInstance == null) { sInstance = new PointingAppController(context, featureFlags); Loading @@ -120,11 +127,11 @@ public class PointingAppController extends Handler { * @param context The Context for the PointingUIController. */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) public PointingAppController(@NonNull Context context, protected PointingAppController(@NonNull Context context, @NonNull FeatureFlags featureFlags) { mContext = context; mFeatureFlags = featureFlags; mListenerForPointingUIRegistered = false; mListenerForPointingUIRegistered.set(false); mActivityManager = mContext.getSystemService(ActivityManager.class); mPersistentLogger = SatelliteServiceUtils.getPersistentLogger(context); } Loading Loading @@ -162,8 +169,8 @@ public class PointingAppController extends Handler { * transmission updates * @param startedSatelliteTransmissionUpdates boolean to set the flag */ @VisibleForTesting public void setStartedSatelliteTransmissionUpdates( @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void setStartedSatelliteTransmissionUpdates( boolean startedSatelliteTransmissionUpdates) { mStartedSatelliteTransmissionUpdates.set(startedSatelliteTransmissionUpdates); } Loading @@ -172,8 +179,8 @@ public class PointingAppController extends Handler { * Get the flag mStartedSatelliteTransmissionUpdates * @return returns mStartedSatelliteTransmissionUpdates */ @VisibleForTesting public boolean getStartedSatelliteTransmissionUpdates() { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected boolean getStartedSatelliteTransmissionUpdates() { return mStartedSatelliteTransmissionUpdates.get(); } Loading Loading @@ -338,7 +345,8 @@ public class PointingAppController extends Handler { * @param subId The subId of the subscription to register for receiving the updates. * @param callback The callback to notify of satellite transmission updates. */ public void registerForSatelliteTransmissionUpdates(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void registerForSatelliteTransmissionUpdates(int subId, ISatelliteTransmissionUpdateCallback callback) { subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteTransmissionUpdateHandler handler = Loading Loading @@ -367,7 +375,8 @@ public class PointingAppController extends Handler { * @param callback The callback that was passed to {@link * #registerForSatelliteTransmissionUpdates(int, ISatelliteTransmissionUpdateCallback)}. */ public void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result, ISatelliteTransmissionUpdateCallback callback) { subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteTransmissionUpdateHandler handler = Loading @@ -394,7 +403,8 @@ public class PointingAppController extends Handler { * {@link android.telephony.satellite.SatelliteTransmissionUpdateCallback * #onSatellitePositionChanged(pointingInfo)}. */ public void startSatelliteTransmissionUpdates(@NonNull Message message) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void startSatelliteTransmissionUpdates(@NonNull Message message) { if (mStartedSatelliteTransmissionUpdates.get()) { plogd("startSatelliteTransmissionUpdates: already started"); AsyncResult.forMessage(message, null, new SatelliteManager.SatelliteException( Loading @@ -411,7 +421,8 @@ public class PointingAppController extends Handler { * Reset the flag mStartedSatelliteTransmissionUpdates * This can be called by the pointing UI when the user stops pointing to the satellite. */ public void stopSatelliteTransmissionUpdates(@NonNull Message message) { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void stopSatelliteTransmissionUpdates(@NonNull Message message) { setStartedSatelliteTransmissionUpdates(false); SatelliteModemInterface.getInstance().stopSendingSatellitePointingInfo(message); } Loading @@ -420,7 +431,8 @@ public class PointingAppController extends Handler { * Check if Pointing is needed and Launch Pointing UI * @param needFullScreenPointingUI if pointing UI has to be launchd with Full screen */ public void startPointingUI(boolean needFullScreenPointingUI, boolean isDemoMode, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void startPointingUI(boolean needFullScreenPointingUI, boolean isDemoMode, boolean isEmergency) { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { SomeArgs args = SomeArgs.obtain(); Loading Loading @@ -462,13 +474,12 @@ public class PointingAppController extends Handler { launchIntent.putExtra("isEmergency", isEmergency); try { synchronized (mListenerForPointingUIRegisteredLock) { if (!mListenerForPointingUIRegistered) { if (!mListenerForPointingUIRegistered.get()) { mActivityManager.addOnUidImportanceListener(mUidImportanceListener, IMPORTANCE_GONE); mListenerForPointingUIRegistered = true; } mListenerForPointingUIRegistered.set(true); } mLastNeedFullScreenPointingUI.set(needFullScreenPointingUI); mLastIsDemoMode.set(isDemoMode); mLastIsEmergency.set(isEmergency); Loading @@ -482,7 +493,8 @@ public class PointingAppController extends Handler { /** * Remove the Importance Listener For Pointing UI App once the satellite is disabled */ public void removeListenerForPointingUI() { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void removeListenerForPointingUI() { if (mFeatureFlags.satelliteImproveMultiThreadDesign()) { sendMessage(obtainMessage(REQUEST_REMOVE_LISTENER_FOR_POINTING_UI)); return; Loading @@ -493,15 +505,14 @@ public class PointingAppController extends Handler { private void handleRequestRemoveListenerForPointingUI() { plogd("handleRequestRemoveListenerForPointingUI"); synchronized (mListenerForPointingUIRegisteredLock) { if (mListenerForPointingUIRegistered) { if (mListenerForPointingUIRegistered.get()) { mActivityManager.removeOnUidImportanceListener(mUidImportanceListener); mListenerForPointingUIRegistered = false; } mListenerForPointingUIRegistered.set(false); } } public void updateSendDatagramTransferState(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void updateSendDatagramTransferState(int subId, @SatelliteManager.DatagramType int datagramType, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int sendPendingCount, int errorCode) { Loading @@ -525,8 +536,7 @@ public class PointingAppController extends Handler { * This API is used to notify PointingAppController that a send datagram has just been * requested. */ public void onSendDatagramRequested( int subId, @SatelliteManager.DatagramType int datagramType) { void onSendDatagramRequested(int subId, @SatelliteManager.DatagramType int datagramType) { subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; SatelliteTransmissionUpdateHandler handler = mSatelliteTransmissionUpdateHandlers.get(subId); Loading @@ -540,7 +550,8 @@ public class PointingAppController extends Handler { } } public void updateReceiveDatagramTransferState(int subId, @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) protected void updateReceiveDatagramTransferState(int subId, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int receivePendingCount, int errorCode) { DatagramTransferStateHandlerRequest request = new DatagramTransferStateHandlerRequest( Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/DatagramControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class DatagramControllerTest extends TelephonyTest { @Mock private DatagramReceiverTest.TestDatagramReceiver mMockDatagramReceiver; @Mock private DatagramDispatcher mMockDatagramDispatcher; @Mock private PointingAppController mMockPointingAppController; @Mock private PointingAppControllerTest.TestPointingAppController mMockPointingAppController; @Mock private SatelliteSessionController mMockSatelliteSessionController; @Mock private SatelliteController mMockSatelliteController; Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/PointingAppControllerTest.java +74 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.annotation.NonNull; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.AsyncResult; Loading @@ -50,6 +52,7 @@ import android.util.Log; import com.android.internal.R; import com.android.internal.telephony.TelephonyTest; import com.android.internal.telephony.flags.FeatureFlags; import org.junit.After; import org.junit.Before; Loading @@ -63,6 +66,7 @@ import org.mockito.MockitoAnnotations; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper Loading @@ -80,7 +84,7 @@ public class PointingAppControllerTest extends TelephonyTest { private static final String KEY_IS_DEMO_MODE = "isDemoMode"; private static final String KEY_IS_EMERGENCY = "isEmergency"; private PointingAppController mPointingAppController; private TestPointingAppController mPointingAppController; InOrder mInOrder; InOrder mInOrderForPointingUi; Loading @@ -107,7 +111,7 @@ public class PointingAppControllerTest extends TelephonyTest { replaceInstance(SatelliteController.class, "sInstance", null, mMockSatelliteController); doReturn(true).when(mFeatureFlags).satelliteImproveMultiThreadDesign(); mPointingAppController = new PointingAppController(mContext, mFeatureFlags); mPointingAppController = new TestPointingAppController(mContext, mFeatureFlags); mContextFixture.putResource(R.string.config_pointing_ui_package, KEY_POINTING_UI_PACKAGE_NAME); mContextFixture.putResource(R.string.config_pointing_ui_class, Loading Loading @@ -454,4 +458,72 @@ public class PointingAppControllerTest extends TelephonyTest { private static void loge(String message) { Log.e(TAG, message); } public static class TestPointingAppController extends PointingAppController { public TestPointingAppController(@NonNull Context context, @NonNull FeatureFlags featureFlags) { super(context, featureFlags); } @Override protected void setStartedSatelliteTransmissionUpdates( boolean startedSatelliteTransmissionUpdates) { super.setStartedSatelliteTransmissionUpdates(startedSatelliteTransmissionUpdates); } @Override protected boolean getStartedSatelliteTransmissionUpdates() { return super.getStartedSatelliteTransmissionUpdates(); } @Override protected void registerForSatelliteTransmissionUpdates(int subId, ISatelliteTransmissionUpdateCallback callback) { super.registerForSatelliteTransmissionUpdates(subId, callback); } @Override protected void unregisterForSatelliteTransmissionUpdates(int subId, Consumer<Integer> result, ISatelliteTransmissionUpdateCallback callback) { super.unregisterForSatelliteTransmissionUpdates(subId, result, callback); } @Override protected void startSatelliteTransmissionUpdates(@NonNull Message message) { super.startSatelliteTransmissionUpdates(message); } @Override protected void stopSatelliteTransmissionUpdates(@NonNull Message message) { super.stopSatelliteTransmissionUpdates(message); } @Override protected void startPointingUI(boolean needFullScreenPointingUI, boolean isDemoMode, boolean isEmergency) { super.startPointingUI(needFullScreenPointingUI, isDemoMode, isEmergency); } @Override protected void removeListenerForPointingUI() { super.removeListenerForPointingUI(); } @Override protected void updateSendDatagramTransferState(int subId, @SatelliteManager.DatagramType int datagramType, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int sendPendingCount, int errorCode) { super.updateSendDatagramTransferState(subId, datagramType, datagramTransferState, sendPendingCount, errorCode); } @Override protected void updateReceiveDatagramTransferState(int subId, @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState, int receivePendingCount, int errorCode) { super.updateReceiveDatagramTransferState(subId, datagramTransferState, receivePendingCount, errorCode); } } }
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -266,7 +266,7 @@ public class SatelliteControllerTest extends TelephonyTest { @Mock private DatagramControllerTest.TestDatagramController mMockDatagramController; @Mock private SatelliteModemInterface mMockSatelliteModemInterface; @Mock private SatelliteSessionController mMockSatelliteSessionController; @Mock private PointingAppController mMockPointingAppController; @Mock private PointingAppControllerTest.TestPointingAppController mMockPointingAppController; @Mock private ControllerMetricsStats mMockControllerMetricsStats; @Mock private ProvisionMetricsStats mMockProvisionMetricsStats; @Mock private SessionMetricsStats mMockSessionMetricsStats; Loading