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

Commit 03dee1c6 authored by Nicolò Mazzucato's avatar Nicolò Mazzucato
Browse files

Allow FgsManager to open dialogs on external displays

This uses the context from  ShadeDialogContextRepository when opening a FgsManager dialog (from QS footer).

Bug: 362719719
Bug: 383294128
Test: FgsManagerControllerTest
Flag: com.android.systemui.shade_window_goes_around
Change-Id: I5562d8ddbc171a590f09cf360b91942b1d1fdbba
parent 0bd1a9fe
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.domain.interactor.FakeShadeDialogContextInteractor;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.util.DeviceConfigProxyFake;
import com.android.systemui.util.concurrency.FakeExecutor;
@@ -84,6 +85,7 @@ public class FgsManagerControllerTest extends SysuiTestCase {
    FakeExecutor mMainExecutor;
    FakeExecutor mBackgroundExecutor;
    DeviceConfigProxyFake mDeviceConfigProxyFake;
    FakeShadeDialogContextInteractor mFakeShadeDialogContextInteractor;

    @Mock
    IActivityManager mIActivityManager;
@@ -118,6 +120,7 @@ public class FgsManagerControllerTest extends SysuiTestCase {
    public void setUp() throws RemoteException {
        MockitoAnnotations.initMocks(this);

        mFakeShadeDialogContextInteractor = new FakeShadeDialogContextInteractor(mContext);
        mDeviceConfigProxyFake = new DeviceConfigProxyFake();
        mSystemClock = new FakeSystemClock();
        mMainExecutor = new FakeExecutor(mSystemClock);
@@ -346,7 +349,6 @@ public class FgsManagerControllerTest extends SysuiTestCase {
                SystemUiDeviceConfigFlags.TASK_MANAGER_SHOW_USER_VISIBLE_JOBS,
                "true", false);
        FgsManagerController fmc = new FgsManagerControllerImpl(
                mContext,
                mContext.getResources(),
                mMainExecutor,
                mBackgroundExecutor,
@@ -359,7 +361,8 @@ public class FgsManagerControllerTest extends SysuiTestCase {
                mDialogTransitionAnimator,
                mBroadcastDispatcher,
                mDumpManager,
                mSystemUIDialogFactory
                mSystemUIDialogFactory,
                mFakeShadeDialogContextInteractor
        );
        fmc.init();
        Assert.assertTrue(fmc.getIncludesUserVisibleJobs());
@@ -374,7 +377,6 @@ public class FgsManagerControllerTest extends SysuiTestCase {
                SystemUiDeviceConfigFlags.TASK_MANAGER_SHOW_USER_VISIBLE_JOBS,
                "false", false);
        fmc = new FgsManagerControllerImpl(
                mContext,
                mContext.getResources(),
                mMainExecutor,
                mBackgroundExecutor,
@@ -387,7 +389,8 @@ public class FgsManagerControllerTest extends SysuiTestCase {
                mDialogTransitionAnimator,
                mBroadcastDispatcher,
                mDumpManager,
                mSystemUIDialogFactory
                mSystemUIDialogFactory,
                mFakeShadeDialogContextInteractor
        );
        fmc.init();
        Assert.assertFalse(fmc.getIncludesUserVisibleJobs());
@@ -487,7 +490,6 @@ public class FgsManagerControllerTest extends SysuiTestCase {
                ArgumentCaptor.forClass(BroadcastReceiver.class);

        FgsManagerController result = new FgsManagerControllerImpl(
                mContext,
                mContext.getResources(),
                mMainExecutor,
                mBackgroundExecutor,
@@ -500,7 +502,8 @@ public class FgsManagerControllerTest extends SysuiTestCase {
                mDialogTransitionAnimator,
                mBroadcastDispatcher,
                mDumpManager,
                mSystemUIDialogFactory
                mSystemUIDialogFactory,
                mFakeShadeDialogContextInteractor
        );
        result.init();

+3 −2
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.res.R
import com.android.systemui.settings.UserTracker
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeDialogContextInteractor
import com.android.systemui.shared.system.SysUiStatsLog
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.util.DeviceConfigProxy
@@ -141,7 +142,6 @@ interface FgsManagerController {
class FgsManagerControllerImpl
@Inject
constructor(
    @ShadeDisplayAware private val context: Context,
    @ShadeDisplayAware private val resources: Resources,
    @Main private val mainExecutor: Executor,
    @Background private val backgroundExecutor: Executor,
@@ -155,6 +155,7 @@ constructor(
    private val broadcastDispatcher: BroadcastDispatcher,
    private val dumpManager: DumpManager,
    private val systemUIDialogFactory: SystemUIDialog.Factory,
    private val shadeDialogContextRepository: ShadeDialogContextInteractor,
) : Dumpable, FgsManagerController {

    companion object {
@@ -388,7 +389,7 @@ constructor(
    override fun showDialog(expandable: Expandable?) {
        synchronized(lock) {
            if (dialog == null) {
                val dialog = systemUIDialogFactory.create(context)
                val dialog = systemUIDialogFactory.create(shadeDialogContextRepository.context)
                dialog.setTitle(R.string.fgs_manager_dialog_title)
                dialog.setMessage(R.string.fgs_manager_dialog_message)