From 07e1fa7bcc628aad217d8bca2a21491764074406 Mon Sep 17 00:00:00 2001 From: timhypeng Date: Tue, 6 Oct 2020 14:45:04 +0800 Subject: [PATCH] Add dismiss timing for Media Output Dialog -Dismiss dialog when losing window focus -Dismiss dialog when launch Volume Panel in Volume dialog Bug: 155822415 Test: atest MediaControlPanelTest Merged-In: I666550354cef27703d19b736f74c3d58635041ad Change-Id: I666550354cef27703d19b736f74c3d58635041ad --- .../systemui/media/dialog/MediaOutputBaseDialog.java | 10 +++++++++- .../com/android/systemui/volume/VolumeDialogImpl.java | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java index e3e399b2aee27..2faf56a5022c8 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java @@ -49,7 +49,7 @@ import com.android.systemui.statusbar.phone.SystemUIDialog; * Base dialog for media output UI */ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements - MediaOutputController.Callback { + MediaOutputController.Callback, Window.Callback { private static final String TAG = "MediaOutputDialog"; @@ -210,4 +210,12 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements public void dismissDialog() { dismiss(); } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (!hasFocus && isShowing()) { + dismiss(); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 6fe11ed1792b6..06a92272692d9 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -88,6 +88,7 @@ import com.android.settingslib.Utils; import com.android.systemui.Dependency; import com.android.systemui.Prefs; import com.android.systemui.R; +import com.android.systemui.media.dialog.MediaOutputDialogFactory; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; @@ -470,6 +471,7 @@ public class VolumeDialogImpl implements VolumeDialog, Events.writeEvent(Events.EVENT_SETTINGS_CLICK); Intent intent = new Intent(Settings.Panel.ACTION_VOLUME); dismissH(DISMISS_REASON_SETTINGS_CLICKED); + Dependency.get(MediaOutputDialogFactory.class).dismiss(); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); });