From 940e490753fe1258a1bd3c42ad3559c57ec39e2e Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Mon, 3 Jun 2019 15:43:20 -0700 Subject: Do not hide media metadata when bypassing LS Bug: 130327302 Test: manual Test: atest KeyguardSliceProviderTest Change-Id: I50bfd88d8d812ce7b64294a7bc68d8b28e9a6a0d --- .../systemui/keyguard/KeyguardSliceProvider.java | 10 ++++++++-- .../android/systemui/statusbar/phone/StatusBar.java | 3 ++- .../systemui/keyguard/KeyguardSliceProviderTest.java | 20 ++++++++++++++++++-- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java index d4c73668d0ed..0205bbfc6c1b 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java @@ -52,6 +52,7 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.R; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationMediaManager; +import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.NextAlarmControllerImpl; import com.android.systemui.statusbar.policy.ZenModeController; @@ -118,6 +119,7 @@ public class KeyguardSliceProvider extends SliceProvider implements private PendingIntent mPendingIntent; protected NotificationMediaManager mMediaManager; private StatusBarStateController mStatusBarStateController; + private KeyguardBypassController mKeyguardBypassController; private CharSequence mMediaTitle; private CharSequence mMediaArtist; protected boolean mDozing; @@ -194,11 +196,13 @@ public class KeyguardSliceProvider extends SliceProvider implements */ public void initDependencies( NotificationMediaManager mediaManager, - StatusBarStateController statusBarStateController) { + StatusBarStateController statusBarStateController, + KeyguardBypassController keyguardBypassController) { mMediaManager = mediaManager; mMediaManager.addCallback(this); mStatusBarStateController = statusBarStateController; mStatusBarStateController.addCallback(this); + mKeyguardBypassController = keyguardBypassController; } @AnyThread @@ -223,7 +227,9 @@ public class KeyguardSliceProvider extends SliceProvider implements } protected boolean needsMediaLocked() { - return !TextUtils.isEmpty(mMediaTitle) && mMediaIsVisible && mDozing; + boolean isBypass = mKeyguardBypassController != null + && mKeyguardBypassController.getBypassEnabled(); + return !TextUtils.isEmpty(mMediaTitle) && mMediaIsVisible && (mDozing || isBypass); } protected void addMediaLocked(ListBuilder listBuilder) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 5fca4f8478cb..e60a30af81a3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -660,7 +660,8 @@ public class StatusBar extends SystemUI implements DemoMode, mActivityIntentHelper = new ActivityIntentHelper(mContext); KeyguardSliceProvider sliceProvider = KeyguardSliceProvider.getAttachedInstance(); if (sliceProvider != null) { - sliceProvider.initDependencies(mMediaManager, mStatusBarStateController); + sliceProvider.initDependencies(mMediaManager, mStatusBarStateController, + mKeyguardBypassController); } else { Log.w(TAG, "Cannot init KeyguardSliceProvider dependencies"); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java index 355e26071b2a..c6923591f54b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java @@ -48,6 +48,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationMediaManager; +import com.android.systemui.statusbar.phone.KeyguardBypassController; import org.junit.Assert; import org.junit.Before; @@ -73,6 +74,8 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { private NotificationMediaManager mNotificationMediaManager; @Mock private StatusBarStateController mStatusBarStateController; + @Mock + private KeyguardBypassController mKeyguardBypassController; private TestableKeyguardSliceProvider mProvider; private boolean mIsZenMode; @@ -82,7 +85,8 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { mIsZenMode = false; mProvider = new TestableKeyguardSliceProvider(); mProvider.attachInfo(getContext(), null); - mProvider.initDependencies(mNotificationMediaManager, mStatusBarStateController); + mProvider.initDependencies(mNotificationMediaManager, mStatusBarStateController, + mKeyguardBypassController); SliceProvider.setSpecs(new HashSet<>(Arrays.asList(SliceSpecs.LIST))); } @@ -102,7 +106,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { } @Test - public void onBindSlice_readsMedia() { + public void onBindSlice_readsMedia_withoutBypass() { MediaMetadata metadata = mock(MediaMetadata.class); when(metadata.getText(any())).thenReturn("metadata"); mProvider.onDozingChanged(true); @@ -113,6 +117,18 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { verify(mNotificationMediaManager).getMediaIcon(); } + @Test + public void onBindSlice_readsMedia_withBypass_notDozing() { + MediaMetadata metadata = mock(MediaMetadata.class); + when(metadata.getText(any())).thenReturn("metadata"); + when(mKeyguardBypassController.getBypassEnabled()).thenReturn(true); + mProvider.onMetadataOrStateChanged(metadata, PlaybackState.STATE_PLAYING); + mProvider.onBindSlice(mProvider.getUri()); + verify(metadata).getText(eq(MediaMetadata.METADATA_KEY_TITLE)); + verify(metadata).getText(eq(MediaMetadata.METADATA_KEY_ARTIST)); + verify(mNotificationMediaManager).getMediaIcon(); + } + @Test public void cleansDateFormat() { mProvider.mKeyguardUpdateMonitorCallback.onTimeZoneChanged(null); -- cgit v1.2.3-59-g8ed1b