Loading api/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,6 @@ combined_apis { "framework-media", "framework-mediaprovider", "framework-ondevicepersonalization", "framework-pdf", "framework-permission", "framework-permission-s", "framework-scheduling", Loading core/java/android/companion/virtualnative/OWNERS 0 → 100644 +1 −0 Original line number Diff line number Diff line include /services/companion/java/com/android/server/companion/virtual/OWNERS packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsTextFieldPassword.kt +3 −1 Original line number Diff line number Diff line Loading @@ -29,8 +29,8 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag Loading @@ -46,6 +46,7 @@ import com.android.settingslib.spa.framework.theme.SettingsTheme fun SettingsTextFieldPassword( value: String, label: String, enabled: Boolean = true, onTextChange: (String) -> Unit, ) { var visibility by remember { mutableStateOf(false) } Loading @@ -60,6 +61,7 @@ fun SettingsTextFieldPassword( keyboardType = KeyboardType.Password, imeAction = ImeAction.Send ), enabled = enabled, trailingIcon = { Icon( imageVector = if (visibility) Icons.Outlined.VisibilityOff Loading packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +10 −14 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import androidx.lifecycle.repeatOnLifecycle import com.android.systemui.customization.R import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.DisplaySpecific import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags.DOZING_MIGRATION_1 Loading Loading @@ -80,8 +79,8 @@ constructor( private val batteryController: BatteryController, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val configurationController: ConfigurationController, @DisplaySpecific private val resources: Resources, @DisplaySpecific private val context: Context, @Main private val resources: Resources, private val context: Context, @Main private val mainExecutor: DelayableExecutor, @Background private val bgExecutor: Executor, @KeyguardSmallClockLog private val smallLogBuffer: LogBuffer?, Loading Loading @@ -212,13 +211,13 @@ constructor( if (regionSamplingEnabled) { clock?.let { clock -> smallRegionSampler?.let { smallClockIsDark = it.currentRegionDarkness().isDark clock.smallClock.events.onRegionDarknessChanged(smallClockIsDark) val isRegionDark = it.currentRegionDarkness().isDark clock.smallClock.events.onRegionDarknessChanged(isRegionDark) } largeRegionSampler?.let { largeClockIsDark = it.currentRegionDarkness().isDark clock.largeClock.events.onRegionDarknessChanged(largeClockIsDark) val isRegionDark = it.currentRegionDarkness().isDark clock.largeClock.events.onRegionDarknessChanged(isRegionDark) } } return Loading @@ -226,12 +225,12 @@ constructor( val isLightTheme = TypedValue() context.theme.resolveAttribute(android.R.attr.isLightTheme, isLightTheme, true) smallClockIsDark = isLightTheme.data == 0 largeClockIsDark = isLightTheme.data == 0 val isRegionDark = isLightTheme.data == 0 clock?.run { smallClock.events.onRegionDarknessChanged(smallClockIsDark) largeClock.events.onRegionDarknessChanged(largeClockIsDark) Log.i(TAG, "Region isDark: $isRegionDark") smallClock.events.onRegionDarknessChanged(isRegionDark) largeClock.events.onRegionDarknessChanged(isRegionDark) } } protected open fun createRegionSampler( Loading Loading @@ -261,9 +260,6 @@ constructor( get() = isKeyguardVisible && dozeAmount < DOZE_TICKRATE_THRESHOLD private var cachedWeatherData: WeatherData? = null private var smallClockIsDark = true private var largeClockIsDark = true private val configListener = object : ConfigurationController.ConfigurationListener { override fun onThemeChanged() { Loading packages/SystemUI/src/com/android/keyguard/LockIconViewController.java +18 −3 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.AuthRippleController; import com.android.systemui.biometrics.UdfpsController; import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams; import com.android.systemui.bouncer.domain.interactor.BouncerInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; Loading @@ -74,12 +75,15 @@ import com.android.systemui.keyguard.shared.model.TransitionStep; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.res.R; import com.android.systemui.scene.shared.flag.SceneContainerFlags; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.DelayableExecutor; import dagger.Lazy; import java.io.PrintWriter; import java.util.Objects; import java.util.function.Consumer; Loading Loading @@ -128,6 +132,8 @@ public class LockIconViewController implements Dumpable { @NonNull private final KeyguardTransitionInteractor mTransitionInteractor; @NonNull private final KeyguardInteractor mKeyguardInteractor; @NonNull private final View.AccessibilityDelegate mAccessibilityDelegate; @NonNull private final Lazy<BouncerInteractor> mBouncerInteractor; @NonNull private final SceneContainerFlags mSceneContainerFlags; // Tracks the velocity of a touch to help filter out the touches that move too fast. private VelocityTracker mVelocityTracker; Loading Loading @@ -204,7 +210,9 @@ public class LockIconViewController implements Dumpable { @NonNull KeyguardInteractor keyguardInteractor, @NonNull FeatureFlags featureFlags, PrimaryBouncerInteractor primaryBouncerInteractor, Context context Context context, Lazy<BouncerInteractor> bouncerInteractor, SceneContainerFlags sceneContainerFlags ) { mStatusBarStateController = statusBarStateController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; Loading Loading @@ -233,6 +241,8 @@ public class LockIconViewController implements Dumpable { dumpManager.registerDumpable(TAG, this); mResources = resources; mContext = context; mBouncerInteractor = bouncerInteractor; mSceneContainerFlags = sceneContainerFlags; mAccessibilityDelegate = new View.AccessibilityDelegate() { private final AccessibilityNodeInfo.AccessibilityAction mAccessibilityAuthenticateHint = Loading Loading @@ -715,7 +725,8 @@ public class LockIconViewController implements Dumpable { return mDownDetected; } private void onLongPress() { @VisibleForTesting protected void onLongPress() { cancelTouches(); if (mFalsingManager.isFalseLongTap(FalsingManager.LOW_PENALTY)) { Log.v(TAG, "lock icon long-press rejected by the falsing manager."); Loading @@ -732,8 +743,12 @@ public class LockIconViewController implements Dumpable { // play device entry haptic (consistent with UDFPS controller longpress) vibrateOnLongPress(); if (mSceneContainerFlags.isEnabled()) { mBouncerInteractor.get().showOrUnlockDevice(null); } else { mKeyguardViewController.showPrimaryBouncer(/* scrim */ true); } } private void cancelTouches() { Loading Loading
api/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,6 @@ combined_apis { "framework-media", "framework-mediaprovider", "framework-ondevicepersonalization", "framework-pdf", "framework-permission", "framework-permission-s", "framework-scheduling", Loading
core/java/android/companion/virtualnative/OWNERS 0 → 100644 +1 −0 Original line number Diff line number Diff line include /services/companion/java/com/android/server/companion/virtual/OWNERS
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsTextFieldPassword.kt +3 −1 Original line number Diff line number Diff line Loading @@ -29,8 +29,8 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag Loading @@ -46,6 +46,7 @@ import com.android.settingslib.spa.framework.theme.SettingsTheme fun SettingsTextFieldPassword( value: String, label: String, enabled: Boolean = true, onTextChange: (String) -> Unit, ) { var visibility by remember { mutableStateOf(false) } Loading @@ -60,6 +61,7 @@ fun SettingsTextFieldPassword( keyboardType = KeyboardType.Password, imeAction = ImeAction.Send ), enabled = enabled, trailingIcon = { Icon( imageVector = if (visibility) Icons.Outlined.VisibilityOff Loading
packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +10 −14 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import androidx.lifecycle.repeatOnLifecycle import com.android.systemui.customization.R import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.DisplaySpecific import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags.DOZING_MIGRATION_1 Loading Loading @@ -80,8 +79,8 @@ constructor( private val batteryController: BatteryController, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val configurationController: ConfigurationController, @DisplaySpecific private val resources: Resources, @DisplaySpecific private val context: Context, @Main private val resources: Resources, private val context: Context, @Main private val mainExecutor: DelayableExecutor, @Background private val bgExecutor: Executor, @KeyguardSmallClockLog private val smallLogBuffer: LogBuffer?, Loading Loading @@ -212,13 +211,13 @@ constructor( if (regionSamplingEnabled) { clock?.let { clock -> smallRegionSampler?.let { smallClockIsDark = it.currentRegionDarkness().isDark clock.smallClock.events.onRegionDarknessChanged(smallClockIsDark) val isRegionDark = it.currentRegionDarkness().isDark clock.smallClock.events.onRegionDarknessChanged(isRegionDark) } largeRegionSampler?.let { largeClockIsDark = it.currentRegionDarkness().isDark clock.largeClock.events.onRegionDarknessChanged(largeClockIsDark) val isRegionDark = it.currentRegionDarkness().isDark clock.largeClock.events.onRegionDarknessChanged(isRegionDark) } } return Loading @@ -226,12 +225,12 @@ constructor( val isLightTheme = TypedValue() context.theme.resolveAttribute(android.R.attr.isLightTheme, isLightTheme, true) smallClockIsDark = isLightTheme.data == 0 largeClockIsDark = isLightTheme.data == 0 val isRegionDark = isLightTheme.data == 0 clock?.run { smallClock.events.onRegionDarknessChanged(smallClockIsDark) largeClock.events.onRegionDarknessChanged(largeClockIsDark) Log.i(TAG, "Region isDark: $isRegionDark") smallClock.events.onRegionDarknessChanged(isRegionDark) largeClock.events.onRegionDarknessChanged(isRegionDark) } } protected open fun createRegionSampler( Loading Loading @@ -261,9 +260,6 @@ constructor( get() = isKeyguardVisible && dozeAmount < DOZE_TICKRATE_THRESHOLD private var cachedWeatherData: WeatherData? = null private var smallClockIsDark = true private var largeClockIsDark = true private val configListener = object : ConfigurationController.ConfigurationListener { override fun onThemeChanged() { Loading
packages/SystemUI/src/com/android/keyguard/LockIconViewController.java +18 −3 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.AuthRippleController; import com.android.systemui.biometrics.UdfpsController; import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams; import com.android.systemui.bouncer.domain.interactor.BouncerInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; Loading @@ -74,12 +75,15 @@ import com.android.systemui.keyguard.shared.model.TransitionStep; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.res.R; import com.android.systemui.scene.shared.flag.SceneContainerFlags; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.DelayableExecutor; import dagger.Lazy; import java.io.PrintWriter; import java.util.Objects; import java.util.function.Consumer; Loading Loading @@ -128,6 +132,8 @@ public class LockIconViewController implements Dumpable { @NonNull private final KeyguardTransitionInteractor mTransitionInteractor; @NonNull private final KeyguardInteractor mKeyguardInteractor; @NonNull private final View.AccessibilityDelegate mAccessibilityDelegate; @NonNull private final Lazy<BouncerInteractor> mBouncerInteractor; @NonNull private final SceneContainerFlags mSceneContainerFlags; // Tracks the velocity of a touch to help filter out the touches that move too fast. private VelocityTracker mVelocityTracker; Loading Loading @@ -204,7 +210,9 @@ public class LockIconViewController implements Dumpable { @NonNull KeyguardInteractor keyguardInteractor, @NonNull FeatureFlags featureFlags, PrimaryBouncerInteractor primaryBouncerInteractor, Context context Context context, Lazy<BouncerInteractor> bouncerInteractor, SceneContainerFlags sceneContainerFlags ) { mStatusBarStateController = statusBarStateController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; Loading Loading @@ -233,6 +241,8 @@ public class LockIconViewController implements Dumpable { dumpManager.registerDumpable(TAG, this); mResources = resources; mContext = context; mBouncerInteractor = bouncerInteractor; mSceneContainerFlags = sceneContainerFlags; mAccessibilityDelegate = new View.AccessibilityDelegate() { private final AccessibilityNodeInfo.AccessibilityAction mAccessibilityAuthenticateHint = Loading Loading @@ -715,7 +725,8 @@ public class LockIconViewController implements Dumpable { return mDownDetected; } private void onLongPress() { @VisibleForTesting protected void onLongPress() { cancelTouches(); if (mFalsingManager.isFalseLongTap(FalsingManager.LOW_PENALTY)) { Log.v(TAG, "lock icon long-press rejected by the falsing manager."); Loading @@ -732,8 +743,12 @@ public class LockIconViewController implements Dumpable { // play device entry haptic (consistent with UDFPS controller longpress) vibrateOnLongPress(); if (mSceneContainerFlags.isEnabled()) { mBouncerInteractor.get().showOrUnlockDevice(null); } else { mKeyguardViewController.showPrimaryBouncer(/* scrim */ true); } } private void cancelTouches() { Loading