mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-04 01:46:49 +00:00
Merge "Simplify vertical bar hotseat bottom calculation for spring loaded state." into tm-qpr-dev
This commit is contained in:
@@ -26,7 +26,7 @@ filegroup {
|
||||
filegroup {
|
||||
name: "launcher3-quickstep-tests-src",
|
||||
path: "tests",
|
||||
srcs: ["tests/src/**/*.java"],
|
||||
srcs: ["tests/src/**/*.java", "tests/src/**/*.kt"],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.quickstep
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.launcher3.DeviceProfileBaseTest
|
||||
import com.android.launcher3.InvariantDeviceProfile
|
||||
import com.android.launcher3.util.WindowBounds
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.ArgumentMatchers
|
||||
import org.mockito.Mockito.`when` as whenever
|
||||
|
||||
/**
|
||||
* Test for [DeviceProfile] quickstep.
|
||||
*/
|
||||
@SmallTest
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class DeviceProfileQuickstepTest : DeviceProfileBaseTest() {
|
||||
|
||||
@Test
|
||||
fun getCellLayoutWidthAndHeight_twoPanelLandscapeScalable4By4GridTablet() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
whenever(info.smallestSizeDp(ArgumentMatchers.any())).thenReturn(800f)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
assertThat(dp.cellLayoutWidth).isEqualTo(1235)
|
||||
assertThat(dp.cellLayoutHeight).isEqualTo(1235)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getCellSize_twoPanelLandscapeScalable4By4GridTablet() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
whenever(info.smallestSizeDp(ArgumentMatchers.any())).thenReturn(800f)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
assertThat(dp.getCellSize().y).isEqualTo(264)
|
||||
assertThat(dp.getCellSize().x).isEqualTo(258)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPanelCount_twoPanelLandscapeScalable4By4GridTablet() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
whenever(info.smallestSizeDp(ArgumentMatchers.any())).thenReturn(800f)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
assertThat(dp.panelCount).isEqualTo(2)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getWorkspaceSpringLoadShrunkTopBottom_landscapePhoneVerticalBar() {
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
initializeVarsForPhone(true)
|
||||
inv = newScalableInvariantDeviceProfile().apply {
|
||||
deviceType = InvariantDeviceProfile.TYPE_PHONE
|
||||
transposeLayoutWithOrientation = true
|
||||
}
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
assertThat(dp.isVerticalBarLayout).isEqualTo(true)
|
||||
assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(168)
|
||||
assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(1358)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getWorkspaceSpringLoadShrunkTopBottom_portraitPhone() {
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
initializeVarsForPhone()
|
||||
inv = newScalableInvariantDeviceProfile().apply {
|
||||
deviceType = InvariantDeviceProfile.TYPE_PHONE
|
||||
}
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
assertThat(dp.isVerticalBarLayout).isEqualTo(false)
|
||||
assertThat(dp.cellLayoutSpringLoadShrunkTop).isEqualTo(364)
|
||||
assertThat(dp.cellLayoutSpringLoadShrunkBottom).isEqualTo(2199)
|
||||
}
|
||||
}
|
||||
@@ -930,15 +930,12 @@ public class DeviceProfile {
|
||||
* Gets the space in px from the bottom of last item in the vertical-bar hotseat to the
|
||||
* bottom of the screen.
|
||||
*/
|
||||
public int getVerticalHotseatLastItemBottomOffset() {
|
||||
private int getVerticalHotseatLastItemBottomOffset() {
|
||||
int cellHeight = calculateCellHeight(
|
||||
heightPx - mHotseatPadding.top - mHotseatPadding.bottom, hotseatBorderSpace,
|
||||
numShownHotseatIcons);
|
||||
int hotseatSize = (cellHeight * numShownHotseatIcons)
|
||||
+ (hotseatBorderSpace * (numShownHotseatIcons - 1));
|
||||
int extraHotseatEndSpacing = (heightPx - hotseatSize) / 2;
|
||||
int extraIconEndSpacing = (cellHeight - iconSizePx) / 2;
|
||||
return extraHotseatEndSpacing + extraIconEndSpacing + mHotseatPadding.bottom;
|
||||
return extraIconEndSpacing + mHotseatPadding.bottom;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -953,7 +950,7 @@ public class DeviceProfile {
|
||||
/**
|
||||
* Gets the scaled bottom of the workspace in px for the spring-loaded edit state.
|
||||
*/
|
||||
private float getCellLayoutSpringLoadShrunkBottom() {
|
||||
public float getCellLayoutSpringLoadShrunkBottom() {
|
||||
int topOfHotseat = hotseatBarSizePx + springLoadedHotseatBarTopMarginPx;
|
||||
workspaceSpringLoadShrunkBottom =
|
||||
heightPx - (isVerticalBarLayout() ? getVerticalHotseatLastItemBottomOffset()
|
||||
|
||||
@@ -65,6 +65,7 @@ abstract class DeviceProfileBaseTest {
|
||||
|
||||
whenever(info.isTablet(any())).thenReturn(false)
|
||||
whenever(info.getDensityDpi()).thenReturn(560)
|
||||
whenever(info.smallestSizeDp(any())).thenReturn(411f)
|
||||
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
}
|
||||
@@ -79,6 +80,7 @@ abstract class DeviceProfileBaseTest {
|
||||
|
||||
whenever(info.isTablet(any())).thenReturn(true)
|
||||
whenever(info.getDensityDpi()).thenReturn(320)
|
||||
whenever(info.smallestSizeDp(any())).thenReturn(800f)
|
||||
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
}
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.launcher3
|
||||
|
||||
import android.graphics.PointF
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.launcher3.util.WindowBounds
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.ArgumentMatchers
|
||||
import org.mockito.Mockito.`when` as whenever
|
||||
|
||||
/**
|
||||
* Test for [DeviceProfile] grid dimensions.
|
||||
*
|
||||
* This includes workspace, cell layout, shortcut and widget container, cell sizes, etc.
|
||||
*/
|
||||
@SmallTest
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class DeviceProfileGridDimensionsTest : DeviceProfileBaseTest() {
|
||||
|
||||
@Test
|
||||
fun getCellLayoutWidth_twoPanelLandscapeScalable4By4GridTablet_equalsSinglePanelWidth() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
val expectedWorkspaceWidth = availableWidth
|
||||
val expectedCellLayoutWidth =
|
||||
(expectedWorkspaceWidth - (dp.workspacePadding.right + dp.workspacePadding.left)) /
|
||||
dp.panelCount
|
||||
assertThat(dp.cellLayoutWidth).isEqualTo(expectedCellLayoutWidth)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getCellLayoutHeight_twoPanelLandscapeScalable4By4GridTablet_equalsSinglePanelHeight() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
val expectedWorkspaceHeight = availableHeight
|
||||
val expectedCellLayoutHeight =
|
||||
expectedWorkspaceHeight - (dp.workspacePadding.top + dp.workspacePadding.bottom)
|
||||
assertThat(dp.cellLayoutHeight).isEqualTo(expectedCellLayoutHeight)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getCellSize_twoPanelLandscapeScalable4By4GridTablet_equalsSinglePanelWidth() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
val expectedWorkspaceWidth = availableWidth
|
||||
val expectedCellLayoutWidth =
|
||||
(expectedWorkspaceWidth - (dp.workspacePadding.right + dp.workspacePadding.left)) /
|
||||
dp.panelCount
|
||||
val expectedShortcutAndWidgetContainerWidth =
|
||||
expectedCellLayoutWidth -
|
||||
(dp.cellLayoutPaddingPx.left + dp.cellLayoutPaddingPx.right)
|
||||
assertThat(dp.getCellSize().x).isEqualTo(
|
||||
(expectedShortcutAndWidgetContainerWidth -
|
||||
((inv!!.numColumns - 1) * dp.cellLayoutBorderSpacePx.x)) / inv!!.numColumns)
|
||||
val expectedWorkspaceHeight = availableHeight
|
||||
val expectedCellLayoutHeight =
|
||||
expectedWorkspaceHeight - (dp.workspacePadding.top + dp.workspacePadding.bottom)
|
||||
val expectedShortcutAndWidgetContainerHeight = expectedCellLayoutHeight -
|
||||
(dp.cellLayoutPaddingPx.top + dp.cellLayoutPaddingPx.bottom)
|
||||
assertThat(dp.getCellSize().y).isEqualTo(
|
||||
(expectedShortcutAndWidgetContainerHeight -
|
||||
((inv!!.numRows - 1) * dp.cellLayoutBorderSpacePx.y)) / inv!!.numRows)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getPanelCount_twoPanelLandscapeScalable4By4GridTablet_equalsTwoPanels() {
|
||||
val tabletWidth = 2560
|
||||
val tabletHeight = 1600
|
||||
val availableWidth = 2560
|
||||
val availableHeight = 1500
|
||||
windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
|
||||
useTwoPanels = true
|
||||
whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
|
||||
whenever(info.densityDpi).thenReturn(320)
|
||||
inv = newScalableInvariantDeviceProfile()
|
||||
|
||||
val dp = newDP()
|
||||
|
||||
assertThat(dp.panelCount).isEqualTo(2)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user