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

Commit 29942ff3 authored by Nicolò Mazzucato's avatar Nicolò Mazzucato
Browse files

Allow DataSaverTile to open dialogs on external displays

This uses the context from  ShadeDialogContextRepository when opening a DataSaverTile dialog

Bug: 362719719
Bug: 383294128
Test: DataSaverTileTest
Flag: com.android.systemui.shade_window_goes_around
Change-Id: I8beb6065733140ee809fab39c7894a8e83a9c939
parent 03dee1c6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.qs.tileimpl.QSTileImpl.DrawableIconWithRes
import com.android.systemui.res.R
import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.policy.DataSaverController
import com.android.systemui.util.mockito.whenever
@@ -96,6 +97,7 @@ class DataSaverTileTest(flags: FlagsParameterization) : SysuiTestCase() {
                dataSaverController,
                mDialogTransitionAnimator,
                systemUIDialogFactory,
                FakeShadeDialogContextInteractor(mContext),
            )
    }

+7 −2
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.qs.QsEventLogger;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.DataSaverController;

@@ -56,6 +57,7 @@ public class DataSaverTile extends QSTileImpl<BooleanState> implements
    private final DataSaverController mDataSaverController;
    private final DialogTransitionAnimator mDialogTransitionAnimator;
    private final SystemUIDialog.Factory mSystemUIDialogFactory;
    private final ShadeDialogContextInteractor mShadeDialogContextInteractor;

    @Inject
    public DataSaverTile(
@@ -70,13 +72,15 @@ public class DataSaverTile extends QSTileImpl<BooleanState> implements
            QSLogger qsLogger,
            DataSaverController dataSaverController,
            DialogTransitionAnimator dialogTransitionAnimator,
            SystemUIDialog.Factory systemUIDialogFactory
            SystemUIDialog.Factory systemUIDialogFactory,
            ShadeDialogContextInteractor shadeDialogContextInteractor
    ) {
        super(host, uiEventLogger, backgroundLooper, mainHandler, falsingManager, metricsLogger,
                statusBarStateController, activityStarter, qsLogger);
        mDataSaverController = dataSaverController;
        mDialogTransitionAnimator = dialogTransitionAnimator;
        mSystemUIDialogFactory = systemUIDialogFactory;
        mShadeDialogContextInteractor = shadeDialogContextInteractor;
        mDataSaverController.observe(getLifecycle(), this);
    }

@@ -102,7 +106,8 @@ public class DataSaverTile extends QSTileImpl<BooleanState> implements
        // Show a dialog to confirm first. Dialogs shown by the DialogTransitionAnimator must be
        // created and shown on the main thread, so we post it to the UI handler.
        mUiHandler.post(() -> {
            SystemUIDialog dialog = mSystemUIDialogFactory.create(mContext);
            SystemUIDialog dialog = mSystemUIDialogFactory.create(
                    mShadeDialogContextInteractor.getContext());
            dialog.setTitle(com.android.internal.R.string.data_saver_enable_title);
            dialog.setMessage(com.android.internal.R.string.data_saver_description);
            dialog.setPositiveButton(com.android.internal.R.string.data_saver_enable_button,