Loading packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java +5 −2 Original line number Diff line number Diff line Loading @@ -2252,8 +2252,11 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum // panel, mQs will not need to be null cause it will be tied to the same lifecycle. if (fragment == mQs) { // Clear it to remove bindings to mQs from the provider. if (QSComposeFragment.isEnabled()) { mNotificationStackScrollLayoutController.setQsHeaderBoundsProvider(null); } else { mNotificationStackScrollLayoutController.setQsHeader(null); } mQs = null; } } Loading packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ public class QuickSettingsControllerImplBaseTest extends SysuiTestCase { when(mPanelView.getParent()).thenReturn(mPanelViewParent); when(mQs.getHeader()).thenReturn(mQsHeader); when(mQSFragment.getHeader()).thenReturn(mQsHeader); doAnswer(invocation -> { mLockscreenShadeTransitionCallback = invocation.getArgument(0); Loading packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java +64 −2 Original line number Diff line number Diff line Loading @@ -24,34 +24,41 @@ import static android.view.MotionEvent.ACTION_UP; import static android.view.MotionEvent.BUTTON_SECONDARY; import static android.view.MotionEvent.BUTTON_STYLUS_PRIMARY; import static com.android.systemui.Flags.FLAG_QS_UI_REFACTOR; import static com.android.systemui.Flags.FLAG_QS_UI_REFACTOR_COMPOSE_FRAGMENT; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.graphics.Rect; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.testing.TestableLooper; import android.view.MotionEvent; import android.view.ViewGroup; import androidx.test.filters.SmallTest; import com.android.systemui.plugins.qs.QS; import com.android.systemui.qs.flags.QSComposeFragment; import com.android.systemui.res.R; import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import java.util.List; Loading @@ -65,7 +72,7 @@ public class QuickSettingsControllerImplTest extends QuickSettingsControllerImpl @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return progressionOf(FLAG_QS_UI_REFACTOR, FLAG_QS_UI_REFACTOR_COMPOSE_FRAGMENT); return progressionOf(FLAG_QS_UI_REFACTOR_COMPOSE_FRAGMENT); } public QuickSettingsControllerImplTest(FlagsParameterization flags) { Loading Loading @@ -243,6 +250,61 @@ public class QuickSettingsControllerImplTest extends QuickSettingsControllerImpl verify(mQSFragment).setIsNotificationPanelFullWidth(true); } @Test @DisableFlags(QSComposeFragment.FLAG_NAME) public void onQsFragmentAttached_qsComposeFragmentDisabled_setHeaderInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController) .setQsHeader((ViewGroup) mQSFragment.getHeader()); verify(mNotificationStackScrollLayoutController, never()).setQsHeaderBoundsProvider(any()); } @Test @EnableFlags(QSComposeFragment.FLAG_NAME) public void onQsFragmentAttached_qsComposeFragmentEnabled_setQsHeaderBoundsProviderInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController, never()) .setQsHeader((ViewGroup) mQSFragment.getHeader()); ArgumentCaptor<QSHeaderBoundsProvider> argumentCaptor = ArgumentCaptor.forClass(QSHeaderBoundsProvider.class); verify(mNotificationStackScrollLayoutController) .setQsHeaderBoundsProvider(argumentCaptor.capture()); argumentCaptor.getValue().getLeftProvider().invoke(); argumentCaptor.getValue().getHeightProvider().invoke(); argumentCaptor.getValue().getBoundsOnScreenProvider().invoke(new Rect()); InOrder inOrderVerifier = inOrder(mQSFragment); inOrderVerifier.verify(mQSFragment).getHeaderLeft(); inOrderVerifier.verify(mQSFragment).getHeaderHeight(); inOrderVerifier.verify(mQSFragment).getHeaderBoundsOnScreen(new Rect()); } @Test @DisableFlags(QSComposeFragment.FLAG_NAME) public void onQSFragmentDetached_qsComposeFragmentFlagDisabled_setViewToNullInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); mFragmentListener.onFragmentViewDestroyed(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController).setQsHeader(null); verify(mNotificationStackScrollLayoutController, never()).setQsHeaderBoundsProvider(null); } @Test @EnableFlags(QSComposeFragment.FLAG_NAME) public void onQSFragmentDetached_qsComposeFragmentFlagEnabled_setBoundsProviderToNullInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); mFragmentListener.onFragmentViewDestroyed(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController, never()).setQsHeader(null); verify(mNotificationStackScrollLayoutController).setQsHeaderBoundsProvider(null); } @Test public void onQsFragmentAttached_notFullWidth_setsFullWidthFalseOnQS() { setIsFullWidth(false); Loading Loading
packages/SystemUI/src/com/android/systemui/shade/QuickSettingsControllerImpl.java +5 −2 Original line number Diff line number Diff line Loading @@ -2252,8 +2252,11 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum // panel, mQs will not need to be null cause it will be tied to the same lifecycle. if (fragment == mQs) { // Clear it to remove bindings to mQs from the provider. if (QSComposeFragment.isEnabled()) { mNotificationStackScrollLayoutController.setQsHeaderBoundsProvider(null); } else { mNotificationStackScrollLayoutController.setQsHeader(null); } mQs = null; } } Loading
packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplBaseTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ public class QuickSettingsControllerImplBaseTest extends SysuiTestCase { when(mPanelView.getParent()).thenReturn(mPanelViewParent); when(mQs.getHeader()).thenReturn(mQsHeader); when(mQSFragment.getHeader()).thenReturn(mQsHeader); doAnswer(invocation -> { mLockscreenShadeTransitionCallback = invocation.getArgument(0); Loading
packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerImplTest.java +64 −2 Original line number Diff line number Diff line Loading @@ -24,34 +24,41 @@ import static android.view.MotionEvent.ACTION_UP; import static android.view.MotionEvent.BUTTON_SECONDARY; import static android.view.MotionEvent.BUTTON_STYLUS_PRIMARY; import static com.android.systemui.Flags.FLAG_QS_UI_REFACTOR; import static com.android.systemui.Flags.FLAG_QS_UI_REFACTOR_COMPOSE_FRAGMENT; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.graphics.Rect; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.testing.TestableLooper; import android.view.MotionEvent; import android.view.ViewGroup; import androidx.test.filters.SmallTest; import com.android.systemui.plugins.qs.QS; import com.android.systemui.qs.flags.QSComposeFragment; import com.android.systemui.res.R; import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import java.util.List; Loading @@ -65,7 +72,7 @@ public class QuickSettingsControllerImplTest extends QuickSettingsControllerImpl @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { return progressionOf(FLAG_QS_UI_REFACTOR, FLAG_QS_UI_REFACTOR_COMPOSE_FRAGMENT); return progressionOf(FLAG_QS_UI_REFACTOR_COMPOSE_FRAGMENT); } public QuickSettingsControllerImplTest(FlagsParameterization flags) { Loading Loading @@ -243,6 +250,61 @@ public class QuickSettingsControllerImplTest extends QuickSettingsControllerImpl verify(mQSFragment).setIsNotificationPanelFullWidth(true); } @Test @DisableFlags(QSComposeFragment.FLAG_NAME) public void onQsFragmentAttached_qsComposeFragmentDisabled_setHeaderInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController) .setQsHeader((ViewGroup) mQSFragment.getHeader()); verify(mNotificationStackScrollLayoutController, never()).setQsHeaderBoundsProvider(any()); } @Test @EnableFlags(QSComposeFragment.FLAG_NAME) public void onQsFragmentAttached_qsComposeFragmentEnabled_setQsHeaderBoundsProviderInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController, never()) .setQsHeader((ViewGroup) mQSFragment.getHeader()); ArgumentCaptor<QSHeaderBoundsProvider> argumentCaptor = ArgumentCaptor.forClass(QSHeaderBoundsProvider.class); verify(mNotificationStackScrollLayoutController) .setQsHeaderBoundsProvider(argumentCaptor.capture()); argumentCaptor.getValue().getLeftProvider().invoke(); argumentCaptor.getValue().getHeightProvider().invoke(); argumentCaptor.getValue().getBoundsOnScreenProvider().invoke(new Rect()); InOrder inOrderVerifier = inOrder(mQSFragment); inOrderVerifier.verify(mQSFragment).getHeaderLeft(); inOrderVerifier.verify(mQSFragment).getHeaderHeight(); inOrderVerifier.verify(mQSFragment).getHeaderBoundsOnScreen(new Rect()); } @Test @DisableFlags(QSComposeFragment.FLAG_NAME) public void onQSFragmentDetached_qsComposeFragmentFlagDisabled_setViewToNullInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); mFragmentListener.onFragmentViewDestroyed(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController).setQsHeader(null); verify(mNotificationStackScrollLayoutController, never()).setQsHeaderBoundsProvider(null); } @Test @EnableFlags(QSComposeFragment.FLAG_NAME) public void onQSFragmentDetached_qsComposeFragmentFlagEnabled_setBoundsProviderToNullInNSSL() { mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); mFragmentListener.onFragmentViewDestroyed(QS.TAG, mQSFragment); verify(mNotificationStackScrollLayoutController, never()).setQsHeader(null); verify(mNotificationStackScrollLayoutController).setQsHeaderBoundsProvider(null); } @Test public void onQsFragmentAttached_notFullWidth_setsFullWidthFalseOnQS() { setIsFullWidth(false); Loading