summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java53
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java18
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java12
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedSettingsUtilTest.java47
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java3
5 files changed, 69 insertions, 64 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
index 44dad57ea3b8..c1a93ce753a6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
@@ -73,6 +73,7 @@ public class OneHandedController {
private final Context mContext;
private final DisplayController mDisplayController;
private final OneHandedGestureHandler mGestureHandler;
+ private final OneHandedSettingsUtil mOneHandedSettingsUtil;
private final OneHandedTimeoutHandler mTimeoutHandler;
private final OneHandedTouchHandler mTouchHandler;
private final OneHandedTutorialHandler mTutorialHandler;
@@ -108,8 +109,12 @@ public class OneHandedController {
new AccessibilityManager.AccessibilityStateChangeListener() {
@Override
public void onAccessibilityStateChanged(boolean enabled) {
+ if (mOneHandedSettingsUtil == null) {
+ Slog.w(TAG, "mOneHandedSettingsUtil may not instantiate yet");
+ return;
+ }
if (enabled) {
- final int mOneHandedTimeout = OneHandedSettingsUtil
+ final int mOneHandedTimeout = mOneHandedSettingsUtil
.getSettingsOneHandedModeTimeout(mContext.getContentResolver());
final int timeout = mAccessibilityManager
.getRecommendedTimeoutMillis(mOneHandedTimeout * 1000
@@ -117,7 +122,7 @@ public class OneHandedController {
AccessibilityManager.FLAG_CONTENT_CONTROLS);
mTimeoutHandler.setTimeout(timeout / 1000);
} else {
- mTimeoutHandler.setTimeout(OneHandedSettingsUtil
+ mTimeoutHandler.setTimeout(mOneHandedSettingsUtil
.getSettingsOneHandedModeTimeout(mContext.getContentResolver()));
}
}
@@ -166,13 +171,14 @@ public class OneHandedController {
OneHandedDisplayAreaOrganizer organizer = new OneHandedDisplayAreaOrganizer(
context, windowManager, animationController, tutorialHandler,
oneHandedBackgroundPanelOrganizer, mainExecutor);
+ OneHandedSettingsUtil settingsUtil = new OneHandedSettingsUtil();
OneHandedUiEventLogger oneHandedUiEventsLogger = new OneHandedUiEventLogger(uiEventLogger);
IOverlayManager overlayManager = IOverlayManager.Stub.asInterface(
ServiceManager.getService(Context.OVERLAY_SERVICE));
return new OneHandedController(context, windowManager, displayController,
oneHandedBackgroundPanelOrganizer, organizer, touchHandler, tutorialHandler,
- gestureHandler, timeoutHandler, oneHandedUiEventsLogger, overlayManager,
- taskStackListener, mainExecutor, mainHandler);
+ gestureHandler, settingsUtil, timeoutHandler, oneHandedUiEventsLogger,
+ overlayManager, taskStackListener, mainExecutor, mainHandler);
}
@VisibleForTesting
@@ -184,6 +190,7 @@ public class OneHandedController {
OneHandedTouchHandler touchHandler,
OneHandedTutorialHandler tutorialHandler,
OneHandedGestureHandler gestureHandler,
+ OneHandedSettingsUtil settingsUtil,
OneHandedTimeoutHandler timeoutHandler,
OneHandedUiEventLogger uiEventsLogger,
IOverlayManager overlayManager,
@@ -191,6 +198,7 @@ public class OneHandedController {
ShellExecutor mainExecutor,
Handler mainHandler) {
mContext = context;
+ mOneHandedSettingsUtil = settingsUtil;
mWindowManager = windowManager;
mBackgroundPanelOrganizer = backgroundPanelOrganizer;
mDisplayAreaOrganizer = displayAreaOrganizer;
@@ -209,10 +217,10 @@ public class OneHandedController {
final int sysPropPercentageConfig = SystemProperties.getInt(
ONE_HANDED_MODE_OFFSET_PERCENTAGE, Math.round(offsetPercentageConfig * 100.0f));
mOffSetFraction = sysPropPercentageConfig / 100.0f;
- mIsOneHandedEnabled = OneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
+ mIsOneHandedEnabled = mOneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
context.getContentResolver());
mIsSwipeToNotificationEnabled =
- OneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
+ mOneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
context.getContentResolver());
mTimeoutHandler = timeoutHandler;
@@ -325,25 +333,25 @@ public class OneHandedController {
}
private void setupSettingObservers() {
- OneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.ONE_HANDED_MODE_ENABLED,
+ mOneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.ONE_HANDED_MODE_ENABLED,
mContext.getContentResolver(), mEnabledObserver);
- OneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.ONE_HANDED_MODE_TIMEOUT,
+ mOneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.ONE_HANDED_MODE_TIMEOUT,
mContext.getContentResolver(), mTimeoutObserver);
- OneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.TAPS_APP_TO_EXIT,
+ mOneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.TAPS_APP_TO_EXIT,
mContext.getContentResolver(), mTaskChangeExitObserver);
- OneHandedSettingsUtil.registerSettingsKeyObserver(
+ mOneHandedSettingsUtil.registerSettingsKeyObserver(
Settings.Secure.SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED,
mContext.getContentResolver(), mSwipeToNotificationEnabledObserver);
}
private void updateSettings() {
- setOneHandedEnabled(OneHandedSettingsUtil
+ setOneHandedEnabled(mOneHandedSettingsUtil
.getSettingsOneHandedModeEnabled(mContext.getContentResolver()));
- mTimeoutHandler.setTimeout(OneHandedSettingsUtil
+ mTimeoutHandler.setTimeout(mOneHandedSettingsUtil
.getSettingsOneHandedModeTimeout(mContext.getContentResolver()));
- setTaskChangeToExit(OneHandedSettingsUtil
+ setTaskChangeToExit(mOneHandedSettingsUtil
.getSettingsTapsAppToExit(mContext.getContentResolver()));
- setSwipeToNotificationEnabled(OneHandedSettingsUtil
+ setSwipeToNotificationEnabled(mOneHandedSettingsUtil
.getSettingsSwipeToNotificationEnabled(mContext.getContentResolver()));
}
@@ -358,7 +366,7 @@ public class OneHandedController {
@VisibleForTesting
void onEnabledSettingChanged() {
- final boolean enabled = OneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
+ final boolean enabled = mOneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
mContext.getContentResolver());
mOneHandedUiEventLogger.writeEvent(enabled
? OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_ENABLED_ON
@@ -368,13 +376,13 @@ public class OneHandedController {
// Also checks swipe to notification settings since they all need gesture overlay.
setEnabledGesturalOverlay(
- enabled || OneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
+ enabled || mOneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
mContext.getContentResolver()));
}
@VisibleForTesting
void onTimeoutSettingChanged() {
- final int newTimeout = OneHandedSettingsUtil.getSettingsOneHandedModeTimeout(
+ final int newTimeout = mOneHandedSettingsUtil.getSettingsOneHandedModeTimeout(
mContext.getContentResolver());
int metricsId = OneHandedUiEventLogger.OneHandedSettingsTogglesEvent.INVALID.getId();
switch (newTimeout) {
@@ -403,7 +411,7 @@ public class OneHandedController {
@VisibleForTesting
void onTaskChangeExitSettingChanged() {
- final boolean enabled = OneHandedSettingsUtil.getSettingsTapsAppToExit(
+ final boolean enabled = mOneHandedSettingsUtil.getSettingsTapsAppToExit(
mContext.getContentResolver());
mOneHandedUiEventLogger.writeEvent(enabled
? OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_ON
@@ -415,13 +423,13 @@ public class OneHandedController {
@VisibleForTesting
void onSwipeToNotificationEnabledSettingChanged() {
final boolean enabled =
- OneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
+ mOneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled(
mContext.getContentResolver());
setSwipeToNotificationEnabled(enabled);
// Also checks one handed mode settings since they all need gesture overlay.
setEnabledGesturalOverlay(
- enabled || OneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
+ enabled || mOneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
mContext.getContentResolver()));
}
@@ -480,7 +488,8 @@ public class OneHandedController {
}
private void setupGesturalOverlay() {
- if (!OneHandedSettingsUtil.getSettingsOneHandedModeEnabled(mContext.getContentResolver())) {
+ if (!mOneHandedSettingsUtil.getSettingsOneHandedModeEnabled(
+ mContext.getContentResolver())) {
return;
}
@@ -551,7 +560,7 @@ public class OneHandedController {
mTutorialHandler.dump(pw);
}
- OneHandedSettingsUtil.dump(pw, innerPrefix, mContext.getContentResolver());
+ mOneHandedSettingsUtil.dump(pw, innerPrefix, mContext.getContentResolver());
if (mOverlayManager != null) {
OverlayInfo info = null;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java
index f8217c64e53d..4768cf58152b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java
@@ -67,7 +67,7 @@ public final class OneHandedSettingsUtil {
* @param observer Observer from caller
* @return uri key for observing
*/
- public static Uri registerSettingsKeyObserver(String key, ContentResolver resolver,
+ public Uri registerSettingsKeyObserver(String key, ContentResolver resolver,
ContentObserver observer) {
Uri uriKey = null;
uriKey = Settings.Secure.getUriFor(key);
@@ -83,7 +83,7 @@ public final class OneHandedSettingsUtil {
* @param resolver ContentResolver of context
* @param observer preference key change observer
*/
- public static void unregisterSettingsKeyObserver(ContentResolver resolver,
+ public void unregisterSettingsKeyObserver(ContentResolver resolver,
ContentObserver observer) {
if (resolver != null) {
resolver.unregisterContentObserver(observer);
@@ -95,7 +95,7 @@ public final class OneHandedSettingsUtil {
*
* @return enable or disable one handed mode flag.
*/
- public static boolean getSettingsOneHandedModeEnabled(ContentResolver resolver) {
+ public boolean getSettingsOneHandedModeEnabled(ContentResolver resolver) {
return Settings.Secure.getInt(resolver,
Settings.Secure.ONE_HANDED_MODE_ENABLED, 0 /* Disabled */) == 1;
}
@@ -105,7 +105,7 @@ public final class OneHandedSettingsUtil {
*
* @return enable or disable taps app exit.
*/
- public static boolean getSettingsTapsAppToExit(ContentResolver resolver) {
+ public boolean getSettingsTapsAppToExit(ContentResolver resolver) {
return Settings.Secure.getInt(resolver,
Settings.Secure.TAPS_APP_TO_EXIT, 0) == 1;
}
@@ -116,7 +116,7 @@ public final class OneHandedSettingsUtil {
*
* @return timeout value in seconds.
*/
- public static @OneHandedTimeout int getSettingsOneHandedModeTimeout(ContentResolver resolver) {
+ public @OneHandedTimeout int getSettingsOneHandedModeTimeout(ContentResolver resolver) {
return Settings.Secure.getInt(resolver,
Settings.Secure.ONE_HANDED_MODE_TIMEOUT, ONE_HANDED_TIMEOUT_MEDIUM_IN_SECONDS);
}
@@ -124,12 +124,12 @@ public final class OneHandedSettingsUtil {
/**
* Returns whether swipe bottom to notification gesture enabled or not.
*/
- public static boolean getSettingsSwipeToNotificationEnabled(ContentResolver resolver) {
+ public boolean getSettingsSwipeToNotificationEnabled(ContentResolver resolver) {
return Settings.Secure.getInt(resolver,
Settings.Secure.SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 1) == 1;
}
- protected static void dump(PrintWriter pw, String prefix, ContentResolver resolver) {
+ void dump(PrintWriter pw, String prefix, ContentResolver resolver) {
final String innerPrefix = prefix + " ";
pw.println(prefix + TAG);
pw.print(innerPrefix + "isOneHandedModeEnable=");
@@ -139,6 +139,6 @@ public final class OneHandedSettingsUtil {
pw.print(innerPrefix + "tapsAppToExit=");
pw.println(getSettingsTapsAppToExit(resolver));
}
-
- private OneHandedSettingsUtil() {}
+ public OneHandedSettingsUtil() {
+ }
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java
index 39a6e5fe7b75..bd5fe2bcbdad 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java
@@ -66,6 +66,8 @@ public class OneHandedControllerTest extends OneHandedTestCase {
@Mock
OneHandedGestureHandler mMockGestureHandler;
@Mock
+ OneHandedSettingsUtil mMockSettingsUitl;
+ @Mock
OneHandedUiEventLogger mMockUiEventLogger;
@Mock
IOverlayManager mMockOverlayManager;
@@ -78,6 +80,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
@Mock
Handler mMockShellMainHandler;
+ final boolean mDefaultEnabled = true;
final boolean mDefaultSwipeToNotificationEnabled = false;
final boolean mDefaultTapAppToExitEnabled = true;
@@ -91,6 +94,14 @@ public class OneHandedControllerTest extends OneHandedTestCase {
when(mMockDisplayAreaOrganizer.isInOneHanded()).thenReturn(false);
when(mMockDisplayAreaOrganizer.getDisplayAreaTokenMap()).thenReturn(new ArrayMap<>());
when(mMockBackgroundOrganizer.getBackgroundSurface()).thenReturn(mMockLeash);
+ when(mMockSettingsUitl.getSettingsOneHandedModeEnabled(any())).thenReturn(
+ mDefaultEnabled);
+ when(mMockSettingsUitl.getSettingsOneHandedModeTimeout(any())).thenReturn(
+ OneHandedSettingsUtil.ONE_HANDED_TIMEOUT_MEDIUM_IN_SECONDS);
+ when(mMockSettingsUitl.getSettingsTapsAppToExit(any())).thenReturn(
+ mDefaultTapAppToExitEnabled);
+ when(mMockSettingsUitl.getSettingsSwipeToNotificationEnabled(any())).thenReturn(
+ mDefaultSwipeToNotificationEnabled);
mSpiedOneHandedController = spy(new OneHandedController(
mContext,
@@ -101,6 +112,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
mMockTouchHandler,
mMockTutorialHandler,
mMockGestureHandler,
+ mMockSettingsUitl,
mSpiedTimeoutHandler,
mMockUiEventLogger,
mMockOverlayManager,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedSettingsUtilTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedSettingsUtilTest.java
index 48e7179da927..1e6c41af4397 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedSettingsUtilTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedSettingsUtilTest.java
@@ -16,12 +16,11 @@
package com.android.wm.shell.onehanded;
-import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
import android.content.ContentResolver;
import android.database.ContentObserver;
-import android.net.Uri;
-import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import androidx.test.filters.SmallTest;
@@ -29,48 +28,30 @@ import androidx.test.filters.SmallTest;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
@SmallTest
@RunWith(AndroidTestingRunner.class)
public class OneHandedSettingsUtilTest extends OneHandedTestCase {
- ContentResolver mContentResolver;
- ContentObserver mContentObserver;
- boolean mOnChanged;
+ OneHandedSettingsUtil mSettingsUtil;
+
+ @Mock
+ ContentResolver mMockContentResolver;
+ @Mock
+ ContentObserver mMockContentObserver;
@Before
public void setUp() {
- mContentResolver = mContext.getContentResolver();
- mContentObserver = new ContentObserver(mContext.getMainThreadHandler()) {
- @Override
- public void onChange(boolean selfChange) {
- super.onChange(selfChange);
- mOnChanged = true;
- }
- };
- }
-
- @Test
- public void testRegisterSecureKeyObserver() {
- final Uri result = OneHandedSettingsUtil.registerSettingsKeyObserver(
- Settings.Secure.TAPS_APP_TO_EXIT, mContentResolver, mContentObserver);
+ MockitoAnnotations.initMocks(this);
- assertThat(result).isNotNull();
-
- OneHandedSettingsUtil.registerSettingsKeyObserver(
- Settings.Secure.TAPS_APP_TO_EXIT, mContentResolver, mContentObserver);
+ mSettingsUtil = new OneHandedSettingsUtil();
}
@Test
public void testUnregisterSecureKeyObserver() {
- OneHandedSettingsUtil.registerSettingsKeyObserver(
- Settings.Secure.TAPS_APP_TO_EXIT, mContentResolver, mContentObserver);
- OneHandedSettingsUtil.unregisterSettingsKeyObserver(mContentResolver, mContentObserver);
-
- assertThat(mOnChanged).isFalse();
-
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.TAPS_APP_TO_EXIT, 0);
+ mSettingsUtil.unregisterSettingsKeyObserver(mMockContentResolver, mMockContentObserver);
- assertThat(mOnChanged).isFalse();
+ verify(mMockContentResolver).unregisterContentObserver(any());
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java
index 69c537c2efbe..f586dda145d7 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java
@@ -64,6 +64,8 @@ public class OneHandedTutorialHandlerTest extends OneHandedTestCase {
Handler mMockShellMainHandler;
@Mock
OneHandedUiEventLogger mMockUiEventLogger;
+ @Mock
+ OneHandedSettingsUtil mMockSettingsUtil;
@Before
public void setUp() {
@@ -80,6 +82,7 @@ public class OneHandedTutorialHandlerTest extends OneHandedTestCase {
mMockTouchHandler,
mMockTutorialHandler,
mMockGestureHandler,
+ mMockSettingsUtil,
mTimeoutHandler,
mMockUiEventLogger,
mMockOverlayManager,