Merge "Fix One-handed mode tutorial broken on large screen device" into tm-dev am: 118e6bacdb
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17411125 Change-Id: I649b4d8ef0a67fa707522866b877594aed7764b3 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -142,12 +142,7 @@ public final class BackgroundWindowManager extends WindowlessWindowManager {
|
|||||||
* @param displayLayout The latest {@link DisplayLayout} for display bounds.
|
* @param displayLayout The latest {@link DisplayLayout} for display bounds.
|
||||||
*/
|
*/
|
||||||
public void onDisplayChanged(DisplayLayout displayLayout) {
|
public void onDisplayChanged(DisplayLayout displayLayout) {
|
||||||
// One-handed mode is only available on portrait.
|
|
||||||
if (displayLayout.height() > displayLayout.width()) {
|
|
||||||
mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
|
mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
|
||||||
} else {
|
|
||||||
mDisplayBounds = new Rect(0, 0, displayLayout.height(), displayLayout.width());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateThemeOnly() {
|
private void updateThemeOnly() {
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ import android.os.ServiceManager;
|
|||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.view.Surface;
|
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.accessibility.AccessibilityManager;
|
import android.view.accessibility.AccessibilityManager;
|
||||||
import android.window.WindowContainerTransaction;
|
import android.window.WindowContainerTransaction;
|
||||||
@@ -349,8 +348,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int currentRotation = mDisplayAreaOrganizer.getDisplayLayout().rotation();
|
if (mDisplayAreaOrganizer.getDisplayLayout().isLandscape()) {
|
||||||
if (currentRotation != Surface.ROTATION_0 && currentRotation != Surface.ROTATION_180) {
|
|
||||||
Slog.w(TAG, "One handed mode only support portrait mode");
|
Slog.w(TAG, "One handed mode only support portrait mode");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,12 +149,7 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback,
|
|||||||
* @param displayLayout The latest {@link DisplayLayout} representing current displayId
|
* @param displayLayout The latest {@link DisplayLayout} representing current displayId
|
||||||
*/
|
*/
|
||||||
public void onDisplayChanged(DisplayLayout displayLayout) {
|
public void onDisplayChanged(DisplayLayout displayLayout) {
|
||||||
// Ensure the mDisplayBounds is portrait, due to OHM only support on portrait
|
|
||||||
if (displayLayout.height() > displayLayout.width()) {
|
|
||||||
mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
|
mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
|
||||||
} else {
|
|
||||||
mDisplayBounds = new Rect(0, 0, displayLayout.height(), displayLayout.width());
|
|
||||||
}
|
|
||||||
mTutorialAreaHeight = Math.round(mDisplayBounds.height() * mTutorialHeightRatio);
|
mTutorialAreaHeight = Math.round(mDisplayBounds.height() * mTutorialHeightRatio);
|
||||||
mAlphaTransitionStart = mTutorialAreaHeight * START_TRANSITION_FRACTION;
|
mAlphaTransitionStart = mTutorialAreaHeight * START_TRANSITION_FRACTION;
|
||||||
mBackgroundWindowManager.onDisplayChanged(displayLayout);
|
mBackgroundWindowManager.onDisplayChanged(displayLayout);
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@@ -64,12 +65,13 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
|||||||
private int mCurrentUser = UserHandle.myUserId();
|
private int mCurrentUser = UserHandle.myUserId();
|
||||||
|
|
||||||
Display mDisplay;
|
Display mDisplay;
|
||||||
DisplayLayout mDisplayLayout;
|
|
||||||
OneHandedAccessibilityUtil mOneHandedAccessibilityUtil;
|
OneHandedAccessibilityUtil mOneHandedAccessibilityUtil;
|
||||||
OneHandedController mSpiedOneHandedController;
|
OneHandedController mSpiedOneHandedController;
|
||||||
OneHandedTimeoutHandler mSpiedTimeoutHandler;
|
OneHandedTimeoutHandler mSpiedTimeoutHandler;
|
||||||
OneHandedState mSpiedTransitionState;
|
OneHandedState mSpiedTransitionState;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
DisplayLayout mDisplayLayout;
|
||||||
@Mock
|
@Mock
|
||||||
DisplayController mMockDisplayController;
|
DisplayController mMockDisplayController;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -105,7 +107,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mDisplay = mContext.getDisplay();
|
mDisplay = mContext.getDisplay();
|
||||||
mDisplayLayout = new DisplayLayout(mContext, mDisplay);
|
mDisplayLayout = Mockito.mock(DisplayLayout.class);
|
||||||
mSpiedTimeoutHandler = spy(new OneHandedTimeoutHandler(mMockShellMainExecutor));
|
mSpiedTimeoutHandler = spy(new OneHandedTimeoutHandler(mMockShellMainExecutor));
|
||||||
mSpiedTransitionState = spy(new OneHandedState());
|
mSpiedTransitionState = spy(new OneHandedState());
|
||||||
|
|
||||||
@@ -124,7 +126,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
|||||||
when(mMockSettingsUitl.getShortcutEnabled(any(), anyInt())).thenReturn(false);
|
when(mMockSettingsUitl.getShortcutEnabled(any(), anyInt())).thenReturn(false);
|
||||||
|
|
||||||
when(mMockDisplayAreaOrganizer.getLastDisplayBounds()).thenReturn(
|
when(mMockDisplayAreaOrganizer.getLastDisplayBounds()).thenReturn(
|
||||||
new Rect(0, 0, mDisplayLayout.width(), mDisplayLayout.height()));
|
new Rect(0, 0, 1080, 2400));
|
||||||
when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(mDisplayLayout);
|
when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(mDisplayLayout);
|
||||||
|
|
||||||
mOneHandedAccessibilityUtil = new OneHandedAccessibilityUtil(mContext);
|
mOneHandedAccessibilityUtil = new OneHandedAccessibilityUtil(mContext);
|
||||||
@@ -302,10 +304,9 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRotation90CanNotStartOneHanded() {
|
public void testRotation90CanNotStartOneHanded() {
|
||||||
final DisplayLayout landscapeDisplayLayout = new DisplayLayout(mDisplayLayout);
|
mDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_90);
|
||||||
landscapeDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_90);
|
|
||||||
mSpiedTransitionState.setState(STATE_NONE);
|
mSpiedTransitionState.setState(STATE_NONE);
|
||||||
when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(landscapeDisplayLayout);
|
when(mDisplayLayout.isLandscape()).thenReturn(true);
|
||||||
mSpiedOneHandedController.setOneHandedEnabled(true);
|
mSpiedOneHandedController.setOneHandedEnabled(true);
|
||||||
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
|
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
|
||||||
mSpiedOneHandedController.startOneHanded();
|
mSpiedOneHandedController.startOneHanded();
|
||||||
@@ -315,11 +316,10 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRotation180CanStartOneHanded() {
|
public void testRotation180CanStartOneHanded() {
|
||||||
final DisplayLayout testDisplayLayout = new DisplayLayout(mDisplayLayout);
|
mDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_180);
|
||||||
testDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_180);
|
|
||||||
mSpiedTransitionState.setState(STATE_NONE);
|
mSpiedTransitionState.setState(STATE_NONE);
|
||||||
when(mMockDisplayAreaOrganizer.isReady()).thenReturn(true);
|
when(mMockDisplayAreaOrganizer.isReady()).thenReturn(true);
|
||||||
when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(testDisplayLayout);
|
when(mDisplayLayout.isLandscape()).thenReturn(false);
|
||||||
mSpiedOneHandedController.setOneHandedEnabled(true);
|
mSpiedOneHandedController.setOneHandedEnabled(true);
|
||||||
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
|
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
|
||||||
mSpiedOneHandedController.startOneHanded();
|
mSpiedOneHandedController.startOneHanded();
|
||||||
@@ -329,10 +329,9 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRotation270CanNotStartOneHanded() {
|
public void testRotation270CanNotStartOneHanded() {
|
||||||
final DisplayLayout testDisplayLayout = new DisplayLayout(mDisplayLayout);
|
mDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_270);
|
||||||
testDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_270);
|
|
||||||
mSpiedTransitionState.setState(STATE_NONE);
|
mSpiedTransitionState.setState(STATE_NONE);
|
||||||
when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(testDisplayLayout);
|
when(mDisplayLayout.isLandscape()).thenReturn(true);
|
||||||
mSpiedOneHandedController.setOneHandedEnabled(true);
|
mSpiedOneHandedController.setOneHandedEnabled(true);
|
||||||
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
|
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
|
||||||
mSpiedOneHandedController.startOneHanded();
|
mSpiedOneHandedController.startOneHanded();
|
||||||
|
|||||||
Reference in New Issue
Block a user