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

Commit 30acb76f authored by Shaowei Shen's avatar Shaowei Shen Committed by Android (Google) Code Review
Browse files

Merge "[Output switcher] dismiss dialog when launch bt page in lock screen" into tm-qpr-dev

parents c7359149 09e25a59
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.media.dialog

import android.app.KeyguardManager
import android.content.Context
import android.media.AudioManager
import android.media.session.MediaSessionManager
@@ -45,7 +46,8 @@ class MediaOutputBroadcastDialogFactory @Inject constructor(
    private val dialogLaunchAnimator: DialogLaunchAnimator,
    private val nearbyMediaDevicesManagerOptional: Optional<NearbyMediaDevicesManager>,
    private val audioManager: AudioManager,
    private val powerExemptionManager: PowerExemptionManager
    private val powerExemptionManager: PowerExemptionManager,
    private val keyGuardManager: KeyguardManager
) {
    var mediaOutputBroadcastDialog: MediaOutputBroadcastDialog? = null

@@ -57,7 +59,7 @@ class MediaOutputBroadcastDialogFactory @Inject constructor(
        val controller = MediaOutputController(context, packageName,
                mediaSessionManager, lbm, starter, notifCollection,
                dialogLaunchAnimator, nearbyMediaDevicesManagerOptional, audioManager,
                powerExemptionManager)
                powerExemptionManager, keyGuardManager)
        val dialog =
                MediaOutputBroadcastDialog(context, aboveStatusBar, broadcastSender, controller)
        mediaOutputBroadcastDialog = dialog
+8 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.provider.Settings.ACTION_BLUETOOTH_SETTINGS;

import android.annotation.CallbackExecutor;
import android.app.AlertDialog;
import android.app.KeyguardManager;
import android.app.Notification;
import android.app.WallpaperColors;
import android.bluetooth.BluetoothLeBroadcast;
@@ -120,6 +121,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
    final List<MediaDevice> mCachedMediaDevices = new CopyOnWriteArrayList<>();
    private final AudioManager mAudioManager;
    private final PowerExemptionManager mPowerExemptionManager;
    private final KeyguardManager mKeyGuardManager;
    private final NearbyMediaDevicesManager mNearbyMediaDevicesManager;
    private final Map<String, Integer> mNearbyDeviceInfoMap = new ConcurrentHashMap<>();

@@ -154,7 +156,8 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
            DialogLaunchAnimator dialogLaunchAnimator,
            Optional<NearbyMediaDevicesManager> nearbyMediaDevicesManagerOptional,
            AudioManager audioManager,
            PowerExemptionManager powerExemptionManager) {
            PowerExemptionManager powerExemptionManager,
            KeyguardManager keyGuardManager) {
        mContext = context;
        mPackageName = packageName;
        mMediaSessionManager = mediaSessionManager;
@@ -163,6 +166,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
        mNotifCollection = notifCollection;
        mAudioManager = audioManager;
        mPowerExemptionManager = powerExemptionManager;
        mKeyGuardManager = keyGuardManager;
        InfoMediaManager imm = new InfoMediaManager(mContext, packageName, null, lbm);
        mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName);
        mMetricLogger = new MediaOutputMetricLogger(mContext, mPackageName);
@@ -719,7 +723,8 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
        ActivityLaunchAnimator.Controller controller =
                mDialogLaunchAnimator.createActivityLaunchController(view);

        if (controller == null) {
        if (controller == null || (mKeyGuardManager != null
                && mKeyGuardManager.isKeyguardLocked())) {
            mCallback.dismissDialog();
        }

@@ -771,7 +776,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
        MediaOutputController controller = new MediaOutputController(mContext, mPackageName,
                mMediaSessionManager, mLocalBluetoothManager, mActivityStarter,
                mNotifCollection, mDialogLaunchAnimator, Optional.of(mNearbyMediaDevicesManager),
                mAudioManager, mPowerExemptionManager);
                mAudioManager, mPowerExemptionManager, mKeyGuardManager);
        MediaOutputBroadcastDialog dialog = new MediaOutputBroadcastDialog(mContext, true,
                broadcastSender, controller);
        mDialogLaunchAnimator.showFromView(dialog, mediaOutputDialog);
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.media.dialog

import android.app.KeyguardManager
import android.content.Context
import android.media.AudioManager
import android.media.session.MediaSessionManager
@@ -47,7 +48,8 @@ class MediaOutputDialogFactory @Inject constructor(
    private val dialogLaunchAnimator: DialogLaunchAnimator,
    private val nearbyMediaDevicesManagerOptional: Optional<NearbyMediaDevicesManager>,
    private val audioManager: AudioManager,
    private val powerExemptionManager: PowerExemptionManager
    private val powerExemptionManager: PowerExemptionManager,
    private val keyGuardManager: KeyguardManager
) {
    companion object {
        private const val INTERACTION_JANK_TAG = "media_output"
@@ -63,7 +65,7 @@ class MediaOutputDialogFactory @Inject constructor(
            context, packageName,
            mediaSessionManager, lbm, starter, notifCollection,
            dialogLaunchAnimator, nearbyMediaDevicesManagerOptional, audioManager,
            powerExemptionManager)
            powerExemptionManager, keyGuardManager)
        val dialog =
            MediaOutputDialog(context, aboveStatusBar, broadcastSender, controller, uiEventLogger)
        mediaOutputDialog = dialog
+4 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.KeyguardManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
@@ -88,6 +89,7 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
    private final DialogLaunchAnimator mDialogLaunchAnimator = mock(DialogLaunchAnimator.class);
    private final AudioManager mAudioManager = mock(AudioManager.class);
    private PowerExemptionManager mPowerExemptionManager = mock(PowerExemptionManager.class);
    private KeyguardManager mKeyguardManager = mock(KeyguardManager.class);

    private List<MediaController> mMediaControllers = new ArrayList<>();
    private MediaOutputBaseDialogImpl mMediaOutputBaseDialogImpl;
@@ -119,7 +121,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
        mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
                mNotifCollection, mDialogLaunchAnimator,
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager);
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                mKeyguardManager);
        mMediaOutputBaseDialogImpl = new MediaOutputBaseDialogImpl(mContext, mBroadcastSender,
                mMediaOutputController);
        mMediaOutputBaseDialogImpl.onCreate(new Bundle());
+28 −4
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.KeyguardManager;
import android.app.Notification;
import android.content.Context;
import android.graphics.drawable.Icon;
@@ -47,6 +48,7 @@ import android.os.RemoteException;
import android.service.notification.StatusBarNotification;
import android.testing.AndroidTestingRunner;
import android.text.TextUtils;
import android.view.View;

import androidx.core.graphics.drawable.IconCompat;
import androidx.test.filters.SmallTest;
@@ -57,6 +59,7 @@ import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
import com.android.systemui.plugins.ActivityStarter;
@@ -102,11 +105,16 @@ public class MediaOutputControllerTest extends SysuiTestCase {
    private RoutingSessionInfo mRemoteSessionInfo = mock(RoutingSessionInfo.class);
    private ActivityStarter mStarter = mock(ActivityStarter.class);
    private AudioManager mAudioManager = mock(AudioManager.class);
    private KeyguardManager mKeyguardManager = mock(KeyguardManager.class);
    private PowerExemptionManager mPowerExemptionManager = mock(PowerExemptionManager.class);
    private CommonNotifCollection mNotifCollection = mock(CommonNotifCollection.class);
    private final DialogLaunchAnimator mDialogLaunchAnimator = mock(DialogLaunchAnimator.class);
    private final ActivityLaunchAnimator.Controller mActivityLaunchAnimatorController = mock(
            ActivityLaunchAnimator.Controller.class);
    private final NearbyMediaDevicesManager mNearbyMediaDevicesManager = mock(
            NearbyMediaDevicesManager.class);
    private View mDialogLaunchView = mock(View.class);
    private MediaOutputController.Callback mCallback = mock(MediaOutputController.Callback.class);

    private Context mSpyContext;
    private MediaOutputController mMediaOutputController;
@@ -131,7 +139,8 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        mMediaOutputController = new MediaOutputController(mSpyContext, TEST_PACKAGE_NAME,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
                mNotifCollection, mDialogLaunchAnimator,
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager);
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                mKeyguardManager);
        mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
        mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
        MediaDescription.Builder builder = new MediaDescription.Builder();
@@ -183,7 +192,8 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        mMediaOutputController = new MediaOutputController(mSpyContext, null,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
                mNotifCollection, mDialogLaunchAnimator,
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager);
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                mKeyguardManager);

        mMediaOutputController.start(mCb);

@@ -212,7 +222,8 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        mMediaOutputController = new MediaOutputController(mSpyContext, null,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
                mNotifCollection, mDialogLaunchAnimator,
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager);
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                mKeyguardManager);

        mMediaOutputController.start(mCb);

@@ -461,7 +472,8 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        mMediaOutputController = new MediaOutputController(mSpyContext, null,
                mMediaSessionManager, mLocalBluetoothManager, mStarter,
                mNotifCollection, mDialogLaunchAnimator,
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager);
                Optional.of(mNearbyMediaDevicesManager), mAudioManager, mPowerExemptionManager,
                mKeyguardManager);

        assertThat(mMediaOutputController.getNotificationIcon()).isNull();
    }
@@ -557,4 +569,16 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        verify(mPowerExemptionManager).addToTemporaryAllowList(anyString(), anyInt(), anyString(),
                anyLong());
    }

    @Test
    public void launchBluetoothPairing_isKeyguardLocked_dismissDialog() {
        when(mDialogLaunchAnimator.createActivityLaunchController(mDialogLaunchView)).thenReturn(
                mActivityLaunchAnimatorController);
        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
        mMediaOutputController.mCallback = this.mCallback;

        mMediaOutputController.launchBluetoothPairing(mDialogLaunchView);

        verify(mCallback).dismissDialog();
    }
}
Loading