diff options
author | 2024-09-16 11:36:33 +0200 | |
---|---|---|
committer | 2024-09-16 16:32:28 +0200 | |
commit | 45f28caa56e86d6ca20835fa0f608917f919e9c2 (patch) | |
tree | 874d258ab2100768ca58ab029d6bf737152991ed | |
parent | c7c82ca00a146fb40aad00114cd714cac8a416ca (diff) |
Improve ModesUi (and related) flag checks in SystemUI
Fixes: 364303841
Test: N/A, covered by existing tests
Flag: android.app.modes_ui
Change-Id: Ia99df64bb98630986c86e63eb592f02ddd37ba99
10 files changed, 147 insertions, 55 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/modes/shared/ModesUi.kt b/packages/SystemUI/src/com/android/systemui/modes/shared/ModesUi.kt new file mode 100644 index 000000000000..a0663d72a076 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/modes/shared/ModesUi.kt @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.modes.shared + +import android.app.Flags +import com.android.systemui.flags.RefactorFlagUtils + +/** Helper for reading or using the modes ui flag state. */ +@Suppress("NOTHING_TO_INLINE") +object ModesUi { + /** Is the refactor enabled */ + @JvmStatic + inline val isEnabled + get() = Flags.modesApi() && Flags.modesUi() + + /** + * Called to ensure code is only run when the flag is enabled. This protects users from the + * unintended behaviors caused by accidentally running new logic, while also crashing on an eng + * build to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun isUnexpectedlyInLegacyMode() = + RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, Flags.FLAG_MODES_UI) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is not enabled to ensure that the refactor author catches issues in testing. + * Caution!! Using this check incorrectly will cause crashes in nextfood builds! + */ + @JvmStatic + inline fun assertInNewMode() = RefactorFlagUtils.assertInNewMode(isEnabled, Flags.FLAG_MODES_UI) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is enabled to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun assertInLegacyMode() = + RefactorFlagUtils.assertInLegacyMode(isEnabled, Flags.FLAG_MODES_UI) +} diff --git a/packages/SystemUI/src/com/android/systemui/modes/shared/ModesUiIcons.kt b/packages/SystemUI/src/com/android/systemui/modes/shared/ModesUiIcons.kt new file mode 100644 index 000000000000..032b0aca1770 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/modes/shared/ModesUiIcons.kt @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.modes.shared + +import android.app.Flags +import com.android.systemui.flags.RefactorFlagUtils + +/** Helper for reading or using the modes ui icons flag state. */ +@Suppress("NOTHING_TO_INLINE") +object ModesUiIcons { + /** Is the refactor enabled */ + @JvmStatic + inline val isEnabled + get() = ModesUi.isEnabled && Flags.modesUiIcons() + + /** + * Called to ensure code is only run when the flag is enabled. This protects users from the + * unintended behaviors caused by accidentally running new logic, while also crashing on an eng + * build to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun isUnexpectedlyInLegacyMode() = + RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, Flags.FLAG_MODES_UI_ICONS) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is not enabled to ensure that the refactor author catches issues in testing. + * Caution!! Using this check incorrectly will cause crashes in nextfood builds! + */ + @JvmStatic + inline fun assertInNewMode() = + RefactorFlagUtils.assertInNewMode(isEnabled, Flags.FLAG_MODES_UI_ICONS) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is enabled to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun assertInLegacyMode() = + RefactorFlagUtils.assertInLegacyMode(isEnabled, Flags.FLAG_MODES_UI_ICONS) +} diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java index b927134842df..a4fe4e3e1243 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java @@ -49,7 +49,7 @@ import com.android.systemui.animation.DialogTransitionAnimator; import com.android.systemui.animation.Expandable; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.flags.RefactorFlagUtils; +import com.android.systemui.modes.shared.ModesUi; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.QSTile.BooleanState; @@ -108,8 +108,7 @@ public class DndTile extends QSTileImpl<BooleanState> { statusBarStateController, activityStarter, qsLogger); // If the flag is on, this shouldn't run at all since the modes tile replaces the DND tile. - RefactorFlagUtils.INSTANCE.assertInLegacyMode(android.app.Flags.modesUi(), - android.app.Flags.FLAG_MODES_UI); + ModesUi.assertInLegacyMode(); mController = zenModeController; mSharedPreferences = sharedPreferences; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt index 7d23fbdf2ece..cf2db6c66ce7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt @@ -16,7 +16,6 @@ package com.android.systemui.qs.tiles -import android.app.Flags import android.content.Intent import android.os.Handler import android.os.Looper @@ -30,7 +29,8 @@ import com.android.internal.logging.MetricsLogger import com.android.systemui.animation.Expandable import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main -import com.android.systemui.flags.RefactorFlagUtils.isUnexpectedlyInLegacyMode +import com.android.systemui.modes.shared.ModesUi +import com.android.systemui.modes.shared.ModesUiIcons import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.qs.QSTile @@ -77,14 +77,14 @@ constructor( metricsLogger, statusBarStateController, activityStarter, - qsLogger + qsLogger, ) { private lateinit var tileState: QSTileState private val config = qsTileConfigProvider.getConfig(TILE_SPEC) init { - /* Check if */ isUnexpectedlyInLegacyMode(Flags.modesUi(), Flags.FLAG_MODES_UI) + /* Check if */ ModesUiIcons.isUnexpectedlyInLegacyMode() lifecycle.coroutineScope.launch { lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) { @@ -93,7 +93,7 @@ constructor( } } - override fun isAvailable(): Boolean = Flags.modesUi() + override fun isAvailable(): Boolean = ModesUi.isEnabled override fun getTileLabel(): CharSequence = tileState.label diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt index 483373d8fb6d..5d44ead7c21a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt @@ -16,13 +16,14 @@ package com.android.systemui.qs.tiles.impl.modes.domain.interactor -import android.app.Flags import android.content.Context import android.os.UserHandle import com.android.app.tracing.coroutines.flow.map import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.asIcon import com.android.systemui.dagger.qualifiers.Background +import com.android.systemui.modes.shared.ModesUi +import com.android.systemui.modes.shared.ModesUiIcons import com.android.systemui.qs.tiles.ModesTile import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger import com.android.systemui.qs.tiles.base.interactor.QSTileDataInteractor @@ -47,7 +48,7 @@ constructor( override fun tileData( user: UserHandle, - triggers: Flow<DataUpdateTrigger> + triggers: Flow<DataUpdateTrigger>, ): Flow<ModesTileModel> = tileData() /** @@ -64,20 +65,20 @@ constructor( suspend fun getCurrentTileModel() = buildTileData(zenModeInteractor.getActiveModes()) private fun buildTileData(activeModes: ActiveZenModes): ModesTileModel { - if (usesModeIcons()) { + if (ModesUiIcons.isEnabled) { val tileIcon = getTileIcon(activeModes.mainMode) return ModesTileModel( isActivated = activeModes.isAnyActive(), icon = tileIcon.icon, iconResId = tileIcon.resId, - activeModes = activeModes.modeNames + activeModes = activeModes.modeNames, ) } else { return ModesTileModel( isActivated = activeModes.isAnyActive(), icon = context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), iconResId = ModesTile.ICON_RES_ID, - activeModes = activeModes.modeNames + activeModes = activeModes.modeNames, ) } } @@ -97,7 +98,5 @@ constructor( } } - override fun availability(user: UserHandle): Flow<Boolean> = flowOf(Flags.modesUi()) - - private fun usesModeIcons() = Flags.modesApi() && Flags.modesUi() && Flags.modesUiIcons() + override fun availability(user: UserHandle): Flow<Boolean> = flowOf(ModesUi.isEnabled) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index 87f360eb9712..ad3afd4d1756 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -61,6 +61,7 @@ import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon.Shape; import com.android.internal.util.ContrastColorUtil; import com.android.systemui.Flags; +import com.android.systemui.modes.shared.ModesUiIcons; import com.android.systemui.res.R; import com.android.systemui.statusbar.notification.NotificationContentDescription; import com.android.systemui.statusbar.notification.NotificationDozeHelper; @@ -215,7 +216,7 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi // We scale notification icons (on the left) plus icons on the right that explicitly // want FIXED_SPACE. boolean useNonSystemIconScaling = isNotification() - || (usesModeIcons() && mIcon != null && mIcon.shape == Shape.FIXED_SPACE); + || (ModesUiIcons.isEnabled() && mIcon != null && mIcon.shape == Shape.FIXED_SPACE); if (useNonSystemIconScaling) { updateIconScaleForNonSystemIcons(); @@ -415,7 +416,7 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi if (!levelEquals) { setImageLevel(icon.iconLevel); } - if (usesModeIcons() && icon.shape == Shape.FIXED_SPACE) { + if (ModesUiIcons.isEnabled() && icon.shape == Shape.FIXED_SPACE) { setScaleType(ScaleType.FIT_CENTER); } if (!visibilityEquals) { @@ -506,7 +507,7 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi @Nullable private Drawable loadDrawable(Context context, StatusBarIcon statusBarIcon) { - if (usesModeIcons() && statusBarIcon.preloadedIcon != null) { + if (ModesUiIcons.isEnabled() && statusBarIcon.preloadedIcon != null) { Drawable.ConstantState cached = statusBarIcon.preloadedIcon.getConstantState(); if (cached != null) { return cached.newDrawable(mContext.getResources()).mutate(); @@ -1041,9 +1042,4 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi public boolean showsConversation() { return mShowsConversation; } - - private static boolean usesModeIcons() { - return android.app.Flags.modesApi() && android.app.Flags.modesUi() - && android.app.Flags.modesUiIcons(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index ba39c3bb4124..8c0353813ec6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -51,6 +51,7 @@ import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor; +import com.android.systemui.modes.shared.ModesUiIcons; import com.android.systemui.privacy.PrivacyItem; import com.android.systemui.privacy.PrivacyItemController; import com.android.systemui.privacy.PrivacyType; @@ -360,7 +361,7 @@ public class PhoneStatusBarPolicy mBluetooth.addCallback(this); mProvisionedController.addCallback(this); mCurrentUserSetup = mProvisionedController.isCurrentUserSetup(); - if (usesModeIcons()) { + if (ModesUiIcons.isEnabled()) { // Note that we're not fully replacing ZenModeController with ZenModeInteractor, so // we listen for the extra event here but still add the ZMC callback. mJavaAdapter.alwaysCollectFlow(mZenModeInteractor.getMainActiveMode(), @@ -397,8 +398,7 @@ public class PhoneStatusBarPolicy } private void onMainActiveModeChanged(@Nullable ZenModeInfo mainActiveMode) { - if (!usesModeIcons()) { - Log.wtf(TAG, "onMainActiveModeChanged shouldn't run if MODES_UI_ICONS is disabled"); + if (ModesUiIcons.isUnexpectedlyInLegacyMode()) { return; } @@ -458,14 +458,14 @@ public class PhoneStatusBarPolicy private void updateVolumeZen() { int zen = mZenController.getZen(); - if (!usesModeIcons()) { + if (!ModesUiIcons.isEnabled()) { updateZenIcon(zen); } updateRingerAndAlarmIcons(zen); } private void updateZenIcon(int zen) { - if (usesModeIcons()) { + if (ModesUiIcons.isEnabled()) { Log.wtf(TAG, "updateZenIcon shouldn't be called if MODES_UI_ICONS is enabled"); return; } @@ -942,9 +942,4 @@ public class PhoneStatusBarPolicy mIconController.setIconVisibility(mSlotConnectedDisplay, visible); } - - private static boolean usesModeIcons() { - return android.app.Flags.modesApi() && android.app.Flags.modesUi() - && android.app.Flags.modesUiIcons(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/IconManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/IconManager.java index 91ead614ffa4..fd16c6090cb1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/IconManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/IconManager.java @@ -20,7 +20,6 @@ import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_BIND import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_ICON; import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_MOBILE_NEW; import static com.android.systemui.statusbar.phone.StatusBarIconHolder.TYPE_WIFI_NEW; -import static com.android.systemui.statusbar.phone.ui.StatusBarIconControllerImpl.usesModeIcons; import android.annotation.Nullable; import android.content.Context; @@ -31,6 +30,7 @@ import android.widget.LinearLayout; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIcon.Shape; import com.android.systemui.demomode.DemoModeCommandReceiver; +import com.android.systemui.modes.shared.ModesUiIcons; import com.android.systemui.statusbar.BaseStatusBarFrameLayout; import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.StatusIconDisplayable; @@ -233,7 +233,7 @@ public class IconManager implements DemoModeCommandReceiver { } protected LinearLayout.LayoutParams onCreateLayoutParams(Shape shape) { - int width = usesModeIcons() && shape == StatusBarIcon.Shape.FIXED_SPACE + int width = ModesUiIcons.isEnabled() && shape == StatusBarIcon.Shape.FIXED_SPACE ? mIconSize : ViewGroup.LayoutParams.WRAP_CONTENT; @@ -259,7 +259,7 @@ public class IconManager implements DemoModeCommandReceiver { /** Called once an icon has been set. */ public void onSetIcon(int viewIndex, StatusBarIcon icon) { StatusBarIconView view = (StatusBarIconView) mGroup.getChildAt(viewIndex); - if (usesModeIcons()) { + if (ModesUiIcons.isEnabled()) { ViewGroup.LayoutParams current = view.getLayoutParams(); ViewGroup.LayoutParams desired = onCreateLayoutParams(icon.shape); if (desired.width != current.width || desired.height != current.height) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java index 9b6d32bd179d..e66e8138102e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ui/StatusBarIconControllerImpl.java @@ -42,6 +42,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.demomode.DemoMode; import com.android.systemui.demomode.DemoModeController; import com.android.systemui.dump.DumpManager; +import com.android.systemui.modes.shared.ModesUiIcons; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusIconDisplayable; import com.android.systemui.statusbar.phone.StatusBarIconHolder; @@ -242,10 +243,7 @@ public class StatusBarIconControllerImpl implements Tunable, public void setResourceIcon(String slot, @Nullable String resPackage, @DrawableRes int iconResId, @Nullable Drawable preloadedIcon, CharSequence contentDescription, StatusBarIcon.Shape shape) { - if (!usesModeIcons()) { - Log.wtf("TAG", - "StatusBarIconController.setResourceIcon() should not be called without " - + "MODES_UI & MODES_UI_ICONS!"); + if (ModesUiIcons.isUnexpectedlyInLegacyMode()) { // Fall back to old implementation, although it will not load the icon if it's from a // different package. setIcon(slot, iconResId, contentDescription); @@ -580,9 +578,4 @@ public class StatusBarIconControllerImpl implements Tunable, return slot + EXTERNAL_SLOT_SUFFIX; } } - - static boolean usesModeIcons() { - return android.app.Flags.modesApi() && android.app.Flags.modesUi() - && android.app.Flags.modesUiIcons(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt index cf9f9f4a2a81..3cb7090ea6d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PolicyModule.kt @@ -21,6 +21,7 @@ import android.os.UserManager.DISALLOW_CONFIG_LOCATION import android.os.UserManager.DISALLOW_MICROPHONE_TOGGLE import android.os.UserManager.DISALLOW_SHARE_LOCATION import com.android.systemui.Flags +import com.android.systemui.modes.shared.ModesUi import com.android.systemui.qs.QsEventLogger import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.shared.model.TileCategory @@ -142,7 +143,7 @@ interface PolicyModule { dndTile: Provider<DndTile>, modesTile: Provider<ModesTile>, ): QSTileImpl<*> { - return if (android.app.Flags.modesUi()) modesTile.get() else dndTile.get() + return if (ModesUi.isEnabled) modesTile.get() else dndTile.get() } /** Inject flashlight config */ @@ -169,7 +170,7 @@ interface PolicyModule { factory: QSTileViewModelFactory.Static<FlashlightTileModel>, mapper: FlashlightMapper, stateInteractor: FlashlightTileDataInteractor, - userActionInteractor: FlashlightTileUserActionInteractor + userActionInteractor: FlashlightTileUserActionInteractor, ): QSTileViewModel = factory.create( TileSpec.create(FLASHLIGHT_TILE_SPEC), @@ -206,7 +207,7 @@ interface PolicyModule { factory: QSTileViewModelFactory.Static<LocationTileModel>, mapper: LocationTileMapper, stateInteractor: LocationTileDataInteractor, - userActionInteractor: LocationTileUserActionInteractor + userActionInteractor: LocationTileUserActionInteractor, ): QSTileViewModel = factory.create( TileSpec.create(LOCATION_TILE_SPEC), @@ -239,7 +240,7 @@ interface PolicyModule { factory: QSTileViewModelFactory.Static<AlarmTileModel>, mapper: AlarmTileMapper, stateInteractor: AlarmTileDataInteractor, - userActionInteractor: AlarmTileUserActionInteractor + userActionInteractor: AlarmTileUserActionInteractor, ): QSTileViewModel = factory.create( TileSpec.create(ALARM_TILE_SPEC), @@ -272,7 +273,7 @@ interface PolicyModule { factory: QSTileViewModelFactory.Static<UiModeNightTileModel>, mapper: UiModeNightTileMapper, stateInteractor: UiModeNightTileDataInteractor, - userActionInteractor: UiModeNightTileUserActionInteractor + userActionInteractor: UiModeNightTileUserActionInteractor, ): QSTileViewModel = factory.create( TileSpec.create(UIMODENIGHT_TILE_SPEC), @@ -306,7 +307,7 @@ interface PolicyModule { factory: QSTileViewModelFactory.Static<WorkModeTileModel>, mapper: WorkModeTileMapper, stateInteractor: WorkModeTileDataInteractor, - userActionInteractor: WorkModeTileUserActionInteractor + userActionInteractor: WorkModeTileUserActionInteractor, ): QSTileViewModel = factory.create( TileSpec.create(WORK_MODE_TILE_SPEC), @@ -406,7 +407,7 @@ interface PolicyModule { @IntoMap @StringKey(DND_TILE_SPEC) fun provideDndOrModesTileConfig(uiEventLogger: QsEventLogger): QSTileConfig = - if (android.app.Flags.modesUi()) { + if (ModesUi.isEnabled) { QSTileConfig( tileSpec = TileSpec.create(DND_TILE_SPEC), uiConfig = @@ -438,9 +439,9 @@ interface PolicyModule { factory: QSTileViewModelFactory.Static<ModesTileModel>, mapper: ModesTileMapper, stateInteractor: ModesTileDataInteractor, - userActionInteractor: ModesTileUserActionInteractor + userActionInteractor: ModesTileUserActionInteractor, ): QSTileViewModel = - if (android.app.Flags.modesUi() && Flags.qsNewTilesFuture()) + if (ModesUi.isEnabled && Flags.qsNewTilesFuture()) factory.create( TileSpec.create(DND_TILE_SPEC), userActionInteractor, |