Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt +0 −43 Original line number Diff line number Diff line Loading @@ -18,18 +18,12 @@ package com.android.systemui.media.controls.ui.controller import android.content.Context import android.content.res.Configuration import android.database.ContentObserver import android.net.Uri import android.os.Handler import android.os.UserHandle import android.provider.Settings import android.view.View import android.view.ViewGroup import androidx.annotation.VisibleForTesting import com.android.systemui.Dumpable import com.android.systemui.Flags.migrateClocksToBlueprint import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.controls.ui.view.MediaHostState Loading @@ -43,7 +37,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.SplitShadeStateController import com.android.systemui.util.asIndenting import com.android.systemui.util.println import com.android.systemui.util.settings.SecureSettings import com.android.systemui.util.withIncreasedIndent import java.io.PrintWriter import javax.inject.Inject Loading @@ -61,8 +54,6 @@ constructor( private val bypassController: KeyguardBypassController, private val statusBarStateController: SysuiStatusBarStateController, private val context: Context, private val secureSettings: SecureSettings, @Main private val handler: Handler, configurationController: ConfigurationController, private val splitShadeStateController: SplitShadeStateController, private val logger: KeyguardMediaControllerLogger, Loading Loading @@ -91,26 +82,6 @@ constructor( } ) val settingsObserver: ContentObserver = object : ContentObserver(handler) { override fun onChange(selfChange: Boolean, uri: Uri?) { if (uri == lockScreenMediaPlayerUri) { allowMediaPlayerOnLockScreen = secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) refreshMediaPosition(reason = "allowMediaPlayerOnLockScreen changed") } } } secureSettings.registerContentObserverForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, settingsObserver, UserHandle.USER_ALL ) // First let's set the desired state that we want for this host mediaHost.expansion = MediaHostState.EXPANDED mediaHost.showsOnlyActiveMedia = true Loading Loading @@ -156,16 +127,6 @@ constructor( private set private var splitShadeContainer: ViewGroup? = null /** Track the media player setting status on lock screen. */ private var allowMediaPlayerOnLockScreen: Boolean = secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) private val lockScreenMediaPlayerUri = secureSettings.getUriFor(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN) /** * Attaches media container in single pane mode, situated at the top of the notifications list */ Loading Loading @@ -229,14 +190,12 @@ constructor( // mediaHost.visible required for proper animations handling val isMediaHostVisible = mediaHost.visible val isBypassNotEnabled = !bypassController.bypassEnabled val currentAllowMediaPlayerOnLockScreen = allowMediaPlayerOnLockScreen val useSplitShade = useSplitShade val shouldBeVisibleForSplitShade = shouldBeVisibleForSplitShade() visible = isMediaHostVisible && isBypassNotEnabled && keyguardOrUserSwitcher && currentAllowMediaPlayerOnLockScreen && shouldBeVisibleForSplitShade logger.logRefreshMediaPosition( reason = reason, Loading @@ -246,7 +205,6 @@ constructor( keyguardOrUserSwitcher = keyguardOrUserSwitcher, mediaHostVisible = isMediaHostVisible, bypassNotEnabled = isBypassNotEnabled, currentAllowMediaPlayerOnLockScreen = currentAllowMediaPlayerOnLockScreen, shouldBeVisibleForSplitShade = shouldBeVisibleForSplitShade, ) val currActiveContainer = activeContainer Loading Loading @@ -321,7 +279,6 @@ constructor( println("Self", this@KeyguardMediaController) println("visible", visible) println("useSplitShade", useSplitShade) println("allowMediaPlayerOnLockScreen", allowMediaPlayerOnLockScreen) println("bypassController.bypassEnabled", bypassController.bypassEnabled) println("isDozeWakeUpAnimationWaiting", isDozeWakeUpAnimationWaiting) println("singlePaneContainer", singlePaneContainer) Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerLogger.kt +2 −5 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ constructor(@KeyguardMediaControllerLog private val logBuffer: LogBuffer) { keyguardOrUserSwitcher: Boolean, mediaHostVisible: Boolean, bypassNotEnabled: Boolean, currentAllowMediaPlayerOnLockScreen: Boolean, shouldBeVisibleForSplitShade: Boolean, ) { logBuffer.log( Loading @@ -50,8 +49,7 @@ constructor(@KeyguardMediaControllerLog private val logBuffer: LogBuffer) { bool3 = keyguardOrUserSwitcher bool4 = mediaHostVisible int2 = if (bypassNotEnabled) 1 else 0 str2 = currentAllowMediaPlayerOnLockScreen.toString() str3 = shouldBeVisibleForSplitShade.toString() str2 = shouldBeVisibleForSplitShade.toString() }, { "refreshMediaPosition(reason=$str1, " + Loading @@ -60,8 +58,7 @@ constructor(@KeyguardMediaControllerLog private val logBuffer: LogBuffer) { "keyguardOrUserSwitcher=$bool3, " + "mediaHostVisible=$bool4, " + "bypassNotEnabled=${int2 == 1}, " + "currentAllowMediaPlayerOnLockScreen=$str2, " + "shouldBeVisibleForSplitShade=$str3)" "shouldBeVisibleForSplitShade=$str2)" } ) } Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +19 −7 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ constructor( ) { /** Track the media player setting status on lock screen. */ private var allowMediaPlayerOnLockScreen: Boolean = true private var allowMediaPlayerOnLockScreen: Boolean = getMediaLockScreenSetting() private val lockScreenMediaPlayerUri = secureSettings.getUriFor(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN) Loading Loading @@ -485,6 +485,7 @@ constructor( mediaCarouselController.logSmartspaceImpression(qsExpanded) } updateUserVisibility() mediaCarouselController.updateHostVisibility() } override fun onDozeAmountChanged(linear: Float, eased: Float) { Loading Loading @@ -569,12 +570,8 @@ constructor( object : ContentObserver(handler) { override fun onChange(selfChange: Boolean, uri: Uri?) { if (uri == lockScreenMediaPlayerUri) { allowMediaPlayerOnLockScreen = secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) allowMediaPlayerOnLockScreen = getMediaLockScreenSetting() mediaCarouselController.updateHostVisibility() } } } Loading @@ -595,6 +592,14 @@ constructor( } } private fun getMediaLockScreenSetting(): Boolean { return secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) } private fun updateConfiguration() { distanceForFullShadeTransition = context.resources.getDimensionPixelSize( Loading Loading @@ -634,6 +639,13 @@ constructor( mediaCarouselController.closeGuts() } /** Return true if the carousel should be hidden because lockscreen is currently visible */ fun isLockedAndHidden(): Boolean { return !allowMediaPlayerOnLockScreen && (statusbarState == StatusBarState.SHADE_LOCKED || statusbarState == StatusBarState.KEYGUARD) } private fun createUniqueObjectHost(): UniqueObjectHostView { val viewHost = UniqueObjectHostView(context) viewHost.addOnAttachStateChangeListener( Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaHost.kt +3 −1 Original line number Diff line number Diff line Loading @@ -202,7 +202,9 @@ constructor( */ fun updateViewVisibility() { state.visible = if (showsOnlyActiveMedia) { if (mediaHierarchyManager.isLockedAndHidden()) { false } else if (showsOnlyActiveMedia) { mediaDataManager.hasActiveMediaOrRecommendation() } else { mediaDataManager.hasAnyMediaOrRecommendation() Loading packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerTest.kt +0 −28 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.media.controls.ui.controller import android.provider.Settings import android.test.suitebuilder.annotation.SmallTest import android.testing.AndroidTestingRunner import android.testing.TestableLooper Loading @@ -37,8 +36,6 @@ import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import com.android.systemui.utils.os.FakeHandler import com.google.common.truth.Truth.assertThat import junit.framework.Assert.assertTrue import org.junit.Before Loading @@ -65,10 +62,7 @@ class KeyguardMediaControllerTest : SysuiTestCase() { private val mediaContainerView: MediaContainerView = MediaContainerView(context, null) private val hostView = UniqueObjectHostView(context) private val settings = FakeSettings() private lateinit var keyguardMediaController: KeyguardMediaController private lateinit var testableLooper: TestableLooper private lateinit var fakeHandler: FakeHandler private lateinit var statusBarStateListener: StatusBarStateController.StateListener @Before Loading @@ -84,16 +78,12 @@ class KeyguardMediaControllerTest : SysuiTestCase() { whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD) whenever(mediaHost.hostView).thenReturn(hostView) hostView.layoutParams = FrameLayout.LayoutParams(100, 100) testableLooper = TestableLooper.get(this) fakeHandler = FakeHandler(testableLooper.looper) keyguardMediaController = KeyguardMediaController( mediaHost, bypassController, statusBarStateController, context, settings, fakeHandler, configurationController, ResourcesSplitShadeStateController(), mock<KeyguardMediaControllerLogger>(), Loading Loading @@ -125,24 +115,6 @@ class KeyguardMediaControllerTest : SysuiTestCase() { assertThat(mediaContainerView.visibility).isEqualTo(visibility) } @Test fun testHiddenOnKeyguard_whenMediaOnLockScreenDisabled() { settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 0) keyguardMediaController.refreshMediaPosition(TEST_REASON) assertThat(mediaContainerView.visibility).isEqualTo(GONE) } @Test fun testAvailableOnKeyguard_whenMediaOnLockScreenEnabled() { settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 1) keyguardMediaController.refreshMediaPosition(TEST_REASON) assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE) } @Test fun testActivatesSplitShadeContainerInSplitShadeMode() { val splitShadeContainer = FrameLayout(context) Loading Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaController.kt +0 −43 Original line number Diff line number Diff line Loading @@ -18,18 +18,12 @@ package com.android.systemui.media.controls.ui.controller import android.content.Context import android.content.res.Configuration import android.database.ContentObserver import android.net.Uri import android.os.Handler import android.os.UserHandle import android.provider.Settings import android.view.View import android.view.ViewGroup import androidx.annotation.VisibleForTesting import com.android.systemui.Dumpable import com.android.systemui.Flags.migrateClocksToBlueprint import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.media.controls.ui.view.MediaHost import com.android.systemui.media.controls.ui.view.MediaHostState Loading @@ -43,7 +37,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.SplitShadeStateController import com.android.systemui.util.asIndenting import com.android.systemui.util.println import com.android.systemui.util.settings.SecureSettings import com.android.systemui.util.withIncreasedIndent import java.io.PrintWriter import javax.inject.Inject Loading @@ -61,8 +54,6 @@ constructor( private val bypassController: KeyguardBypassController, private val statusBarStateController: SysuiStatusBarStateController, private val context: Context, private val secureSettings: SecureSettings, @Main private val handler: Handler, configurationController: ConfigurationController, private val splitShadeStateController: SplitShadeStateController, private val logger: KeyguardMediaControllerLogger, Loading Loading @@ -91,26 +82,6 @@ constructor( } ) val settingsObserver: ContentObserver = object : ContentObserver(handler) { override fun onChange(selfChange: Boolean, uri: Uri?) { if (uri == lockScreenMediaPlayerUri) { allowMediaPlayerOnLockScreen = secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) refreshMediaPosition(reason = "allowMediaPlayerOnLockScreen changed") } } } secureSettings.registerContentObserverForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, settingsObserver, UserHandle.USER_ALL ) // First let's set the desired state that we want for this host mediaHost.expansion = MediaHostState.EXPANDED mediaHost.showsOnlyActiveMedia = true Loading Loading @@ -156,16 +127,6 @@ constructor( private set private var splitShadeContainer: ViewGroup? = null /** Track the media player setting status on lock screen. */ private var allowMediaPlayerOnLockScreen: Boolean = secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) private val lockScreenMediaPlayerUri = secureSettings.getUriFor(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN) /** * Attaches media container in single pane mode, situated at the top of the notifications list */ Loading Loading @@ -229,14 +190,12 @@ constructor( // mediaHost.visible required for proper animations handling val isMediaHostVisible = mediaHost.visible val isBypassNotEnabled = !bypassController.bypassEnabled val currentAllowMediaPlayerOnLockScreen = allowMediaPlayerOnLockScreen val useSplitShade = useSplitShade val shouldBeVisibleForSplitShade = shouldBeVisibleForSplitShade() visible = isMediaHostVisible && isBypassNotEnabled && keyguardOrUserSwitcher && currentAllowMediaPlayerOnLockScreen && shouldBeVisibleForSplitShade logger.logRefreshMediaPosition( reason = reason, Loading @@ -246,7 +205,6 @@ constructor( keyguardOrUserSwitcher = keyguardOrUserSwitcher, mediaHostVisible = isMediaHostVisible, bypassNotEnabled = isBypassNotEnabled, currentAllowMediaPlayerOnLockScreen = currentAllowMediaPlayerOnLockScreen, shouldBeVisibleForSplitShade = shouldBeVisibleForSplitShade, ) val currActiveContainer = activeContainer Loading Loading @@ -321,7 +279,6 @@ constructor( println("Self", this@KeyguardMediaController) println("visible", visible) println("useSplitShade", useSplitShade) println("allowMediaPlayerOnLockScreen", allowMediaPlayerOnLockScreen) println("bypassController.bypassEnabled", bypassController.bypassEnabled) println("isDozeWakeUpAnimationWaiting", isDozeWakeUpAnimationWaiting) println("singlePaneContainer", singlePaneContainer) Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerLogger.kt +2 −5 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ constructor(@KeyguardMediaControllerLog private val logBuffer: LogBuffer) { keyguardOrUserSwitcher: Boolean, mediaHostVisible: Boolean, bypassNotEnabled: Boolean, currentAllowMediaPlayerOnLockScreen: Boolean, shouldBeVisibleForSplitShade: Boolean, ) { logBuffer.log( Loading @@ -50,8 +49,7 @@ constructor(@KeyguardMediaControllerLog private val logBuffer: LogBuffer) { bool3 = keyguardOrUserSwitcher bool4 = mediaHostVisible int2 = if (bypassNotEnabled) 1 else 0 str2 = currentAllowMediaPlayerOnLockScreen.toString() str3 = shouldBeVisibleForSplitShade.toString() str2 = shouldBeVisibleForSplitShade.toString() }, { "refreshMediaPosition(reason=$str1, " + Loading @@ -60,8 +58,7 @@ constructor(@KeyguardMediaControllerLog private val logBuffer: LogBuffer) { "keyguardOrUserSwitcher=$bool3, " + "mediaHostVisible=$bool4, " + "bypassNotEnabled=${int2 == 1}, " + "currentAllowMediaPlayerOnLockScreen=$str2, " + "shouldBeVisibleForSplitShade=$str3)" "shouldBeVisibleForSplitShade=$str2)" } ) } Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +19 −7 Original line number Diff line number Diff line Loading @@ -115,7 +115,7 @@ constructor( ) { /** Track the media player setting status on lock screen. */ private var allowMediaPlayerOnLockScreen: Boolean = true private var allowMediaPlayerOnLockScreen: Boolean = getMediaLockScreenSetting() private val lockScreenMediaPlayerUri = secureSettings.getUriFor(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN) Loading Loading @@ -485,6 +485,7 @@ constructor( mediaCarouselController.logSmartspaceImpression(qsExpanded) } updateUserVisibility() mediaCarouselController.updateHostVisibility() } override fun onDozeAmountChanged(linear: Float, eased: Float) { Loading Loading @@ -569,12 +570,8 @@ constructor( object : ContentObserver(handler) { override fun onChange(selfChange: Boolean, uri: Uri?) { if (uri == lockScreenMediaPlayerUri) { allowMediaPlayerOnLockScreen = secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) allowMediaPlayerOnLockScreen = getMediaLockScreenSetting() mediaCarouselController.updateHostVisibility() } } } Loading @@ -595,6 +592,14 @@ constructor( } } private fun getMediaLockScreenSetting(): Boolean { return secureSettings.getBoolForUser( Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, true, UserHandle.USER_CURRENT ) } private fun updateConfiguration() { distanceForFullShadeTransition = context.resources.getDimensionPixelSize( Loading Loading @@ -634,6 +639,13 @@ constructor( mediaCarouselController.closeGuts() } /** Return true if the carousel should be hidden because lockscreen is currently visible */ fun isLockedAndHidden(): Boolean { return !allowMediaPlayerOnLockScreen && (statusbarState == StatusBarState.SHADE_LOCKED || statusbarState == StatusBarState.KEYGUARD) } private fun createUniqueObjectHost(): UniqueObjectHostView { val viewHost = UniqueObjectHostView(context) viewHost.addOnAttachStateChangeListener( Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/view/MediaHost.kt +3 −1 Original line number Diff line number Diff line Loading @@ -202,7 +202,9 @@ constructor( */ fun updateViewVisibility() { state.visible = if (showsOnlyActiveMedia) { if (mediaHierarchyManager.isLockedAndHidden()) { false } else if (showsOnlyActiveMedia) { mediaDataManager.hasActiveMediaOrRecommendation() } else { mediaDataManager.hasAnyMediaOrRecommendation() Loading
packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/KeyguardMediaControllerTest.kt +0 −28 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.media.controls.ui.controller import android.provider.Settings import android.test.suitebuilder.annotation.SmallTest import android.testing.AndroidTestingRunner import android.testing.TestableLooper Loading @@ -37,8 +36,6 @@ import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import com.android.systemui.utils.os.FakeHandler import com.google.common.truth.Truth.assertThat import junit.framework.Assert.assertTrue import org.junit.Before Loading @@ -65,10 +62,7 @@ class KeyguardMediaControllerTest : SysuiTestCase() { private val mediaContainerView: MediaContainerView = MediaContainerView(context, null) private val hostView = UniqueObjectHostView(context) private val settings = FakeSettings() private lateinit var keyguardMediaController: KeyguardMediaController private lateinit var testableLooper: TestableLooper private lateinit var fakeHandler: FakeHandler private lateinit var statusBarStateListener: StatusBarStateController.StateListener @Before Loading @@ -84,16 +78,12 @@ class KeyguardMediaControllerTest : SysuiTestCase() { whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD) whenever(mediaHost.hostView).thenReturn(hostView) hostView.layoutParams = FrameLayout.LayoutParams(100, 100) testableLooper = TestableLooper.get(this) fakeHandler = FakeHandler(testableLooper.looper) keyguardMediaController = KeyguardMediaController( mediaHost, bypassController, statusBarStateController, context, settings, fakeHandler, configurationController, ResourcesSplitShadeStateController(), mock<KeyguardMediaControllerLogger>(), Loading Loading @@ -125,24 +115,6 @@ class KeyguardMediaControllerTest : SysuiTestCase() { assertThat(mediaContainerView.visibility).isEqualTo(visibility) } @Test fun testHiddenOnKeyguard_whenMediaOnLockScreenDisabled() { settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 0) keyguardMediaController.refreshMediaPosition(TEST_REASON) assertThat(mediaContainerView.visibility).isEqualTo(GONE) } @Test fun testAvailableOnKeyguard_whenMediaOnLockScreenEnabled() { settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 1) keyguardMediaController.refreshMediaPosition(TEST_REASON) assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE) } @Test fun testActivatesSplitShadeContainerInSplitShadeMode() { val splitShadeContainer = FrameLayout(context) Loading