Merge "Fix 2 finger pull down animation" into sc-v2-dev am: 3b7e950c47 am: 54101bac0d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16194773
Change-Id: I2b6ec9a16d1821a03055788b6db11070c1df51a4
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
index 1784f73..cdf770f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java
@@ -178,7 +178,10 @@
@Override
public void setSquishinessFraction(float squishinessFraction) {
- // No-op, paged layouts are not squishy.
+ int nPages = mPages.size();
+ for (int i = 0; i < nPages; i++) {
+ mPages.get(i).setSquishinessFraction(squishinessFraction);
+ }
}
private void updateListening() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSSquishinessController.kt b/packages/SystemUI/src/com/android/systemui/qs/QSSquishinessController.kt
index 48546009..c1c146d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSSquishinessController.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSSquishinessController.kt
@@ -3,15 +3,14 @@
import android.view.ViewGroup
import com.android.systemui.qs.dagger.QSFragmentModule.QQS_FOOTER
import com.android.systemui.qs.dagger.QSScope
-import com.android.systemui.qs.tileimpl.HeightOverrideable
import javax.inject.Inject
import javax.inject.Named
@QSScope
class QSSquishinessController @Inject constructor(
- private val qsTileHost: QSTileHost,
@Named(QQS_FOOTER) private val qqsFooterActionsView: FooterActionsView,
private val qsAnimator: QSAnimator,
+ private val qsPanelController: QSPanelController,
private val quickQSPanelController: QuickQSPanelController
) {
@@ -34,18 +33,10 @@
* Change the height of all tiles and repositions their siblings.
*/
private fun updateSquishiness() {
- // Update tile positions in the layout
+ (qsPanelController.tileLayout as QSPanel.QSTileLayout).setSquishinessFraction(squishiness)
val tileLayout = quickQSPanelController.tileLayout as TileLayout
tileLayout.setSquishinessFraction(squishiness)
- // Adjust their heights as well
- for (tile in qsTileHost.tiles) {
- val tileView = quickQSPanelController.getTileView(tile)
- (tileView as? HeightOverrideable)?.let {
- it.squishinessFraction = squishiness
- }
- }
-
// Calculate how much we should move the footer
val tileHeightOffset = tileLayout.height - tileLayout.tilesHeight
val footerTopMargin = (qqsFooterActionsView.layoutParams as ViewGroup.MarginLayoutParams)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
index 58c0508..7f08e5b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
@@ -13,6 +13,7 @@
import com.android.systemui.R;
import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSPanelControllerBase.TileRecord;
+import com.android.systemui.qs.tileimpl.HeightOverrideable;
import java.util.ArrayList;
@@ -285,5 +286,11 @@
}
mSquishinessFraction = squishinessFraction;
layoutTileRecords(mRecords.size(), false /* forLayout */);
+
+ for (TileRecord record : mRecords) {
+ if (record.tileView instanceof HeightOverrideable) {
+ ((HeightOverrideable) record.tileView).setSquishinessFraction(mSquishinessFraction);
+ }
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 81290bf..b05a9bf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -2376,8 +2376,10 @@
private void updateQsExpansion() {
if (mQs == null) return;
float qsExpansionFraction = computeQsExpansionFraction();
+ float squishiness = mNotificationStackScrollLayoutController
+ .getNotificationSquishinessFraction();
mQs.setQsExpansion(qsExpansionFraction, getExpandedFraction(), getHeaderTranslation(),
- mNotificationStackScrollLayoutController.getNotificationSquishinessFraction());
+ mQsExpandImmediate || mQsExpanded ? 1f : squishiness);
mSplitShadeHeaderController.setQsExpandedFraction(qsExpansionFraction);
mMediaHierarchyManager.setQsExpansion(qsExpansionFraction);
int qsPanelBottomY = calculateQsBottomPosition(qsExpansionFraction);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt
index 3059aa1..f41d7b1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSquishinessControllerTest.kt
@@ -4,13 +4,10 @@
import android.view.ViewGroup
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
-import com.android.systemui.plugins.qs.QSTile
-import com.android.systemui.qs.tileimpl.QSTileViewImpl
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers.any
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.never
@@ -21,14 +18,13 @@
@SmallTest
class QSSquishinessControllerTest : SysuiTestCase() {
- @Mock private lateinit var qsTileHost: QSTileHost
@Mock private lateinit var qqsFooterActionsView: FooterActionsView
@Mock private lateinit var qqsFooterActionsViewLP: ViewGroup.MarginLayoutParams
@Mock private lateinit var qsAnimator: QSAnimator
+ @Mock private lateinit var qsPanelController: QSPanelController
@Mock private lateinit var quickQsPanelController: QuickQSPanelController
- @Mock private lateinit var qstileView: QSTileViewImpl
- @Mock private lateinit var qstile: QSTile
@Mock private lateinit var tileLayout: TileLayout
+ @Mock private lateinit var pagedTileLayout: PagedTileLayout
@JvmField @Rule val mockitoRule = MockitoJUnit.rule()
@@ -36,11 +32,10 @@
@Before
fun setup() {
- qsSquishinessController = QSSquishinessController(qsTileHost, qqsFooterActionsView,
- qsAnimator, quickQsPanelController)
- `when`(qsTileHost.tiles).thenReturn(mutableListOf(qstile))
- `when`(quickQsPanelController.getTileView(any())).thenReturn(qstileView)
+ qsSquishinessController = QSSquishinessController(qqsFooterActionsView, qsAnimator,
+ qsPanelController, quickQsPanelController)
`when`(quickQsPanelController.tileLayout).thenReturn(tileLayout)
+ `when`(qsPanelController.tileLayout).thenReturn(pagedTileLayout)
`when`(qqsFooterActionsView.layoutParams).thenReturn(qqsFooterActionsViewLP)
}
@@ -56,7 +51,7 @@
@Test
fun setSquishiness_updatesTiles() {
qsSquishinessController.squishiness = 0.5f
- verify(qstileView).squishinessFraction = 0.5f
verify(tileLayout).setSquishinessFraction(0.5f)
+ verify(pagedTileLayout).setSquishinessFraction(0.5f)
}
}
\ No newline at end of file