Loading flags/misc.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -169,3 +169,13 @@ flag { } } # OWNER=tjstuart TARGET=25Q3 flag { name: "immediately_process_do_not_show_again_broadcast" namespace: "telephony" description: "Ensure the Do Not Show Again broadcast is immediately processed by receiver" bug:"368690328" metadata { purpose: PURPOSE_BUGFIX } } src/java/com/android/internal/telephony/CarrierServiceStateTracker.java +6 −1 Original line number Diff line number Diff line Loading @@ -715,10 +715,15 @@ public class CarrierServiceStateTracker extends Handler { * notification */ private Notification.Action createDoNotShowAgainAction(Context c) { Intent broadcastIntent = new Intent(ACTION_NEVER_ASK_AGAIN); if (mFeatureFlags.immediatelyProcessDoNotShowAgainBroadcast()) { // Ensure immediate delivery of the broadcast to the receiver! broadcastIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); } final PendingIntent pendingIntent = PendingIntent.getBroadcast( c, 0, new Intent(ACTION_NEVER_ASK_AGAIN), broadcastIntent, PendingIntent.FLAG_IMMUTABLE); CharSequence text = "Do Not Ask Again"; if (c != null && mFeatureFlags.dynamicDoNotAskAgainText()) { Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +75 −91 Original line number Diff line number Diff line Loading @@ -392,6 +392,9 @@ public class SatelliteController extends Handler { protected AtomicBoolean mIsRadioOn = new AtomicBoolean(false); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected AtomicBoolean mRadioOffRequested = new AtomicBoolean(false); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected AtomicBoolean mIsDeviceProvisioned = null; private AtomicBoolean mOverriddenIsSatelliteViaOemProvisioned = null; private AtomicBoolean mIgnorePlmnListFromStorage = new AtomicBoolean(false); private final Object mSatelliteEnabledRequestLock = new Object(); Loading Loading @@ -485,13 +488,6 @@ public class SatelliteController extends Handler { private final ConcurrentHashMap<IBinder, ISelectedNbIotSatelliteSubscriptionCallback> mSelectedNbIotSatelliteSubscriptionChangedListeners = new ConcurrentHashMap<>(); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected final Object mDeviceProvisionLock = new Object(); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) @GuardedBy("mDeviceProvisionLock") protected Boolean mIsDeviceProvisioned = null; @GuardedBy("mDeviceProvisionLock") private Boolean mOverriddenIsSatelliteViaOemProvisioned = null; private final Object mSatelliteCapabilitiesLock = new Object(); @GuardedBy("mSatelliteCapabilitiesLock") private SatelliteCapabilities mSatelliteCapabilities; Loading Loading @@ -3405,11 +3401,8 @@ public class SatelliteController extends Handler { } catch (RemoteException ex) { loge("registerForSatelliteProvisionStateChanged: " + ex); } synchronized (mDeviceProvisionLock) { plogd("registerForSatelliteProvisionStateChanged: report current provisioned " + "state, state=" + isProvisioned); } return SATELLITE_RESULT_SUCCESS; } Loading Loading @@ -3451,15 +3444,13 @@ public class SatelliteController extends Handler { return; } synchronized (mDeviceProvisionLock) { if (mIsDeviceProvisioned != null) { Bundle bundle = new Bundle(); bundle.putBoolean(SatelliteManager.KEY_SATELLITE_PROVISIONED, mIsDeviceProvisioned); mIsDeviceProvisioned.get()); result.send(SATELLITE_RESULT_SUCCESS, bundle); return; } } sendRequestAsync(CMD_IS_SATELLITE_PROVISIONED, result, null); incrementResultReceiverCount("SC:requestIsSatelliteProvisioned"); Loading Loading @@ -4275,12 +4266,10 @@ public class SatelliteController extends Handler { ploge("setOemEnabledSatelliteProvisionStatus: mock modem not allowed"); return false; } synchronized (mDeviceProvisionLock) { if (reset) { mOverriddenIsSatelliteViaOemProvisioned = null; } else { mOverriddenIsSatelliteViaOemProvisioned = isProvisioned; } mOverriddenIsSatelliteViaOemProvisioned = new AtomicBoolean(isProvisioned); } return true; } Loading Loading @@ -5139,16 +5128,14 @@ public class SatelliteController extends Handler { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) @Nullable protected Boolean isDeviceProvisioned() { synchronized (mDeviceProvisionLock) { if (mOverriddenIsSatelliteViaOemProvisioned != null) { return mOverriddenIsSatelliteViaOemProvisioned; return mOverriddenIsSatelliteViaOemProvisioned.get(); } if (mIsDeviceProvisioned == null) { mIsDeviceProvisioned = getPersistedDeviceProvisionStatus(); } return mIsDeviceProvisioned; mIsDeviceProvisioned = new AtomicBoolean(getPersistedDeviceProvisionStatus()); } return mIsDeviceProvisioned.get(); } private void handleSatelliteEnabled(SatelliteControllerHandlerRequest request) { Loading Loading @@ -5457,11 +5444,12 @@ public class SatelliteController extends Handler { private void updateCachedDeviceProvisionStatus() { boolean isProvisioned = getPersistedDeviceProvisionStatus(); plogd("updateCachedDeviceProvisionStatus: isProvisioned=" + isProvisioned); synchronized (mDeviceProvisionLock) { if (mIsDeviceProvisioned == null || mIsDeviceProvisioned != isProvisioned) { mIsDeviceProvisioned = isProvisioned; if (mIsDeviceProvisioned == null) { mIsDeviceProvisioned = new AtomicBoolean(isProvisioned); notifyDeviceProvisionStateChanged(isProvisioned); } else if (mIsDeviceProvisioned.get() != isProvisioned) { mIsDeviceProvisioned.set(isProvisioned); notifyDeviceProvisionStateChanged(isProvisioned); } } } Loading Loading @@ -7051,7 +7039,6 @@ public class SatelliteController extends Handler { } private void persistOemEnabledSatelliteProvisionStatus(boolean isProvisioned) { synchronized (mDeviceProvisionLock) { plogd("persistOemEnabledSatelliteProvisionStatus: isProvisioned=" + isProvisioned); if (mFeatureFlags.carrierRoamingNbIotNtn()) { int subId = getNtnOnlySubscriptionId(); Loading @@ -7078,12 +7065,10 @@ public class SatelliteController extends Handler { } } } } @Nullable private boolean getPersistedDeviceProvisionStatus() { plogd("getPersistedDeviceProvisionStatus"); synchronized (mDeviceProvisionLock) { if (mFeatureFlags.carrierRoamingNbIotNtn()) { int subId = getNtnOnlySubscriptionId(); if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Loading Loading @@ -7123,7 +7108,6 @@ public class SatelliteController extends Handler { } } } } private boolean loadSatelliteSharedPreferences() { if (mSharedPreferences == null) { Loading tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +10 −2 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @RunWith(AndroidTestingRunner.class) Loading Loading @@ -6083,8 +6084,15 @@ public class SatelliteControllerTest extends TelephonyTest { } void setSatelliteProvisioned(@Nullable Boolean isProvisioned) { synchronized (mDeviceProvisionLock) { mIsDeviceProvisioned = isProvisioned; if (isProvisioned == null) { mIsDeviceProvisioned = null; return; } if (mIsDeviceProvisioned == null) { mIsDeviceProvisioned = new AtomicBoolean(isProvisioned); } else { mIsDeviceProvisioned.set(isProvisioned); } } Loading Loading
flags/misc.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -169,3 +169,13 @@ flag { } } # OWNER=tjstuart TARGET=25Q3 flag { name: "immediately_process_do_not_show_again_broadcast" namespace: "telephony" description: "Ensure the Do Not Show Again broadcast is immediately processed by receiver" bug:"368690328" metadata { purpose: PURPOSE_BUGFIX } }
src/java/com/android/internal/telephony/CarrierServiceStateTracker.java +6 −1 Original line number Diff line number Diff line Loading @@ -715,10 +715,15 @@ public class CarrierServiceStateTracker extends Handler { * notification */ private Notification.Action createDoNotShowAgainAction(Context c) { Intent broadcastIntent = new Intent(ACTION_NEVER_ASK_AGAIN); if (mFeatureFlags.immediatelyProcessDoNotShowAgainBroadcast()) { // Ensure immediate delivery of the broadcast to the receiver! broadcastIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); } final PendingIntent pendingIntent = PendingIntent.getBroadcast( c, 0, new Intent(ACTION_NEVER_ASK_AGAIN), broadcastIntent, PendingIntent.FLAG_IMMUTABLE); CharSequence text = "Do Not Ask Again"; if (c != null && mFeatureFlags.dynamicDoNotAskAgainText()) { Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +75 −91 Original line number Diff line number Diff line Loading @@ -392,6 +392,9 @@ public class SatelliteController extends Handler { protected AtomicBoolean mIsRadioOn = new AtomicBoolean(false); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected AtomicBoolean mRadioOffRequested = new AtomicBoolean(false); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected AtomicBoolean mIsDeviceProvisioned = null; private AtomicBoolean mOverriddenIsSatelliteViaOemProvisioned = null; private AtomicBoolean mIgnorePlmnListFromStorage = new AtomicBoolean(false); private final Object mSatelliteEnabledRequestLock = new Object(); Loading Loading @@ -485,13 +488,6 @@ public class SatelliteController extends Handler { private final ConcurrentHashMap<IBinder, ISelectedNbIotSatelliteSubscriptionCallback> mSelectedNbIotSatelliteSubscriptionChangedListeners = new ConcurrentHashMap<>(); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected final Object mDeviceProvisionLock = new Object(); @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) @GuardedBy("mDeviceProvisionLock") protected Boolean mIsDeviceProvisioned = null; @GuardedBy("mDeviceProvisionLock") private Boolean mOverriddenIsSatelliteViaOemProvisioned = null; private final Object mSatelliteCapabilitiesLock = new Object(); @GuardedBy("mSatelliteCapabilitiesLock") private SatelliteCapabilities mSatelliteCapabilities; Loading Loading @@ -3405,11 +3401,8 @@ public class SatelliteController extends Handler { } catch (RemoteException ex) { loge("registerForSatelliteProvisionStateChanged: " + ex); } synchronized (mDeviceProvisionLock) { plogd("registerForSatelliteProvisionStateChanged: report current provisioned " + "state, state=" + isProvisioned); } return SATELLITE_RESULT_SUCCESS; } Loading Loading @@ -3451,15 +3444,13 @@ public class SatelliteController extends Handler { return; } synchronized (mDeviceProvisionLock) { if (mIsDeviceProvisioned != null) { Bundle bundle = new Bundle(); bundle.putBoolean(SatelliteManager.KEY_SATELLITE_PROVISIONED, mIsDeviceProvisioned); mIsDeviceProvisioned.get()); result.send(SATELLITE_RESULT_SUCCESS, bundle); return; } } sendRequestAsync(CMD_IS_SATELLITE_PROVISIONED, result, null); incrementResultReceiverCount("SC:requestIsSatelliteProvisioned"); Loading Loading @@ -4275,12 +4266,10 @@ public class SatelliteController extends Handler { ploge("setOemEnabledSatelliteProvisionStatus: mock modem not allowed"); return false; } synchronized (mDeviceProvisionLock) { if (reset) { mOverriddenIsSatelliteViaOemProvisioned = null; } else { mOverriddenIsSatelliteViaOemProvisioned = isProvisioned; } mOverriddenIsSatelliteViaOemProvisioned = new AtomicBoolean(isProvisioned); } return true; } Loading Loading @@ -5139,16 +5128,14 @@ public class SatelliteController extends Handler { @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) @Nullable protected Boolean isDeviceProvisioned() { synchronized (mDeviceProvisionLock) { if (mOverriddenIsSatelliteViaOemProvisioned != null) { return mOverriddenIsSatelliteViaOemProvisioned; return mOverriddenIsSatelliteViaOemProvisioned.get(); } if (mIsDeviceProvisioned == null) { mIsDeviceProvisioned = getPersistedDeviceProvisionStatus(); } return mIsDeviceProvisioned; mIsDeviceProvisioned = new AtomicBoolean(getPersistedDeviceProvisionStatus()); } return mIsDeviceProvisioned.get(); } private void handleSatelliteEnabled(SatelliteControllerHandlerRequest request) { Loading Loading @@ -5457,11 +5444,12 @@ public class SatelliteController extends Handler { private void updateCachedDeviceProvisionStatus() { boolean isProvisioned = getPersistedDeviceProvisionStatus(); plogd("updateCachedDeviceProvisionStatus: isProvisioned=" + isProvisioned); synchronized (mDeviceProvisionLock) { if (mIsDeviceProvisioned == null || mIsDeviceProvisioned != isProvisioned) { mIsDeviceProvisioned = isProvisioned; if (mIsDeviceProvisioned == null) { mIsDeviceProvisioned = new AtomicBoolean(isProvisioned); notifyDeviceProvisionStateChanged(isProvisioned); } else if (mIsDeviceProvisioned.get() != isProvisioned) { mIsDeviceProvisioned.set(isProvisioned); notifyDeviceProvisionStateChanged(isProvisioned); } } } Loading Loading @@ -7051,7 +7039,6 @@ public class SatelliteController extends Handler { } private void persistOemEnabledSatelliteProvisionStatus(boolean isProvisioned) { synchronized (mDeviceProvisionLock) { plogd("persistOemEnabledSatelliteProvisionStatus: isProvisioned=" + isProvisioned); if (mFeatureFlags.carrierRoamingNbIotNtn()) { int subId = getNtnOnlySubscriptionId(); Loading @@ -7078,12 +7065,10 @@ public class SatelliteController extends Handler { } } } } @Nullable private boolean getPersistedDeviceProvisionStatus() { plogd("getPersistedDeviceProvisionStatus"); synchronized (mDeviceProvisionLock) { if (mFeatureFlags.carrierRoamingNbIotNtn()) { int subId = getNtnOnlySubscriptionId(); if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { Loading Loading @@ -7123,7 +7108,6 @@ public class SatelliteController extends Handler { } } } } private boolean loadSatelliteSharedPreferences() { if (mSharedPreferences == null) { Loading
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +10 −2 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @RunWith(AndroidTestingRunner.class) Loading Loading @@ -6083,8 +6084,15 @@ public class SatelliteControllerTest extends TelephonyTest { } void setSatelliteProvisioned(@Nullable Boolean isProvisioned) { synchronized (mDeviceProvisionLock) { mIsDeviceProvisioned = isProvisioned; if (isProvisioned == null) { mIsDeviceProvisioned = null; return; } if (mIsDeviceProvisioned == null) { mIsDeviceProvisioned = new AtomicBoolean(isProvisioned); } else { mIsDeviceProvisioned.set(isProvisioned); } } Loading