diff options
9 files changed, 74 insertions, 70 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/FgsManagerControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/FgsManagerControllerTest.java index 0356422bda04..004aeb069a14 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/FgsManagerControllerTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/FgsManagerControllerTest.java @@ -122,7 +122,7 @@ public class FgsManagerControllerTest extends SysuiTestCase { mSystemClock = new FakeSystemClock(); mMainExecutor = new FakeExecutor(mSystemClock); mBackgroundExecutor = new FakeExecutor(mSystemClock); - when(mSystemUIDialogFactory.create()).thenReturn(mSystemUIDialog); + when(mSystemUIDialogFactory.create(eq(mContext))).thenReturn(mSystemUIDialog); mUserProfiles = new ArrayList<>(); Mockito.doReturn(mUserProfiles).when(mUserTracker).getUserProfiles(); @@ -346,6 +346,7 @@ public class FgsManagerControllerTest extends SysuiTestCase { SystemUiDeviceConfigFlags.TASK_MANAGER_SHOW_USER_VISIBLE_JOBS, "true", false); FgsManagerController fmc = new FgsManagerControllerImpl( + mContext, mContext.getResources(), mMainExecutor, mBackgroundExecutor, @@ -373,6 +374,7 @@ public class FgsManagerControllerTest extends SysuiTestCase { SystemUiDeviceConfigFlags.TASK_MANAGER_SHOW_USER_VISIBLE_JOBS, "false", false); fmc = new FgsManagerControllerImpl( + mContext, mContext.getResources(), mMainExecutor, mBackgroundExecutor, @@ -485,6 +487,7 @@ public class FgsManagerControllerTest extends SysuiTestCase { ArgumentCaptor.forClass(BroadcastReceiver.class); FgsManagerController result = new FgsManagerControllerImpl( + mContext, mContext.getResources(), mMainExecutor, mBackgroundExecutor, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt index 27fd2818ea88..fbbdc46a7873 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/DataSaverTileTest.kt @@ -46,6 +46,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.MockitoAnnotations +import org.mockito.kotlin.eq import platform.test.runner.parameterized.ParameterizedAndroidJunit4 import platform.test.runner.parameterized.Parameters @@ -79,7 +80,7 @@ class DataSaverTileTest(flags: FlagsParameterization) : SysuiTestCase() { testableLooper = TestableLooper.get(this) whenever(mHost.context).thenReturn(mContext) - whenever(systemUIDialogFactory.create()).thenReturn(systemUIDialog) + whenever(systemUIDialogFactory.create(eq(mContext))).thenReturn(systemUIDialog) tile = DataSaverTile( diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt index ad6c64b32ddc..039a1dc05c79 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/user/UserSwitchDialogControllerTest.kt @@ -32,7 +32,6 @@ import com.android.systemui.qs.PseudoGridView import com.android.systemui.qs.QSUserSwitcherEvent import com.android.systemui.qs.tiles.UserDetailView import com.android.systemui.statusbar.phone.SystemUIDialog -import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock @@ -51,31 +50,22 @@ import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations +import org.mockito.kotlin.any @SmallTest @RunWith(AndroidJUnit4::class) class UserSwitchDialogControllerTest : SysuiTestCase() { - @Mock - private lateinit var dialogFactory: SystemUIDialog.Factory - @Mock - private lateinit var dialog: SystemUIDialog - @Mock - private lateinit var falsingManager: FalsingManager - @Mock - private lateinit var activityStarter: ActivityStarter - @Mock - private lateinit var userDetailViewAdapter: UserDetailView.Adapter - @Mock - private lateinit var launchExpandable: Expandable - @Mock - private lateinit var neutralButton: Button - @Mock - private lateinit var mDialogTransitionAnimator: DialogTransitionAnimator - @Mock - private lateinit var uiEventLogger: UiEventLogger - @Captor - private lateinit var clickCaptor: ArgumentCaptor<DialogInterface.OnClickListener> + @Mock private lateinit var dialogFactory: SystemUIDialog.Factory + @Mock private lateinit var dialog: SystemUIDialog + @Mock private lateinit var falsingManager: FalsingManager + @Mock private lateinit var activityStarter: ActivityStarter + @Mock private lateinit var userDetailViewAdapter: UserDetailView.Adapter + @Mock private lateinit var launchExpandable: Expandable + @Mock private lateinit var neutralButton: Button + @Mock private lateinit var mDialogTransitionAnimator: DialogTransitionAnimator + @Mock private lateinit var uiEventLogger: UiEventLogger + @Captor private lateinit var clickCaptor: ArgumentCaptor<DialogInterface.OnClickListener> private lateinit var controller: UserSwitchDialogController @@ -84,16 +74,17 @@ class UserSwitchDialogControllerTest : SysuiTestCase() { MockitoAnnotations.initMocks(this) whenever(dialog.context).thenReturn(mContext) - whenever(dialogFactory.create()).thenReturn(dialog) - - controller = UserSwitchDialogController( - { userDetailViewAdapter }, - activityStarter, - falsingManager, - mDialogTransitionAnimator, - uiEventLogger, - dialogFactory - ) + whenever(dialogFactory.create(eq(mContext))).thenReturn(dialog) + + controller = + UserSwitchDialogController( + { userDetailViewAdapter }, + activityStarter, + falsingManager, + mDialogTransitionAnimator, + uiEventLogger, + dialogFactory, + ) } @Test @@ -150,7 +141,7 @@ class UserSwitchDialogControllerTest : SysuiTestCase() { .postStartActivityDismissingKeyguard( argThat(IntentMatcher(Settings.ACTION_USER_SETTINGS)), eq(0), - eq(null) + eq(null), ) verify(uiEventLogger).log(QSUserSwitcherEvent.QS_USER_MORE_SETTINGS) } diff --git a/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt b/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt index 5c9baa000d0b..91a3120ec770 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt @@ -141,6 +141,7 @@ 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, @@ -387,7 +388,7 @@ constructor( override fun showDialog(expandable: Expandable?) { synchronized(lock) { if (dialog == null) { - val dialog = systemUIDialogFactory.create() + val dialog = systemUIDialogFactory.create(context) dialog.setTitle(R.string.fgs_manager_dialog_title) dialog.setMessage(R.string.fgs_manager_dialog_message) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java index deeef550b33f..42a0cb1004f4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java @@ -102,7 +102,7 @@ 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(); + SystemUIDialog dialog = mSystemUIDialogFactory.create(mContext); 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, diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java index 378d553065e0..70c2a2a0d55a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegate.java @@ -104,6 +104,7 @@ public class InternetDialogDelegate implements private final Handler mHandler; private final Executor mBackgroundExecutor; private final DialogTransitionAnimator mDialogTransitionAnimator; + private final Context mContext; private final boolean mAboveStatusBar; private final SystemUIDialog.Factory mSystemUIDialogFactory; @@ -204,6 +205,7 @@ public class InternetDialogDelegate implements @Background Executor executor, KeyguardStateController keyguardStateController, SystemUIDialog.Factory systemUIDialogFactory) { + mContext = context; mAboveStatusBar = aboveStatusBar; mSystemUIDialogFactory = systemUIDialogFactory; if (DEBUG) { @@ -228,7 +230,7 @@ public class InternetDialogDelegate implements @Override public SystemUIDialog createDialog() { - SystemUIDialog dialog = mSystemUIDialogFactory.create(this); + SystemUIDialog dialog = mSystemUIDialogFactory.create(this, mContext); if (!mAboveStatusBar) { dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt index 671943c5baff..d0f258052f04 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/saver/domain/DataSaverDialogDelegate.kt @@ -20,18 +20,19 @@ import android.content.Context import android.content.DialogInterface import android.content.SharedPreferences import android.os.Bundle +import com.android.app.tracing.coroutines.launchTraced as launch import com.android.internal.R import com.android.systemui.coroutines.newTracingContext import com.android.systemui.qs.tiles.impl.saver.domain.interactor.DataSaverTileUserActionInteractor +import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.statusbar.policy.DataSaverController import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope -import com.android.app.tracing.coroutines.launchTraced as launch class DataSaverDialogDelegate( private val sysuiDialogFactory: SystemUIDialog.Factory, - private val context: Context, + @ShadeDisplayAware private val context: Context, private val backgroundContext: CoroutineContext, private val dataSaverController: DataSaverController, private val sharedPreferences: SharedPreferences, diff --git a/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt b/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt index 95e7f56360c2..8c54ab40c680 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/user/UserSwitchDialogController.kt @@ -25,7 +25,6 @@ import android.provider.Settings import android.view.LayoutInflater import com.android.internal.jank.InteractionJankMonitor import com.android.internal.logging.UiEventLogger -import com.android.systemui.res.R import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.animation.Expandable @@ -34,22 +33,23 @@ import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.FalsingManager import com.android.systemui.qs.QSUserSwitcherEvent import com.android.systemui.qs.tiles.UserDetailView +import com.android.systemui.res.R import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.user.ui.dialog.DialogShowerImpl import javax.inject.Inject import javax.inject.Provider -/** - * Controller for [UserDialog]. - */ +/** Controller for [UserDialog]. */ @SysUISingleton -class UserSwitchDialogController @Inject constructor( +class UserSwitchDialogController +@Inject +constructor( private val userDetailViewAdapterProvider: Provider<UserDetailView.Adapter>, private val activityStarter: ActivityStarter, private val falsingManager: FalsingManager, private val dialogTransitionAnimator: DialogTransitionAnimator, private val uiEventLogger: UiEventLogger, - private val dialogFactory: SystemUIDialog.Factory + private val dialogFactory: SystemUIDialog.Factory, ) { companion object { @@ -64,7 +64,7 @@ class UserSwitchDialogController @Inject constructor( * [userDetailViewAdapterProvider] and show it as launched from [expandable]. */ fun showDialog(context: Context, expandable: Expandable) { - with(dialogFactory.create()) { + with(dialogFactory.create(context)) { setShowForAllUsers(true) setCanceledOnTouchOutside(true) @@ -72,24 +72,31 @@ class UserSwitchDialogController @Inject constructor( setPositiveButton(R.string.quick_settings_done) { _, _ -> uiEventLogger.log(QSUserSwitcherEvent.QS_USER_DETAIL_CLOSE) } - setNeutralButton(R.string.quick_settings_more_user_settings, { _, _ -> - if (!falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { - uiEventLogger.log(QSUserSwitcherEvent.QS_USER_MORE_SETTINGS) - val controller = dialogTransitionAnimator.createActivityTransitionController( - getButton(BUTTON_NEUTRAL) - ) + setNeutralButton( + R.string.quick_settings_more_user_settings, + { _, _ -> + if (!falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + uiEventLogger.log(QSUserSwitcherEvent.QS_USER_MORE_SETTINGS) + val controller = + dialogTransitionAnimator.createActivityTransitionController( + getButton(BUTTON_NEUTRAL) + ) - if (controller == null) { - dismiss() - } + if (controller == null) { + dismiss() + } - activityStarter.postStartActivityDismissingKeyguard( - USER_SETTINGS_INTENT, 0, controller - ) - } - }, false /* dismissOnClick */) - val gridFrame = LayoutInflater.from(this.context) - .inflate(R.layout.qs_user_dialog_content, null) + activityStarter.postStartActivityDismissingKeyguard( + USER_SETTINGS_INTENT, + 0, + controller, + ) + } + }, + false, /* dismissOnClick */ + ) + val gridFrame = + LayoutInflater.from(this.context).inflate(R.layout.qs_user_dialog_content, null) setView(gridFrame) val adapter = userDetailViewAdapterProvider.get() @@ -101,10 +108,7 @@ class UserSwitchDialogController @Inject constructor( DialogCuj(InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN, INTERACTION_JANK_TAG) ) if (controller != null) { - dialogTransitionAnimator.show( - this, - controller, - ) + dialogTransitionAnimator.show(this, controller) } else { show() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java index 7b24233d8603..300c9b843d1c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateTest.java @@ -6,6 +6,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -23,8 +24,8 @@ import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; -import androidx.test.annotation.UiThreadTest; import androidx.recyclerview.widget.RecyclerView; +import androidx.test.annotation.UiThreadTest; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; @@ -40,8 +41,6 @@ import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; import com.android.wifitrackerlib.WifiEntry; -import kotlinx.coroutines.CoroutineScope; - import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -52,6 +51,8 @@ import org.mockito.MockitoSession; import java.util.List; +import kotlinx.coroutines.CoroutineScope; + @SmallTest @RunWith(AndroidJUnit4.class) @TestableLooper.RunWithLooper(setAsMainLooper = true) @@ -127,7 +128,7 @@ public class InternetDialogDelegateTest extends SysuiTestCase { .spyStatic(WifiEnterpriseRestrictionUtils.class) .startMocking(); when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true); - when(mSystemUIDialogFactory.create(any(SystemUIDialog.Delegate.class))) + when(mSystemUIDialogFactory.create(any(SystemUIDialog.Delegate.class), eq(mContext))) .thenReturn(mSystemUIDialog); when(mSystemUIDialog.getContext()).thenReturn(mContext); when(mSystemUIDialog.getWindow()).thenReturn(mWindow); |