Loading packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +3 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.util.AttributeSet; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.Toolbar; Loading Loading @@ -74,8 +75,8 @@ public class QSCustomizer extends LinearLayout { toolbar.setNavigationIcon( getResources().getDrawable(value.resourceId, mContext.getTheme())); toolbar.getMenu().add(Menu.NONE, MENU_RESET, 0, mContext.getString(com.android.internal.R.string.reset)); toolbar.getMenu().add(Menu.NONE, MENU_RESET, 0, com.android.internal.R.string.reset) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); toolbar.setTitle(R.string.qs_edit); mRecyclerView = findViewById(android.R.id.list); mTransparentView = findViewById(R.id.customizer_transparent_view); Loading packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt +6 −2 Original line number Diff line number Diff line Loading @@ -175,9 +175,10 @@ class LargeScreenShadeHeaderController @Inject constructor( */ var shadeExpandedFraction = -1f set(value) { if (visible && field != value) { if (field != value) { header.alpha = ShadeInterpolation.getContentAlpha(value) field = value updateVisibility() } } Loading Loading @@ -331,6 +332,9 @@ class LargeScreenShadeHeaderController @Inject constructor( .setDuration(duration) .alpha(if (show) 0f else 1f) .setInterpolator(if (show) Interpolators.ALPHA_OUT else Interpolators.ALPHA_IN) .setUpdateListener { updateVisibility() } .start() } Loading Loading @@ -414,7 +418,7 @@ class LargeScreenShadeHeaderController @Inject constructor( private fun updateVisibility() { val visibility = if (!largeScreenActive && !combinedHeaders || qsDisabled) { View.GONE } else if (qsVisible) { } else if (qsVisible && header.alpha > 0f) { View.VISIBLE } else { View.INVISIBLE Loading packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt +1 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { null } whenever(view.visibility).thenAnswer { _ -> viewVisibility } whenever(view.alpha).thenReturn(1f) whenever(iconManagerFactory.create(any(), any())).thenReturn(iconManager) Loading packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt +54 −0 Original line number Diff line number Diff line package com.android.systemui.shade import android.animation.ValueAnimator import android.app.StatusBarManager import android.content.Context import android.testing.AndroidTestingRunner Loading Loading @@ -30,6 +31,7 @@ import com.android.systemui.statusbar.policy.VariableDateViewController import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before Loading @@ -37,6 +39,7 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Answers import org.mockito.ArgumentMatchers.anyFloat import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mock import org.mockito.Mockito.mock Loading Loading @@ -75,6 +78,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @JvmField @Rule val mockitoRule = MockitoJUnit.rule() var viewVisibility = View.GONE var viewAlpha = 1f private lateinit var mLargeScreenShadeHeaderController: LargeScreenShadeHeaderController private lateinit var carrierIconSlots: List<String> Loading @@ -101,6 +105,13 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { null } whenever(view.visibility).thenAnswer { _ -> viewVisibility } whenever(view.setAlpha(anyFloat())).then { viewAlpha = it.arguments[0] as Float null } whenever(view.alpha).thenAnswer { _ -> viewAlpha } whenever(variableDateViewControllerFactory.create(any())) .thenReturn(variableDateViewController) whenever(iconManagerFactory.create(any(), any())).thenReturn(iconManager) Loading Loading @@ -154,6 +165,16 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(view).setAlpha(ShadeInterpolation.getContentAlpha(0.5f)) } @Test fun alphaChangesUpdateVisibility() { makeShadeVisible() mLargeScreenShadeHeaderController.shadeExpandedFraction = 0f assertThat(viewVisibility).isEqualTo(View.INVISIBLE) mLargeScreenShadeHeaderController.shadeExpandedFraction = 1f assertThat(viewVisibility).isEqualTo(View.VISIBLE) } @Test fun singleCarrier_enablesCarrierIconsInStatusIcons() { whenever(qsCarrierGroupController.isSingleCarrier).thenReturn(true) Loading Loading @@ -238,6 +259,39 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(animator).start() } @Test fun testShadeExpanded_true_alpha_zero_invisible() { view.alpha = 0f mLargeScreenShadeHeaderController.largeScreenActive = true mLargeScreenShadeHeaderController.qsVisible = true assertThat(viewVisibility).isEqualTo(View.INVISIBLE) } @Test fun animatorCallsUpdateVisibilityOnUpdate() { val animator = mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) whenever(view.animate()).thenReturn(animator) mLargeScreenShadeHeaderController.startCustomizingAnimation(show = false, 0L) val updateCaptor = argumentCaptor<ValueAnimator.AnimatorUpdateListener>() verify(animator).setUpdateListener(capture(updateCaptor)) mLargeScreenShadeHeaderController.largeScreenActive = true mLargeScreenShadeHeaderController.qsVisible = true view.alpha = 1f updateCaptor.value.onAnimationUpdate(mock()) assertThat(viewVisibility).isEqualTo(View.VISIBLE) view.alpha = 0f updateCaptor.value.onAnimationUpdate(mock()) assertThat(viewVisibility).isEqualTo(View.INVISIBLE) } @Test fun demoMode_attachDemoMode() { val cb = argumentCaptor<DemoMode>() Loading Loading
packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +3 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.util.AttributeSet; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.Toolbar; Loading Loading @@ -74,8 +75,8 @@ public class QSCustomizer extends LinearLayout { toolbar.setNavigationIcon( getResources().getDrawable(value.resourceId, mContext.getTheme())); toolbar.getMenu().add(Menu.NONE, MENU_RESET, 0, mContext.getString(com.android.internal.R.string.reset)); toolbar.getMenu().add(Menu.NONE, MENU_RESET, 0, com.android.internal.R.string.reset) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); toolbar.setTitle(R.string.qs_edit); mRecyclerView = findViewById(android.R.id.list); mTransparentView = findViewById(R.id.customizer_transparent_view); Loading
packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt +6 −2 Original line number Diff line number Diff line Loading @@ -175,9 +175,10 @@ class LargeScreenShadeHeaderController @Inject constructor( */ var shadeExpandedFraction = -1f set(value) { if (visible && field != value) { if (field != value) { header.alpha = ShadeInterpolation.getContentAlpha(value) field = value updateVisibility() } } Loading Loading @@ -331,6 +332,9 @@ class LargeScreenShadeHeaderController @Inject constructor( .setDuration(duration) .alpha(if (show) 0f else 1f) .setInterpolator(if (show) Interpolators.ALPHA_OUT else Interpolators.ALPHA_IN) .setUpdateListener { updateVisibility() } .start() } Loading Loading @@ -414,7 +418,7 @@ class LargeScreenShadeHeaderController @Inject constructor( private fun updateVisibility() { val visibility = if (!largeScreenActive && !combinedHeaders || qsDisabled) { View.GONE } else if (qsVisible) { } else if (qsVisible && header.alpha > 0f) { View.VISIBLE } else { View.INVISIBLE Loading
packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt +1 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { null } whenever(view.visibility).thenAnswer { _ -> viewVisibility } whenever(view.alpha).thenReturn(1f) whenever(iconManagerFactory.create(any(), any())).thenReturn(iconManager) Loading
packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt +54 −0 Original line number Diff line number Diff line package com.android.systemui.shade import android.animation.ValueAnimator import android.app.StatusBarManager import android.content.Context import android.testing.AndroidTestingRunner Loading Loading @@ -30,6 +31,7 @@ import com.android.systemui.statusbar.policy.VariableDateViewController import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before Loading @@ -37,6 +39,7 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Answers import org.mockito.ArgumentMatchers.anyFloat import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mock import org.mockito.Mockito.mock Loading Loading @@ -75,6 +78,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @JvmField @Rule val mockitoRule = MockitoJUnit.rule() var viewVisibility = View.GONE var viewAlpha = 1f private lateinit var mLargeScreenShadeHeaderController: LargeScreenShadeHeaderController private lateinit var carrierIconSlots: List<String> Loading @@ -101,6 +105,13 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { null } whenever(view.visibility).thenAnswer { _ -> viewVisibility } whenever(view.setAlpha(anyFloat())).then { viewAlpha = it.arguments[0] as Float null } whenever(view.alpha).thenAnswer { _ -> viewAlpha } whenever(variableDateViewControllerFactory.create(any())) .thenReturn(variableDateViewController) whenever(iconManagerFactory.create(any(), any())).thenReturn(iconManager) Loading Loading @@ -154,6 +165,16 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(view).setAlpha(ShadeInterpolation.getContentAlpha(0.5f)) } @Test fun alphaChangesUpdateVisibility() { makeShadeVisible() mLargeScreenShadeHeaderController.shadeExpandedFraction = 0f assertThat(viewVisibility).isEqualTo(View.INVISIBLE) mLargeScreenShadeHeaderController.shadeExpandedFraction = 1f assertThat(viewVisibility).isEqualTo(View.VISIBLE) } @Test fun singleCarrier_enablesCarrierIconsInStatusIcons() { whenever(qsCarrierGroupController.isSingleCarrier).thenReturn(true) Loading Loading @@ -238,6 +259,39 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { verify(animator).start() } @Test fun testShadeExpanded_true_alpha_zero_invisible() { view.alpha = 0f mLargeScreenShadeHeaderController.largeScreenActive = true mLargeScreenShadeHeaderController.qsVisible = true assertThat(viewVisibility).isEqualTo(View.INVISIBLE) } @Test fun animatorCallsUpdateVisibilityOnUpdate() { val animator = mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) whenever(view.animate()).thenReturn(animator) mLargeScreenShadeHeaderController.startCustomizingAnimation(show = false, 0L) val updateCaptor = argumentCaptor<ValueAnimator.AnimatorUpdateListener>() verify(animator).setUpdateListener(capture(updateCaptor)) mLargeScreenShadeHeaderController.largeScreenActive = true mLargeScreenShadeHeaderController.qsVisible = true view.alpha = 1f updateCaptor.value.onAnimationUpdate(mock()) assertThat(viewVisibility).isEqualTo(View.VISIBLE) view.alpha = 0f updateCaptor.value.onAnimationUpdate(mock()) assertThat(viewVisibility).isEqualTo(View.INVISIBLE) } @Test fun demoMode_attachDemoMode() { val cb = argumentCaptor<DemoMode>() Loading