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

Commit 90ccb6f1 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of ['googleplex-android-review.googlesource.com/27953195',...

Merge cherrypicks of ['googleplex-android-review.googlesource.com/27953195', 'googleplex-android-review.googlesource.com/28003910', 'googleplex-android-review.googlesource.com/28218141', 'googleplex-android-review.googlesource.com/28211352', 'googleplex-android-review.googlesource.com/28337565', 'googleplex-android-review.googlesource.com/28342320'] into 24Q3-release.

Change-Id: I2413d66c10a982965325f97c5229f18853e5bb10
parents 8fa0f212 b5093407
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import static com.android.providers.settings.SettingsState.isSystemSettingsKey;
import static com.android.providers.settings.SettingsState.makeKey;

import android.Manifest;
import android.aconfigd.AconfigdFlagInfo;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
@@ -1369,10 +1370,27 @@ public class SettingsProvider extends ContentProvider {
                }
            }

            Map<String, AconfigdFlagInfo> aconfigFlagInfos =
                    settingsState.getAconfigDefaultFlags();

            for (int i = 0; i < nameCount; i++) {
                String name = names.get(i);
                Setting setting = settingsState.getSettingLocked(name);
                if (prefix == null || setting.getName().startsWith(prefix)) {
                if (prefix == null || name.startsWith(prefix)) {
                    if (Flags.ignoreXmlForReadOnlyFlags()) {
                        int slashIndex = name.indexOf("/");
                        boolean validSlashIndex = slashIndex != -1
                                && slashIndex != 0
                                && slashIndex != name.length();
                        if (validSlashIndex) {
                            String flagName = name.substring(slashIndex + 1);
                            AconfigdFlagInfo flagInfo = aconfigFlagInfos.get(flagName);
                            if (flagInfo != null && !flagInfo.getIsReadWrite()) {
                                continue;
                            }
                        }
                    }

                    flagsToValues.put(setting.getName(), setting.getValue());
                }
            }
+7 −0
Original line number Diff line number Diff line
@@ -765,6 +765,13 @@ final class SettingsState {
        }
    }

    @NonNull
    public Map<String, AconfigdFlagInfo> getAconfigDefaultFlags() {
        synchronized (mLock) {
            return mAconfigDefaultFlags;
        }
    }

    // The settings provider must hold its lock when calling here.
    public Setting getSettingLocked(String name) {
        if (TextUtils.isEmpty(name)) {
+11 −0
Original line number Diff line number Diff line
@@ -41,3 +41,14 @@ flag {
    description: "If this flag is detected as true on boot, writes a logfile to track storage migration correctness."
    bug: "328444881"
}

flag {
    name: "ignore_xml_for_read_only_flags"
    namespace: "core_experiments_team_internal"
    description: "When enabled, ignore any flag in the SettingsProvider XML for RO flags."
    bug: "345007098"
    is_fixed_read_only: true
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -90,7 +90,11 @@ class FromAlternateBouncerTransitionInteractorTest : SysuiTestCase() {
            )
            reset(transitionRepository)

            kosmos.fakeKeyguardBouncerRepository.setKeyguardAuthenticatedBiometrics(null)
            kosmos.fakeKeyguardRepository.setKeyguardOccluded(true)
            runCurrent()
            assertThat(transitionRepository).noTransitionsStarted()

            kosmos.fakeKeyguardBouncerRepository.setKeyguardAuthenticatedBiometrics(true)
            runCurrent()
            kosmos.fakeKeyguardBouncerRepository.setKeyguardAuthenticatedBiometrics(null)
+4 −1
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flatMapLatest
@@ -168,7 +169,9 @@ constructor(
                    keyguardInteractor.isKeyguardGoingAway.filter { it }.map {}, // map to Unit
                    keyguardInteractor.isKeyguardOccluded.flatMapLatest { keyguardOccluded ->
                        if (keyguardOccluded) {
                            primaryBouncerInteractor.keyguardAuthenticatedBiometricsHandled
                            primaryBouncerInteractor.keyguardAuthenticatedBiometricsHandled.drop(
                                1
                            ) // drop the initial state
                        } else {
                            emptyFlow()
                        }
Loading