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

Commit 1a3ca3ca authored by Jiaming Cheng's avatar Jiaming Cheng
Browse files

[QSDetailedView] Make sure tile details dialog is not blocked

in single shade

Later we will support details view with single shade. Before that,
clicking on the feature tiles will show the dialog as before.

Bug:b/393617021
Flag: com.android.systemui.qs_tile_detailed_view
Change-Id: I5dfd21c619df40ed92f66bc37463aa87b9c8e0c6
parent d0af9c1d
Loading
Loading
Loading
Loading
+0 −44
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@
package com.android.systemui.qs.tiles

import android.os.Handler
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.FlagsParameterization
import android.platform.test.flag.junit.FlagsParameterization.allCombinationsOf
import android.service.quicksettings.Tile
@@ -26,23 +24,19 @@ import android.testing.TestableLooper
import android.testing.TestableLooper.RunWithLooper
import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
import com.android.systemui.SysuiTestCase
import com.android.systemui.classifier.FalsingManagerFake
import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.flags.QSComposeFragment
import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel
import com.android.systemui.qs.tiles.dialog.InternetDialogManager
import com.android.systemui.qs.tiles.dialog.WifiStateWorker
import com.android.systemui.res.R
import com.android.systemui.statusbar.connectivity.AccessPointController
import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.android.systemui.statusbar.pipeline.ethernet.domain.EthernetInteractor
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor
@@ -271,44 +265,6 @@ class InternetTileNewImplTest(flags: FlagsParameterization) : SysuiTestCase() {
        verify(wifiStateWorker, times(1)).isWifiEnabled = eq(true)
    }

    @Test
    @DisableFlags(QsDetailedView.FLAG_NAME)
    fun click_withQsDetailedViewDisabled() {
        underTest.click(null)
        looper.processAllMessages()

        verify(dialogManager, times(1))
            .create(
                aboveStatusBar = true,
                accessPointController.canConfigMobileData(),
                accessPointController.canConfigWifi(),
                null,
            )
    }

    @Test
    @EnableFlags(
        value =
            [
                QsDetailedView.FLAG_NAME,
                FLAG_SCENE_CONTAINER,
                KeyguardWmStateRefactor.FLAG_NAME,
                NotificationThrottleHun.FLAG_NAME,
            ]
    )
    fun click_withQsDetailedViewEnabled() {
        underTest.click(null)
        looper.processAllMessages()

        verify(dialogManager, times(0))
            .create(
                aboveStatusBar = true,
                accessPointController.canConfigMobileData(),
                accessPointController.canConfigWifi(),
                null,
            )
    }

    companion object {
        const val WIFI_SSID = "test ssid"
        val ACTIVE_WIFI =
+7 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.android.internal.logging.UiEventLogger
import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.res.R
import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.statusbar.phone.SystemUIDialog
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@@ -39,6 +40,7 @@ internal constructor(
    private val systemuiDialogFactory: SystemUIDialog.Factory,
    private val shadeDialogContextInteractor: ShadeDialogContextInteractor,
    private val bluetoothDetailsContentManagerFactory: BluetoothDetailsContentManager.Factory,
    private val shadeModeInteractor: ShadeModeInteractor,
) : SystemUIDialog.Delegate {

    lateinit var contentManager: BluetoothDetailsContentManager
@@ -54,8 +56,11 @@ internal constructor(
    }

    override fun createDialog(): SystemUIDialog {
        // TODO (b/393628355): remove this after the details view is supported for single shade.
        if (shadeModeInteractor.isDualShade) {
            // If `QsDetailedView` is enabled, it should show the details view.
            QsDetailedView.assertInLegacyMode()
        }

        return systemuiDialogFactory.create(this, shadeDialogContextInteractor.context)
    }
+0 −4
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import com.android.systemui.plugins.qs.TileDetailsViewModel
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel
@@ -94,9 +93,6 @@ constructor(
    }

    override fun handleClick(expandable: Expandable?) {
        if (QsDetailedView.isEnabled) {
            return
        }
        mainHandler.post {
            internetDialogManager.create(
                aboveStatusBar = true,
+8 −3
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import com.android.systemui.qs.flags.QsDetailedView;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
import com.android.systemui.shade.domain.interactor.ShadeModeInteractor;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.wifitrackerlib.WifiEntry;
@@ -207,9 +208,13 @@ public class InternetDialogDelegateLegacy implements
            @Background Executor executor,
            KeyguardStateController keyguardStateController,
            SystemUIDialog.Factory systemUIDialogFactory,
            ShadeDialogContextInteractor shadeDialogContextInteractor) {
            ShadeDialogContextInteractor shadeDialogContextInteractor,
            ShadeModeInteractor shadeModeInteractor) {
        // TODO (b/393628355): remove this after the details view is supported for single shade.
        if (shadeModeInteractor.isDualShade()){
            // If `QsDetailedView` is enabled, it should show the details view.
            QsDetailedView.assertInLegacyMode();
        }

        mAboveStatusBar = aboveStatusBar;
        mSystemUIDialogFactory = systemUIDialogFactory;
+6 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.systemui.coroutines.newTracingContext
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.qs.flags.QsDetailedView
import com.android.systemui.shade.domain.interactor.ShadeModeInteractor
import com.android.systemui.statusbar.phone.SystemUIDialog
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
@@ -41,6 +42,7 @@ constructor(
    private val dialogTransitionAnimator: DialogTransitionAnimator,
    private val dialogFactory: InternetDialogDelegateLegacy.Factory,
    @Background private val bgDispatcher: CoroutineDispatcher,
    private val shadeModeInteractor: ShadeModeInteractor,
) {
    private lateinit var coroutineScope: CoroutineScope

@@ -59,8 +61,10 @@ constructor(
        canConfigWifi: Boolean,
        expandable: Expandable?,
    ) {
        if (shadeModeInteractor.isDualShade) {
            // If `QsDetailedView` is enabled, it should show the details view.
            QsDetailedView.assertInLegacyMode()
        }
        if (dialog != null) {
            if (DEBUG) {
                Log.d(TAG, "InternetDialog is showing, do not create it twice.")
Loading