From 0df3e12b96e9940f863a89f24ea0e0e5f034e0be Mon Sep 17 00:00:00 2001 From: Catherine Liang Date: Fri, 6 Oct 2023 19:22:08 +0000 Subject: Adjust quick affordance section controller to use base flags (2/3) The quick affordance section controller currently calls runBlocking when initializing to query flags and check if the feature is available. However, fragments and section controllers should be getting System UI flags using base flags, which queries and caches the flags when a flag is first needed. In addition, the runBlocking function is suspected to be the cause of the reported crash within the bug. In this CL, the quick affordance section controller, interactor & repository are adjusted to remove the flag querying, and the flag is read from base flags instead in the section controller. Bug: 296856318 Bug: 290849013 Test: adjusted unit tests for this change and made sure they still pass, verified manually that quick affordance section controller remains Change-Id: Ic469396f4a959a339efebec7cfbaaf37f8b404e3 --- .../KeyguardQuickAffordancePickerRepository.kt | 20 -------------------- .../KeyguardQuickAffordancePickerInteractor.kt | 5 ----- .../KeyguardQuickAffordanceSectionController.kt | 8 ++------ 3 files changed, 2 insertions(+), 31 deletions(-) (limited to 'src/com/android/customization/picker') diff --git a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt index b17af80d..10473a27 100644 --- a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt +++ b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt @@ -21,11 +21,8 @@ import com.android.customization.picker.quickaffordance.shared.model.KeyguardQui import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSelectionModel as SelectionModel import com.android.customization.picker.quickaffordance.shared.model.KeyguardQuickAffordancePickerSlotModel as SlotModel import com.android.systemui.shared.customization.data.content.CustomizationProviderClient as Client -import com.android.systemui.shared.customization.data.content.CustomizationProviderContract as Contract -import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -import kotlinx.coroutines.withContext /** * Abstracts access to application state related to functionality for selecting, picking, or setting @@ -33,12 +30,7 @@ import kotlinx.coroutines.withContext */ class KeyguardQuickAffordancePickerRepository( private val client: Client, - private val backgroundDispatcher: CoroutineDispatcher, ) { - /** Whether the feature is enabled. */ - val isFeatureEnabled: Flow = - client.observeFlags().map { flags -> flags.isFeatureEnabled() } - /** List of slots available on the device. */ val slots: Flow> = client.observeSlots().map { slots -> slots.map { slot -> slot.toModel() } } @@ -55,18 +47,6 @@ class KeyguardQuickAffordancePickerRepository( selections.map { selection -> selection.toModel() } } - suspend fun isFeatureEnabled(): Boolean { - return withContext(backgroundDispatcher) { client.queryFlags().isFeatureEnabled() } - } - - private fun List.isFeatureEnabled(): Boolean { - return find { flag -> - flag.name == - Contract.FlagsTable.FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED - } - ?.value == true - } - private fun Client.Slot.toModel(): SlotModel { return SlotModel( id = id, diff --git a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt index f154de65..60801943 100644 --- a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt +++ b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordancePickerInteractor.kt @@ -78,9 +78,4 @@ class KeyguardQuickAffordancePickerInteractor( ): Drawable { return client.getAffordanceIcon(iconResourceId) } - - /** Returns `true` if the feature is enabled; `false` otherwise. */ - suspend fun isFeatureEnabled(): Boolean { - return repository.isFeatureEnabled() - } } diff --git a/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt b/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt index e0beeff0..0c7b250d 100644 --- a/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt +++ b/src/com/android/customization/picker/quickaffordance/ui/section/KeyguardQuickAffordanceSectionController.kt @@ -20,27 +20,23 @@ package com.android.customization.picker.quickaffordance.ui.section import android.content.Context import android.view.LayoutInflater import androidx.lifecycle.LifecycleOwner -import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor import com.android.customization.picker.quickaffordance.ui.binder.KeyguardQuickAffordanceSectionViewBinder import com.android.customization.picker.quickaffordance.ui.fragment.KeyguardQuickAffordancePickerFragment import com.android.customization.picker.quickaffordance.ui.view.KeyguardQuickAffordanceSectionView import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel import com.android.wallpaper.R +import com.android.wallpaper.config.BaseFlags import com.android.wallpaper.model.CustomizationSectionController import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController as NavigationController -import kotlinx.coroutines.runBlocking class KeyguardQuickAffordanceSectionController( private val navigationController: NavigationController, - private val interactor: KeyguardQuickAffordancePickerInteractor, private val viewModel: KeyguardQuickAffordancePickerViewModel, private val lifecycleOwner: LifecycleOwner, ) : CustomizationSectionController { - private val isFeatureEnabled: Boolean = runBlocking { interactor.isFeatureEnabled() } - override fun isAvailable(context: Context): Boolean { - return isFeatureEnabled + return BaseFlags.get().isKeyguardQuickAffordanceEnabled(context) } override fun createView(context: Context): KeyguardQuickAffordanceSectionView { -- cgit v1.2.3