Merge "Refactor to use WindowManager#getCurrentWindowMetrics() instead of using Display#getRealSize()" into sc-dev
This commit is contained in:
@@ -16,17 +16,14 @@
|
||||
|
||||
package com.android.wm.shell.onehanded;
|
||||
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.SurfaceSession;
|
||||
import android.view.WindowManager;
|
||||
import android.window.DisplayAreaAppearedInfo;
|
||||
import android.window.DisplayAreaInfo;
|
||||
import android.window.DisplayAreaOrganizer;
|
||||
@@ -57,7 +54,7 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer
|
||||
private final float mAlpha;
|
||||
private final Rect mRect;
|
||||
private final Executor mMainExecutor;
|
||||
private final Point mDisplaySize = new Point();
|
||||
private final Rect mDisplaySize;
|
||||
private final OneHandedSurfaceTransactionHelper.SurfaceControlTransactionFactory
|
||||
mSurfaceControlTransactionFactory;
|
||||
|
||||
@@ -85,15 +82,15 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer
|
||||
mMainExecutor.execute(() -> removeBackgroundPanelLayer());
|
||||
}
|
||||
|
||||
public OneHandedBackgroundPanelOrganizer(Context context, DisplayController displayController,
|
||||
Executor executor) {
|
||||
public OneHandedBackgroundPanelOrganizer(Context context, WindowManager windowManager,
|
||||
DisplayController displayController, Executor executor) {
|
||||
super(executor);
|
||||
displayController.getDisplay(DEFAULT_DISPLAY).getRealSize(mDisplaySize);
|
||||
mDisplaySize = windowManager.getCurrentWindowMetrics().getBounds();
|
||||
final Resources res = context.getResources();
|
||||
final float defaultRGB = res.getFloat(R.dimen.config_one_handed_background_rgb);
|
||||
mColor = new float[]{defaultRGB, defaultRGB, defaultRGB};
|
||||
mAlpha = res.getFloat(R.dimen.config_one_handed_background_alpha);
|
||||
mRect = new Rect(0, 0, mDisplaySize.x, mDisplaySize.y);
|
||||
mRect = new Rect(0, 0, mDisplaySize.width(), mDisplaySize.height());
|
||||
mMainExecutor = executor;
|
||||
mSurfaceControlTransactionFactory = SurfaceControl.Transaction::new;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.wm.shell.onehanded;
|
||||
|
||||
import static android.os.UserHandle.USER_CURRENT;
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
@@ -25,7 +24,7 @@ import android.content.om.IOverlayManager;
|
||||
import android.content.om.OverlayInfo;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -33,6 +32,7 @@ import android.os.SystemProperties;
|
||||
import android.provider.Settings;
|
||||
import android.util.Slog;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.WindowManager;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -82,6 +82,7 @@ public class OneHandedController {
|
||||
private final ShellExecutor mMainExecutor;
|
||||
private final Handler mMainHandler;
|
||||
private final OneHandedImpl mImpl = new OneHandedImpl();
|
||||
private final WindowManager mWindowManager;
|
||||
|
||||
private OneHandedDisplayAreaOrganizer mDisplayAreaOrganizer;
|
||||
private final AccessibilityManager mAccessibilityManager;
|
||||
@@ -141,7 +142,7 @@ public class OneHandedController {
|
||||
*/
|
||||
@Nullable
|
||||
public static OneHandedController create(
|
||||
Context context, DisplayController displayController,
|
||||
Context context, WindowManager windowManager, DisplayController displayController,
|
||||
TaskStackListenerImpl taskStackListener, UiEventLogger uiEventLogger,
|
||||
ShellExecutor mainExecutor, Handler mainHandler) {
|
||||
if (!SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false)) {
|
||||
@@ -151,22 +152,24 @@ public class OneHandedController {
|
||||
|
||||
OneHandedTimeoutHandler timeoutHandler = new OneHandedTimeoutHandler(mainExecutor);
|
||||
OneHandedTutorialHandler tutorialHandler = new OneHandedTutorialHandler(context,
|
||||
mainExecutor);
|
||||
windowManager, mainExecutor);
|
||||
OneHandedAnimationController animationController =
|
||||
new OneHandedAnimationController(context);
|
||||
OneHandedTouchHandler touchHandler = new OneHandedTouchHandler(timeoutHandler,
|
||||
mainExecutor);
|
||||
OneHandedGestureHandler gestureHandler = new OneHandedGestureHandler(
|
||||
context, displayController, ViewConfiguration.get(context), mainExecutor);
|
||||
context, windowManager, displayController, ViewConfiguration.get(context),
|
||||
mainExecutor);
|
||||
OneHandedBackgroundPanelOrganizer oneHandedBackgroundPanelOrganizer =
|
||||
new OneHandedBackgroundPanelOrganizer(context, displayController, mainExecutor);
|
||||
new OneHandedBackgroundPanelOrganizer(context, windowManager, displayController,
|
||||
mainExecutor);
|
||||
OneHandedDisplayAreaOrganizer organizer = new OneHandedDisplayAreaOrganizer(
|
||||
context, displayController, animationController, tutorialHandler,
|
||||
context, windowManager, displayController, animationController, tutorialHandler,
|
||||
oneHandedBackgroundPanelOrganizer, mainExecutor);
|
||||
OneHandedUiEventLogger oneHandedUiEventsLogger = new OneHandedUiEventLogger(uiEventLogger);
|
||||
IOverlayManager overlayManager = IOverlayManager.Stub.asInterface(
|
||||
ServiceManager.getService(Context.OVERLAY_SERVICE));
|
||||
return new OneHandedController(context, displayController,
|
||||
return new OneHandedController(context, windowManager, displayController,
|
||||
oneHandedBackgroundPanelOrganizer, organizer, touchHandler, tutorialHandler,
|
||||
gestureHandler, timeoutHandler, oneHandedUiEventsLogger, overlayManager,
|
||||
taskStackListener, mainExecutor, mainHandler);
|
||||
@@ -174,6 +177,7 @@ public class OneHandedController {
|
||||
|
||||
@VisibleForTesting
|
||||
OneHandedController(Context context,
|
||||
WindowManager windowManager,
|
||||
DisplayController displayController,
|
||||
OneHandedBackgroundPanelOrganizer backgroundPanelOrganizer,
|
||||
OneHandedDisplayAreaOrganizer displayAreaOrganizer,
|
||||
@@ -187,6 +191,7 @@ public class OneHandedController {
|
||||
ShellExecutor mainExecutor,
|
||||
Handler mainHandler) {
|
||||
mContext = context;
|
||||
mWindowManager = windowManager;
|
||||
mBackgroundPanelOrganizer = backgroundPanelOrganizer;
|
||||
mDisplayAreaOrganizer = displayAreaOrganizer;
|
||||
mDisplayController = displayController;
|
||||
@@ -269,7 +274,7 @@ public class OneHandedController {
|
||||
return;
|
||||
}
|
||||
if (!mDisplayAreaOrganizer.isInOneHanded()) {
|
||||
final int yOffSet = Math.round(getDisplaySize().y * mOffSetFraction);
|
||||
final int yOffSet = Math.round(getDisplaySize().height() * mOffSetFraction);
|
||||
mDisplayAreaOrganizer.scheduleOffset(0, yOffSet);
|
||||
mTimeoutHandler.resetTimer();
|
||||
|
||||
@@ -426,14 +431,19 @@ public class OneHandedController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the current display real size from {@link DisplayController}
|
||||
* Query the current display real size from {@link WindowManager}
|
||||
*
|
||||
* @return {@link DisplayController#getDisplay(int)#getDisplaySize()}
|
||||
* @return {@link WindowManager#getCurrentWindowMetrics()#getBounds()}
|
||||
*/
|
||||
private Point getDisplaySize() {
|
||||
Point displaySize = new Point();
|
||||
if (mDisplayController != null && mDisplayController.getDisplay(DEFAULT_DISPLAY) != null) {
|
||||
mDisplayController.getDisplay(DEFAULT_DISPLAY).getRealSize(displaySize);
|
||||
private Rect getDisplaySize() {
|
||||
if (mWindowManager == null) {
|
||||
Slog.e(TAG, "WindowManager instance is null! Can not get display size!");
|
||||
return new Rect();
|
||||
}
|
||||
final Rect displaySize = mWindowManager.getCurrentWindowMetrics().getBounds();
|
||||
if (displaySize.width() == 0 || displaySize.height() == 0) {
|
||||
Slog.e(TAG, "Display size error! width = " + displaySize.width()
|
||||
+ ", height = " + displaySize.height());
|
||||
}
|
||||
return displaySize;
|
||||
}
|
||||
|
||||
@@ -16,17 +16,16 @@
|
||||
|
||||
package com.android.wm.shell.onehanded;
|
||||
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import static com.android.wm.shell.onehanded.OneHandedAnimationController.TRANSITION_DIRECTION_EXIT;
|
||||
import static com.android.wm.shell.onehanded.OneHandedAnimationController.TRANSITION_DIRECTION_TRIGGER;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Slog;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.WindowManager;
|
||||
import android.window.DisplayAreaAppearedInfo;
|
||||
import android.window.DisplayAreaInfo;
|
||||
import android.window.DisplayAreaOrganizer;
|
||||
@@ -60,6 +59,7 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
|
||||
private static final String ONE_HANDED_MODE_TRANSLATE_ANIMATION_DURATION =
|
||||
"persist.debug.one_handed_translate_animation_duration";
|
||||
|
||||
private final WindowManager mWindowManager;
|
||||
private final Rect mLastVisualDisplayBounds = new Rect();
|
||||
private final Rect mDefaultDisplayBounds = new Rect();
|
||||
|
||||
@@ -110,12 +110,14 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
|
||||
* Constructor of OneHandedDisplayAreaOrganizer
|
||||
*/
|
||||
public OneHandedDisplayAreaOrganizer(Context context,
|
||||
WindowManager windowManager,
|
||||
DisplayController displayController,
|
||||
OneHandedAnimationController animationController,
|
||||
OneHandedTutorialHandler tutorialHandler,
|
||||
OneHandedBackgroundPanelOrganizer oneHandedBackgroundGradientOrganizer,
|
||||
ShellExecutor mainExecutor) {
|
||||
super(mainExecutor);
|
||||
mWindowManager = windowManager;
|
||||
mAnimationController = animationController;
|
||||
mDisplayController = displayController;
|
||||
mLastVisualDisplayBounds.set(getDisplayBounds());
|
||||
@@ -292,11 +294,16 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
|
||||
|
||||
@Nullable
|
||||
private Rect getDisplayBounds() {
|
||||
Point realSize = new Point(0, 0);
|
||||
if (mDisplayController != null && mDisplayController.getDisplay(DEFAULT_DISPLAY) != null) {
|
||||
mDisplayController.getDisplay(DEFAULT_DISPLAY).getRealSize(realSize);
|
||||
if (mWindowManager == null) {
|
||||
Slog.e(TAG, "WindowManager instance is null! Can not get display size!");
|
||||
return new Rect();
|
||||
}
|
||||
return new Rect(0, 0, realSize.x, realSize.y);
|
||||
final Rect displayBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
|
||||
if (displayBounds.width() == 0 || displayBounds.height() == 0) {
|
||||
Slog.e(TAG, "Display size error! width = " + displayBounds.width()
|
||||
+ ", height = " + displayBounds.height());
|
||||
}
|
||||
return displayBounds;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
@@ -20,7 +20,6 @@ import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.hardware.input.InputManager;
|
||||
@@ -34,6 +33,7 @@ import android.view.InputMonitor;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.Surface;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.WindowManager;
|
||||
import android.window.WindowContainerTransaction;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
@@ -59,8 +59,9 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback,
|
||||
private final PointF mDownPos = new PointF();
|
||||
private final PointF mLastPos = new PointF();
|
||||
private final PointF mStartDragPos = new PointF();
|
||||
private boolean mPassedSlop;
|
||||
private final WindowManager mWindowManager;
|
||||
|
||||
private boolean mPassedSlop;
|
||||
private boolean mAllowGesture;
|
||||
private boolean mIsEnabled;
|
||||
private int mNavGestureHeight;
|
||||
@@ -86,9 +87,10 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback,
|
||||
* @param context {@link Context}
|
||||
* @param displayController {@link DisplayController}
|
||||
*/
|
||||
public OneHandedGestureHandler(Context context, DisplayController displayController,
|
||||
ViewConfiguration viewConfig,
|
||||
public OneHandedGestureHandler(Context context, WindowManager windowManager,
|
||||
DisplayController displayController, ViewConfiguration viewConfig,
|
||||
ShellExecutor mainExecutor) {
|
||||
mWindowManager = windowManager;
|
||||
mDisplayController = displayController;
|
||||
mMainExecutor = mainExecutor;
|
||||
displayController.addDisplayChangingController(this);
|
||||
@@ -210,16 +212,10 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback,
|
||||
disposeInputChannel();
|
||||
|
||||
if (mIsEnabled && mIsThreeButtonModeEnabled) {
|
||||
final Point displaySize = new Point();
|
||||
if (mDisplayController != null) {
|
||||
final Display display = mDisplayController.getDisplay(DEFAULT_DISPLAY);
|
||||
if (display != null) {
|
||||
display.getRealSize(displaySize);
|
||||
}
|
||||
}
|
||||
final Rect displaySize = mWindowManager.getCurrentWindowMetrics().getBounds();
|
||||
// Register input event receiver to monitor the touch region of NavBar gesture height
|
||||
mGestureRegion.set(0, displaySize.y - mNavGestureHeight, displaySize.x,
|
||||
displaySize.y);
|
||||
mGestureRegion.set(0, displaySize.height() - mNavGestureHeight, displaySize.width(),
|
||||
displaySize.height());
|
||||
mInputMonitor = InputManager.getInstance().monitorGestureInput(
|
||||
"onehanded-gesture-offset", DEFAULT_DISPLAY);
|
||||
try {
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.SystemProperties;
|
||||
import android.provider.Settings;
|
||||
@@ -51,14 +50,13 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback {
|
||||
private static final String ONE_HANDED_MODE_OFFSET_PERCENTAGE =
|
||||
"persist.debug.one_handed_offset_percentage";
|
||||
private static final int MAX_TUTORIAL_SHOW_COUNT = 2;
|
||||
private final Rect mLastUpdatedBounds = new Rect();
|
||||
private final WindowManager mWindowManager;
|
||||
private final AccessibilityManager mAccessibilityManager;
|
||||
private final String mPackageName;
|
||||
private final Rect mDisplaySize;
|
||||
|
||||
private Context mContext;
|
||||
private View mTutorialView;
|
||||
private Point mDisplaySize = new Point();
|
||||
private ContentResolver mContentResolver;
|
||||
private boolean mCanShowTutorial;
|
||||
private String mStartOneHandedDescription;
|
||||
@@ -101,14 +99,14 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback {
|
||||
}
|
||||
};
|
||||
|
||||
public OneHandedTutorialHandler(Context context, ShellExecutor mainExecutor) {
|
||||
public OneHandedTutorialHandler(Context context, WindowManager windowManager,
|
||||
ShellExecutor mainExecutor) {
|
||||
mContext = context;
|
||||
context.getDisplay().getRealSize(mDisplaySize);
|
||||
mWindowManager = windowManager;
|
||||
mDisplaySize = windowManager.getCurrentWindowMetrics().getBounds();
|
||||
mPackageName = context.getPackageName();
|
||||
mContentResolver = context.getContentResolver();
|
||||
mWindowManager = context.getSystemService(WindowManager.class);
|
||||
mAccessibilityManager = AccessibilityManager.getInstance(context);
|
||||
|
||||
mStartOneHandedDescription = context.getResources().getString(
|
||||
R.string.accessibility_action_start_one_handed);
|
||||
mStopOneHandedDescription = context.getResources().getString(
|
||||
@@ -121,7 +119,8 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback {
|
||||
R.fraction.config_one_handed_offset, 1, 1);
|
||||
final int sysPropPercentageConfig = SystemProperties.getInt(
|
||||
ONE_HANDED_MODE_OFFSET_PERCENTAGE, Math.round(offsetPercentageConfig * 100.0f));
|
||||
mTutorialAreaHeight = Math.round(mDisplaySize.y * (sysPropPercentageConfig / 100.0f));
|
||||
mTutorialAreaHeight = Math.round(
|
||||
mDisplaySize.height() * (sysPropPercentageConfig / 100.0f));
|
||||
|
||||
mainExecutor.execute(() -> {
|
||||
recreateTutorialView(mContext);
|
||||
@@ -214,7 +213,7 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback {
|
||||
*/
|
||||
private WindowManager.LayoutParams getTutorialTargetLayoutParams() {
|
||||
final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
|
||||
mDisplaySize.x, mTutorialAreaHeight, 0, 0,
|
||||
mDisplaySize.width(), mTutorialAreaHeight, 0, 0,
|
||||
WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
|
||||
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
|
||||
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
|
||||
@@ -228,9 +227,13 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback {
|
||||
|
||||
void dump(@NonNull PrintWriter pw) {
|
||||
final String innerPrefix = " ";
|
||||
pw.println(TAG + "states: ");
|
||||
pw.print(innerPrefix + "mLastUpdatedBounds=");
|
||||
pw.println(mLastUpdatedBounds);
|
||||
pw.println(TAG + " states: ");
|
||||
pw.print(innerPrefix + "mTriggerState=");
|
||||
pw.println(mTriggerState);
|
||||
pw.print(innerPrefix + "mDisplaySize=");
|
||||
pw.println(mDisplaySize);
|
||||
pw.print(innerPrefix + "mTutorialAreaHeight=");
|
||||
pw.println(mTutorialAreaHeight);
|
||||
}
|
||||
|
||||
private boolean canShowTutorial() {
|
||||
|
||||
@@ -69,7 +69,7 @@ public class OneHandedBackgroundPanelOrganizerTest extends OneHandedTestCase {
|
||||
mDisplayAreaInfo = new DisplayAreaInfo(mToken, DEFAULT_DISPLAY,
|
||||
FEATURE_ONE_HANDED_BACKGROUND_PANEL);
|
||||
|
||||
mBackgroundPanelOrganizer = new OneHandedBackgroundPanelOrganizer(mContext,
|
||||
mBackgroundPanelOrganizer = new OneHandedBackgroundPanelOrganizer(mContext, mWindowManager,
|
||||
mMockDisplayController, Runnable::run);
|
||||
}
|
||||
|
||||
|
||||
@@ -100,6 +100,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
||||
|
||||
mSpiedOneHandedController = spy(new OneHandedController(
|
||||
mContext,
|
||||
mWindowManager,
|
||||
mMockDisplayController,
|
||||
mMockBackgroundOrganizer,
|
||||
mMockDisplayAreaOrganizer,
|
||||
@@ -120,8 +121,8 @@ public class OneHandedControllerTest extends OneHandedTestCase {
|
||||
final OneHandedAnimationController animationController = new OneHandedAnimationController(
|
||||
mContext);
|
||||
OneHandedDisplayAreaOrganizer displayAreaOrganizer = new OneHandedDisplayAreaOrganizer(
|
||||
mContext, mMockDisplayController, animationController, mMockTutorialHandler,
|
||||
mMockBackgroundOrganizer, mMockShellMainExecutor);
|
||||
mContext, mWindowManager, mMockDisplayController, animationController,
|
||||
mMockTutorialHandler, mMockBackgroundOrganizer, mMockShellMainExecutor);
|
||||
|
||||
assertThat(displayAreaOrganizer.isInOneHanded()).isFalse();
|
||||
}
|
||||
|
||||
@@ -121,6 +121,7 @@ public class OneHandedDisplayAreaOrganizerTest extends OneHandedTestCase {
|
||||
when(mMockLeash.getHeight()).thenReturn(DISPLAY_HEIGHT);
|
||||
|
||||
mSpiedDisplayAreaOrganizer = spy(new OneHandedDisplayAreaOrganizer(mContext,
|
||||
mWindowManager,
|
||||
mMockDisplayController,
|
||||
mMockAnimationController,
|
||||
mTutorialHandler,
|
||||
|
||||
@@ -44,8 +44,9 @@ public class OneHandedGestureHandlerTest extends OneHandedTestCase {
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mGestureHandler = new OneHandedGestureHandler(mContext, mMockDisplayController,
|
||||
ViewConfiguration.get(mTestContext), mMockShellMainExecutor);
|
||||
mGestureHandler = new OneHandedGestureHandler(mContext, mWindowManager,
|
||||
mMockDisplayController, ViewConfiguration.get(mTestContext),
|
||||
mMockShellMainExecutor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.content.Context;
|
||||
import android.hardware.display.DisplayManager;
|
||||
import android.os.SystemProperties;
|
||||
import android.testing.TestableContext;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
|
||||
@@ -45,6 +46,9 @@ public abstract class OneHandedTestCase {
|
||||
public TestableContext mTestContext = new TestableContext(
|
||||
InstrumentationRegistry.getInstrumentation().getTargetContext(), null);
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
protected WindowManager mWindowManager;
|
||||
|
||||
@Before
|
||||
public void setUpContext() {
|
||||
assumeTrue(SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false));
|
||||
@@ -53,6 +57,12 @@ public abstract class OneHandedTestCase {
|
||||
mContext = getTestContext().createDisplayContext(dm.getDisplay(DEFAULT_DISPLAY));
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUpWindowManager() {
|
||||
assumeTrue(SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false));
|
||||
mWindowManager = getTestContext().getSystemService(WindowManager.class);
|
||||
}
|
||||
|
||||
/** return testable context */
|
||||
protected TestableContext getTestContext() {
|
||||
return mTestContext;
|
||||
|
||||
@@ -65,7 +65,6 @@ public class OneHandedTutorialHandlerTest extends OneHandedTestCase {
|
||||
@Mock
|
||||
OneHandedUiEventLogger mMockUiEventLogger;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
@@ -73,7 +72,8 @@ public class OneHandedTutorialHandlerTest extends OneHandedTestCase {
|
||||
|
||||
when(mMockDisplayAreaOrganizer.getDisplayAreaTokenMap()).thenReturn(new ArrayMap<>());
|
||||
mOneHandedController = new OneHandedController(
|
||||
getContext(),
|
||||
mContext,
|
||||
mWindowManager,
|
||||
mMockDisplayController,
|
||||
mMockBackgroundOrganizer,
|
||||
mMockDisplayAreaOrganizer,
|
||||
|
||||
@@ -328,12 +328,12 @@ public abstract class WMShellBaseModule {
|
||||
@WMSingleton
|
||||
@Provides
|
||||
static Optional<OneHandedController> provideOneHandedController(Context context,
|
||||
DisplayController displayController, TaskStackListenerImpl taskStackListener,
|
||||
UiEventLogger uiEventLogger,
|
||||
WindowManager windowManager, DisplayController displayController,
|
||||
TaskStackListenerImpl taskStackListener, UiEventLogger uiEventLogger,
|
||||
@ShellMainThread ShellExecutor mainExecutor,
|
||||
@ShellMainThread Handler mainHandler) {
|
||||
return Optional.ofNullable(OneHandedController.create(context, displayController,
|
||||
taskStackListener, uiEventLogger, mainExecutor, mainHandler));
|
||||
return Optional.ofNullable(OneHandedController.create(context, windowManager,
|
||||
displayController, taskStackListener, uiEventLogger, mainExecutor, mainHandler));
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user