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

Commit e9f8872b authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "Add a central QSPipelineFlagsRepository" into main

parents 3f1d5b58 1963321e
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -22,13 +22,12 @@ import androidx.annotation.GuardedBy
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.plugins.qs.QSTileView
import com.android.systemui.qs.external.TileServiceRequestController
import com.android.systemui.qs.pipeline.data.repository.TileSpecRepository.Companion.POSITION_AT_END
import com.android.systemui.qs.pipeline.domain.interactor.CurrentTilesInteractor
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository
import com.android.systemui.qs.pipeline.shared.TileSpec
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
@@ -37,10 +36,11 @@ import kotlinx.coroutines.launch

/**
 * Adapter to determine what real class to use for classes that depend on [QSHost].
 * * When [Flags.QS_PIPELINE_NEW_HOST] is off, all calls will be routed to [QSTileHost].
 * * When [Flags.QS_PIPELINE_NEW_HOST] is on, calls regarding the current set of tiles will be
 *   routed to [CurrentTilesInteractor]. Other calls (like [createTileView]) will still be routed to
 * * When [QSPipelineFlagsRepository.pipelineHostEnabled] is false, all calls will be routed to
 *   [QSTileHost].
 * * When [QSPipelineFlagsRepository.pipelineHostEnabled] is true, calls regarding the current set
 *   of tiles will be routed to [CurrentTilesInteractor]. Other calls (like [createTileView]) will
 *   still be routed to [QSTileHost].
 *
 * This routing also includes dumps.
 */
@@ -53,7 +53,7 @@ constructor(
    private val context: Context,
    private val tileServiceRequestControllerBuilder: TileServiceRequestController.Builder,
    @Application private val scope: CoroutineScope,
    private val featureFlags: FeatureFlags,
    flags: QSPipelineFlagsRepository,
    dumpManager: DumpManager,
) : QSHost {

@@ -61,7 +61,7 @@ constructor(
        private const val TAG = "QSTileHost"
    }

    private val useNewHost = featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)
    private val useNewHost = flags.pipelineHostEnabled

    @GuardedBy("callbacksMap") private val callbacksMap = mutableMapOf<QSHost.Callback, Job>()

+5 −6
Original line number Diff line number Diff line
@@ -35,8 +35,6 @@ import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.nano.SystemUIProtoDump;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.PluginManager;
import com.android.systemui.plugins.qs.QSFactory;
@@ -50,6 +48,7 @@ import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.nano.QsTileState;
import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedRepository;
import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor;
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository;
import com.android.systemui.settings.UserFileManager;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.ShadeController;
@@ -119,7 +118,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P

    private TileLifecycleManager.Factory mTileLifeCycleManagerFactory;

    private final FeatureFlags mFeatureFlags;
    private final QSPipelineFlagsRepository mFeatureFlags;

    @Inject
    public QSTileHost(Context context,
@@ -135,7 +134,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P
            CustomTileStatePersister customTileStatePersister,
            TileLifecycleManager.Factory tileLifecycleManagerFactory,
            UserFileManager userFileManager,
            FeatureFlags featureFlags
            QSPipelineFlagsRepository featureFlags
    ) {
        mContext = context;
        mUserContext = context;
@@ -162,7 +161,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P
            // finishes before creating any tiles.
            tunerService.addTunable(this, TILES_SETTING);
            // AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
            if (!mFeatureFlags.isEnabled(Flags.QS_PIPELINE_AUTO_ADD)) {
            if (!mFeatureFlags.getPipelineAutoAddEnabled()) {
                mAutoTiles = autoTiles.get();
            }
        });
@@ -283,7 +282,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P
            }
        }
        // Do not process tiles if the flag is enabled.
        if (mFeatureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)) {
        if (mFeatureFlags.getPipelineHostEnabled()) {
            return;
        }
        if (newValue == null && UserManager.isDeviceInDemoMode(mContext)) {
+5 −6
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.systemui.qs.dagger

import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QSHostAdapter
import com.android.systemui.qs.QSTileHost
@@ -27,6 +25,7 @@ import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedRepositor
import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedSharedPrefsRepository
import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor
import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractorImpl
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository
import dagger.Binds
import dagger.Module
import dagger.Provides
@@ -45,11 +44,11 @@ interface QSHostModule {
        @Provides
        @JvmStatic
        fun providePanelInteractor(
            featureFlags: FeatureFlags,
            featureFlags: QSPipelineFlagsRepository,
            qsHost: QSTileHost,
            panelInteractorImpl: PanelInteractorImpl
        ): PanelInteractor {
            return if (featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)) {
            return if (featureFlags.pipelineHostEnabled) {
                panelInteractorImpl
            } else {
                qsHost
@@ -59,11 +58,11 @@ interface QSHostModule {
        @Provides
        @JvmStatic
        fun provideCustomTileAddedRepository(
            featureFlags: FeatureFlags,
            featureFlags: QSPipelineFlagsRepository,
            qsHost: QSTileHost,
            customTileAddedRepository: CustomTileAddedSharedPrefsRepository
        ): CustomTileAddedRepository {
            return if (featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)) {
            return if (featureFlags.pipelineHostEnabled) {
                customTileAddedRepository
            } else {
                qsHost
+3 −4
Original line number Diff line number Diff line
@@ -27,8 +27,6 @@ import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.nano.SystemUIProtoDump
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.plugins.qs.QSFactory
import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.qs.external.CustomTile
@@ -39,6 +37,7 @@ import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedRepositor
import com.android.systemui.qs.pipeline.data.repository.InstalledTilesComponentRepository
import com.android.systemui.qs.pipeline.data.repository.TileSpecRepository
import com.android.systemui.qs.pipeline.domain.model.TileModel
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.qs.toProto
@@ -139,7 +138,7 @@ constructor(
    @Background private val backgroundDispatcher: CoroutineDispatcher,
    @Application private val scope: CoroutineScope,
    private val logger: QSPipelineLogger,
    featureFlags: FeatureFlags,
    featureFlags: QSPipelineFlagsRepository,
) : CurrentTilesInteractor {

    private val _currentSpecsAndTiles: MutableStateFlow<List<TileModel>> =
@@ -171,7 +170,7 @@ constructor(
        }

    init {
        if (featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST)) {
        if (featureFlags.pipelineHostEnabled) {
            startTileCollection()
        }
    }
+3 −7
Original line number Diff line number Diff line
@@ -18,10 +18,9 @@ package com.android.systemui.qs.pipeline.domain.startable

import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.qs.pipeline.domain.interactor.AutoAddInteractor
import com.android.systemui.qs.pipeline.domain.interactor.CurrentTilesInteractor
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository
import javax.inject.Inject

@SysUISingleton
@@ -30,14 +29,11 @@ class QSPipelineCoreStartable
constructor(
    private val currentTilesInteractor: CurrentTilesInteractor,
    private val autoAddInteractor: AutoAddInteractor,
    private val featureFlags: FeatureFlags,
    private val featureFlags: QSPipelineFlagsRepository,
) : CoreStartable {

    override fun start() {
        if (
            featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_HOST) &&
                featureFlags.isEnabled(Flags.QS_PIPELINE_AUTO_ADD)
        ) {
        if (featureFlags.pipelineAutoAddEnabled) {
            autoAddInteractor.init(currentTilesInteractor)
        }
    }
Loading