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

Commit 0af4d239 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13476683 from c73bbdcb to 25Q3-release

Change-Id: I6a32cacc68215fa28c6eb09dbd26077965276f07
parents f4758382 c73bbdcb
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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
    }
}
+6 −1
Original line number Diff line number Diff line
@@ -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()) {
+75 −91
Original line number Diff line number Diff line
@@ -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();
@@ -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;
@@ -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;
    }

@@ -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");
@@ -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;
    }
@@ -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) {
@@ -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);
            }
        }
    }

@@ -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();
@@ -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) {
@@ -7123,7 +7108,6 @@ public class SatelliteController extends Handler {
            }
        }
    }
    }

    private boolean loadSatelliteSharedPreferences() {
        if (mSharedPreferences == null) {
+10 −2
Original line number Diff line number Diff line
@@ -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)
@@ -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);
            }
        }