Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -51,11 +51,13 @@ import com.android.systemui.res.R import com.android.systemui.shade.ShadeViewStateProvider import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.core.NewStatusBarIcons import com.android.systemui.statusbar.data.repository.StatusBarContentInsetsProviderStore import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler import com.android.systemui.statusbar.layout.mockStatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.ui.StatusBarIconController import com.android.systemui.statusbar.phone.ui.TintedIconManager import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.batteryViewModelFactory import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController Loading Loading @@ -85,6 +87,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @RunWithLooper(setAsMainLooper = true) @DisableFlags(NewStatusBarIcons.FLAG_NAME) class KeyguardStatusBarViewControllerTest : SysuiTestCase() { private lateinit var kosmos: Kosmos private lateinit var testScope: TestScope Loading Loading @@ -190,6 +193,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { statusBarIconController, iconManagerFactory, batteryMeterViewController, kosmos.batteryViewModelFactory, shadeViewStateProvider, keyguardStateController, keyguardBypassController, Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +17 −4 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.settingslib.Utils; import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.res.R; import com.android.systemui.statusbar.core.NewStatusBarIcons; import com.android.systemui.statusbar.layout.StatusBarContentInsetsProvider; import com.android.systemui.statusbar.phone.SysuiDarkIconDispatcher.DarkChange; import com.android.systemui.statusbar.phone.ui.TintedIconManager; Loading Loading @@ -78,7 +79,7 @@ public class KeyguardStatusBarView extends RelativeLayout { private TextView mCarrierLabel; private ImageView mMultiUserAvatar; private BatteryMeterView mBatteryView; @Nullable private BatteryMeterView mBatteryView; private StatusIconContainer mStatusIconContainer; private StatusBarUserSwitcherContainer mUserSwitcherContainer; Loading Loading @@ -127,6 +128,11 @@ public class KeyguardStatusBarView extends RelativeLayout { mMultiUserAvatar = findViewById(R.id.multi_user_avatar); mCarrierLabel = findViewById(R.id.keyguard_carrier_text); mBatteryView = mSystemIconsContainer.findViewById(R.id.battery); if (NewStatusBarIcons.isEnabled()) { // When this flag is rolled forward, this whole view can be removed mBatteryView.setVisibility(View.GONE); mBatteryView = null; } mCutoutSpace = findViewById(R.id.cutout_space_view); mStatusIconArea = findViewById(R.id.status_icon_area); mStatusIconContainer = findViewById(R.id.statusIcons); Loading Loading @@ -255,8 +261,11 @@ public class KeyguardStatusBarView extends RelativeLayout { mMultiUserAvatar.setVisibility(View.GONE); } } if (mBatteryView != null) { mBatteryView.setForceShowPercent(mBatteryCharging && mShowPercentAvailable); } } private void updateSystemIconsLayoutParams() { LinearLayout.LayoutParams lp = Loading Loading @@ -435,7 +444,9 @@ public class KeyguardStatusBarView extends RelativeLayout { /** Should only be called from {@link KeyguardStatusBarViewController}. */ void onThemeChanged(TintedIconManager iconManager) { if (mBatteryView != null) { mBatteryView.setColorsFromContext(mContext); } updateIconsAndTextColors(iconManager); } Loading @@ -443,7 +454,9 @@ public class KeyguardStatusBarView extends RelativeLayout { void onOverlayChanged() { final int carrierTheme = R.style.TextAppearance_StatusBar_Clock; mCarrierLabel.setTextAppearance(carrierTheme); if (mBatteryView != null) { mBatteryView.updatePercentView(); } final int userSwitcherTheme = R.style.TextAppearance_StatusBar_UserChip; TextView userSwitcherName = mUserSwitcherContainer.findViewById(R.id.current_user_name); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +22 −2 Original line number Diff line number Diff line Loading @@ -34,10 +34,12 @@ import android.provider.Settings; import android.util.MathUtils; import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.compose.ui.platform.ComposeView; import androidx.core.animation.Animator; import androidx.core.animation.AnimatorListenerAdapter; import androidx.core.animation.ValueAnimator; Loading @@ -62,6 +64,7 @@ import com.android.systemui.shade.ShadeViewStateProvider; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.core.NewStatusBarIcons; import com.android.systemui.statusbar.data.repository.StatusBarContentInsetsProviderStore; import com.android.systemui.statusbar.disableflags.DisableStateTracker; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; Loading @@ -71,10 +74,13 @@ import com.android.systemui.statusbar.notification.AnimatableProperty; import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.domain.interactor.DarkIconInteractor; import com.android.systemui.statusbar.phone.fragment.StatusBarIconBlocklistKt; import com.android.systemui.statusbar.phone.fragment.StatusBarSystemEventDefaultAnimator; import com.android.systemui.statusbar.phone.ui.StatusBarIconController; import com.android.systemui.statusbar.phone.ui.TintedIconManager; import com.android.systemui.statusbar.pipeline.battery.ui.binder.UnifiedBatteryViewBinder; import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -125,6 +131,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final StatusBarIconController mStatusBarIconController; private final TintedIconManager.Factory mTintedIconManagerFactory; private final BatteryMeterViewController mBatteryMeterViewController; private final BatteryViewModel.Factory mBatteryViewModelFactory; private final ShadeViewStateProvider mShadeViewStateProvider; private final KeyguardStateController mKeyguardStateController; private final KeyguardBypassController mKeyguardBypassController; Loading @@ -145,7 +152,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final GlanceableHubToLockscreenTransitionViewModel mHubToLockscreenTransitionViewModel; private final LockscreenToGlanceableHubTransitionViewModel mLockscreenToHubTransitionViewModel; private View mSystemIconsContainer; private ViewGroup mSystemIconsContainer; private final StatusOverlayHoverListenerFactory mStatusOverlayHoverListenerFactory; private final ConfigurationController.ConfigurationListener mConfigurationListener = Loading Loading @@ -327,6 +334,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat StatusBarIconController statusBarIconController, TintedIconManager.Factory tintedIconManagerFactory, BatteryMeterViewController batteryMeterViewController, BatteryViewModel.Factory batteryViewModelFactory, ShadeViewStateProvider shadeViewStateProvider, KeyguardStateController keyguardStateController, KeyguardBypassController bypassController, Loading Loading @@ -360,6 +368,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mStatusBarIconController = statusBarIconController; mTintedIconManagerFactory = tintedIconManagerFactory; mBatteryMeterViewController = batteryMeterViewController; mBatteryViewModelFactory = batteryViewModelFactory; mShadeViewStateProvider = shadeViewStateProvider; mKeyguardStateController = keyguardStateController; mKeyguardBypassController = bypassController; Loading Loading @@ -417,7 +426,9 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat protected void onInit() { super.onInit(); mCarrierTextController.init(); if (!NewStatusBarIcons.isEnabled()) { mBatteryMeterViewController.init(); } if (isMigrationEnabled()) { KeyguardStatusBarViewBinder.bind(mView, mKeyguardStatusBarViewModel); } Loading Loading @@ -469,6 +480,15 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mToGlanceableHubStatusBarAlphaConsumer, mCoroutineDispatcher); collectFlow(mView, mHubToLockscreenTransitionViewModel.getStatusBarAlpha(), mFromGlanceableHubStatusBarAlphaConsumer, mCoroutineDispatcher); if (NewStatusBarIcons.isEnabled()) { ComposeView batteryComposeView = new ComposeView(mContext); UnifiedBatteryViewBinder.bind( batteryComposeView, mBatteryViewModelFactory, DarkIconInteractor.toIsAreaDark(mView.darkChangeFlow())); mSystemIconsContainer.addView(batteryComposeView, -1); } } @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt +12 −1 Original line number Diff line number Diff line Loading @@ -16,7 +16,10 @@ package com.android.systemui.statusbar.pipeline.battery.ui.binder import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.core.view.isVisible Loading @@ -27,6 +30,8 @@ import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark import com.android.systemui.statusbar.pipeline.battery.ui.composable.UnifiedBattery import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.STATUS_BAR_BATTERY_HEIGHT import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.STATUS_BAR_BATTERY_WIDTH import kotlinx.coroutines.flow.Flow /** In cases where the battery needs to be bound to an existing android view */ Loading @@ -47,7 +52,13 @@ object UnifiedBatteryViewBinder { ) setContent { val isDark by isAreaDark.collectAsStateWithLifecycle(IsAreaDark { true }) UnifiedBattery(viewModelFactory = viewModelFactory, isDark = isDark) UnifiedBattery( modifier = Modifier.height(STATUS_BAR_BATTERY_HEIGHT) .width(STATUS_BAR_BATTERY_WIDTH), viewModelFactory = viewModelFactory, isDark = isDark, ) } } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt +4 −0 Original line number Diff line number Diff line Loading @@ -51,11 +51,13 @@ import com.android.systemui.res.R import com.android.systemui.shade.ShadeViewStateProvider import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.core.NewStatusBarIcons import com.android.systemui.statusbar.data.repository.StatusBarContentInsetsProviderStore import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler import com.android.systemui.statusbar.layout.mockStatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.ui.StatusBarIconController import com.android.systemui.statusbar.phone.ui.TintedIconManager import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.batteryViewModelFactory import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController Loading Loading @@ -85,6 +87,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @RunWithLooper(setAsMainLooper = true) @DisableFlags(NewStatusBarIcons.FLAG_NAME) class KeyguardStatusBarViewControllerTest : SysuiTestCase() { private lateinit var kosmos: Kosmos private lateinit var testScope: TestScope Loading Loading @@ -190,6 +193,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { statusBarIconController, iconManagerFactory, batteryMeterViewController, kosmos.batteryViewModelFactory, shadeViewStateProvider, keyguardStateController, keyguardBypassController, Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +17 −4 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.settingslib.Utils; import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.res.R; import com.android.systemui.statusbar.core.NewStatusBarIcons; import com.android.systemui.statusbar.layout.StatusBarContentInsetsProvider; import com.android.systemui.statusbar.phone.SysuiDarkIconDispatcher.DarkChange; import com.android.systemui.statusbar.phone.ui.TintedIconManager; Loading Loading @@ -78,7 +79,7 @@ public class KeyguardStatusBarView extends RelativeLayout { private TextView mCarrierLabel; private ImageView mMultiUserAvatar; private BatteryMeterView mBatteryView; @Nullable private BatteryMeterView mBatteryView; private StatusIconContainer mStatusIconContainer; private StatusBarUserSwitcherContainer mUserSwitcherContainer; Loading Loading @@ -127,6 +128,11 @@ public class KeyguardStatusBarView extends RelativeLayout { mMultiUserAvatar = findViewById(R.id.multi_user_avatar); mCarrierLabel = findViewById(R.id.keyguard_carrier_text); mBatteryView = mSystemIconsContainer.findViewById(R.id.battery); if (NewStatusBarIcons.isEnabled()) { // When this flag is rolled forward, this whole view can be removed mBatteryView.setVisibility(View.GONE); mBatteryView = null; } mCutoutSpace = findViewById(R.id.cutout_space_view); mStatusIconArea = findViewById(R.id.status_icon_area); mStatusIconContainer = findViewById(R.id.statusIcons); Loading Loading @@ -255,8 +261,11 @@ public class KeyguardStatusBarView extends RelativeLayout { mMultiUserAvatar.setVisibility(View.GONE); } } if (mBatteryView != null) { mBatteryView.setForceShowPercent(mBatteryCharging && mShowPercentAvailable); } } private void updateSystemIconsLayoutParams() { LinearLayout.LayoutParams lp = Loading Loading @@ -435,7 +444,9 @@ public class KeyguardStatusBarView extends RelativeLayout { /** Should only be called from {@link KeyguardStatusBarViewController}. */ void onThemeChanged(TintedIconManager iconManager) { if (mBatteryView != null) { mBatteryView.setColorsFromContext(mContext); } updateIconsAndTextColors(iconManager); } Loading @@ -443,7 +454,9 @@ public class KeyguardStatusBarView extends RelativeLayout { void onOverlayChanged() { final int carrierTheme = R.style.TextAppearance_StatusBar_Clock; mCarrierLabel.setTextAppearance(carrierTheme); if (mBatteryView != null) { mBatteryView.updatePercentView(); } final int userSwitcherTheme = R.style.TextAppearance_StatusBar_UserChip; TextView userSwitcherName = mUserSwitcherContainer.findViewById(R.id.current_user_name); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +22 −2 Original line number Diff line number Diff line Loading @@ -34,10 +34,12 @@ import android.provider.Settings; import android.util.MathUtils; import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.compose.ui.platform.ComposeView; import androidx.core.animation.Animator; import androidx.core.animation.AnimatorListenerAdapter; import androidx.core.animation.ValueAnimator; Loading @@ -62,6 +64,7 @@ import com.android.systemui.shade.ShadeViewStateProvider; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.core.NewStatusBarIcons; import com.android.systemui.statusbar.data.repository.StatusBarContentInsetsProviderStore; import com.android.systemui.statusbar.disableflags.DisableStateTracker; import com.android.systemui.statusbar.events.SystemStatusAnimationCallback; Loading @@ -71,10 +74,13 @@ import com.android.systemui.statusbar.notification.AnimatableProperty; import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.domain.interactor.DarkIconInteractor; import com.android.systemui.statusbar.phone.fragment.StatusBarIconBlocklistKt; import com.android.systemui.statusbar.phone.fragment.StatusBarSystemEventDefaultAnimator; import com.android.systemui.statusbar.phone.ui.StatusBarIconController; import com.android.systemui.statusbar.phone.ui.TintedIconManager; import com.android.systemui.statusbar.pipeline.battery.ui.binder.UnifiedBatteryViewBinder; import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -125,6 +131,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final StatusBarIconController mStatusBarIconController; private final TintedIconManager.Factory mTintedIconManagerFactory; private final BatteryMeterViewController mBatteryMeterViewController; private final BatteryViewModel.Factory mBatteryViewModelFactory; private final ShadeViewStateProvider mShadeViewStateProvider; private final KeyguardStateController mKeyguardStateController; private final KeyguardBypassController mKeyguardBypassController; Loading @@ -145,7 +152,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private final GlanceableHubToLockscreenTransitionViewModel mHubToLockscreenTransitionViewModel; private final LockscreenToGlanceableHubTransitionViewModel mLockscreenToHubTransitionViewModel; private View mSystemIconsContainer; private ViewGroup mSystemIconsContainer; private final StatusOverlayHoverListenerFactory mStatusOverlayHoverListenerFactory; private final ConfigurationController.ConfigurationListener mConfigurationListener = Loading Loading @@ -327,6 +334,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat StatusBarIconController statusBarIconController, TintedIconManager.Factory tintedIconManagerFactory, BatteryMeterViewController batteryMeterViewController, BatteryViewModel.Factory batteryViewModelFactory, ShadeViewStateProvider shadeViewStateProvider, KeyguardStateController keyguardStateController, KeyguardBypassController bypassController, Loading Loading @@ -360,6 +368,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mStatusBarIconController = statusBarIconController; mTintedIconManagerFactory = tintedIconManagerFactory; mBatteryMeterViewController = batteryMeterViewController; mBatteryViewModelFactory = batteryViewModelFactory; mShadeViewStateProvider = shadeViewStateProvider; mKeyguardStateController = keyguardStateController; mKeyguardBypassController = bypassController; Loading Loading @@ -417,7 +426,9 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat protected void onInit() { super.onInit(); mCarrierTextController.init(); if (!NewStatusBarIcons.isEnabled()) { mBatteryMeterViewController.init(); } if (isMigrationEnabled()) { KeyguardStatusBarViewBinder.bind(mView, mKeyguardStatusBarViewModel); } Loading Loading @@ -469,6 +480,15 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat mToGlanceableHubStatusBarAlphaConsumer, mCoroutineDispatcher); collectFlow(mView, mHubToLockscreenTransitionViewModel.getStatusBarAlpha(), mFromGlanceableHubStatusBarAlphaConsumer, mCoroutineDispatcher); if (NewStatusBarIcons.isEnabled()) { ComposeView batteryComposeView = new ComposeView(mContext); UnifiedBatteryViewBinder.bind( batteryComposeView, mBatteryViewModelFactory, DarkIconInteractor.toIsAreaDark(mView.darkChangeFlow())); mSystemIconsContainer.addView(batteryComposeView, -1); } } @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/battery/ui/binder/UnifiedBatteryViewBinder.kt +12 −1 Original line number Diff line number Diff line Loading @@ -16,7 +16,10 @@ package com.android.systemui.statusbar.pipeline.battery.ui.binder import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.core.view.isVisible Loading @@ -27,6 +30,8 @@ import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.statusbar.phone.domain.interactor.IsAreaDark import com.android.systemui.statusbar.pipeline.battery.ui.composable.UnifiedBattery import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.STATUS_BAR_BATTERY_HEIGHT import com.android.systemui.statusbar.pipeline.battery.ui.viewmodel.BatteryViewModel.Companion.STATUS_BAR_BATTERY_WIDTH import kotlinx.coroutines.flow.Flow /** In cases where the battery needs to be bound to an existing android view */ Loading @@ -47,7 +52,13 @@ object UnifiedBatteryViewBinder { ) setContent { val isDark by isAreaDark.collectAsStateWithLifecycle(IsAreaDark { true }) UnifiedBattery(viewModelFactory = viewModelFactory, isDark = isDark) UnifiedBattery( modifier = Modifier.height(STATUS_BAR_BATTERY_HEIGHT) .width(STATUS_BAR_BATTERY_WIDTH), viewModelFactory = viewModelFactory, isDark = isDark, ) } } } Loading