Refactoring DoubleTwistPreferenceController.
Made the availability and setting logic static so that
it can be invoked without creating a controller.
Bug: 62022517
Test: robotests
Change-Id: I3a51c61849e6ba8b8aa850ca22d666a9f84d252f
diff --git a/src/com/android/settings/gestures/DoubleTwistPreferenceController.java b/src/com/android/settings/gestures/DoubleTwistPreferenceController.java
index ac050be..922f74b 100644
--- a/src/com/android/settings/gestures/DoubleTwistPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTwistPreferenceController.java
@@ -52,7 +52,7 @@
|| prefs.getBoolean(DoubleTwistGestureSettings.PREF_KEY_SUGGESTION_COMPLETE, false);
}
- private static boolean isGestureAvailable(Context context) {
+ public static boolean isGestureAvailable(Context context) {
final Resources resources = context.getResources();
final String name = resources.getString(R.string.gesture_double_twist_sensor_name);
final String vendor = resources.getString(R.string.gesture_double_twist_sensor_vendor);
@@ -86,25 +86,30 @@
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final int enabled = (boolean) newValue ? ON : OFF;
- Settings.Secure.putInt(mContext.getContentResolver(),
+ setDoubleTwistPreference(mContext, mUserManager, enabled);
+ return true;
+ }
+
+ public static void setDoubleTwistPreference(Context context, UserManager userManager,
+ int enabled) {
+ Settings.Secure.putInt(context.getContentResolver(),
Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled);
- final int managedProfileUserId = getManagedProfileUserId();
+ final int managedProfileUserId = getManagedProfileId(userManager);
if (managedProfileUserId != UserHandle.USER_NULL) {
- Settings.Secure.putIntForUser(mContext.getContentResolver(),
+ Settings.Secure.putIntForUser(context.getContentResolver(),
Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled, managedProfileUserId);
}
- return true;
}
@Override
protected boolean isSwitchPrefEnabled() {
final int doubleTwistEnabled = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 1);
+ Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, ON);
return doubleTwistEnabled != 0;
}
@VisibleForTesting
- int getManagedProfileUserId() {
- return Utils.getManagedProfileId(mUserManager, UserHandle.myUserId());
+ public static int getManagedProfileId(UserManager userManager) {
+ return Utils.getManagedProfileId(userManager, UserHandle.myUserId());
}
}
diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java
index 7c549f6..f9ac02e 100644
--- a/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/DoubleTwistPreferenceControllerTest.java
@@ -41,11 +41,12 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
+import com.android.settings.testutils.shadow.ShadowDoubleTwistPreferenceController;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class DoubleTwistPreferenceControllerTest {
@@ -102,14 +103,16 @@
}
@Test
- @Config(shadows = {ShadowSecureSettings.class})
+ @Config(shadows = {
+ ShadowDoubleTwistPreferenceController.class,
+ ShadowSecureSettings.class})
public void onPreferenceChange_hasWorkProfile_shouldUpdateSettingForWorkProfileUser() {
final int managedId = 2;
ShadowSecureSettings.putIntForUser(
null, Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 0, managedId);
DoubleTwistPreferenceController controller =
spy(new DoubleTwistPreferenceController(mContext, null, KEY_DOUBLE_TWIST));
- doReturn(managedId).when(controller).getManagedProfileUserId();
+ ShadowDoubleTwistPreferenceController.setManagedProfileId(managedId);
// enable the gesture
controller.onPreferenceChange(null, true);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDoubleTwistPreferenceController.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDoubleTwistPreferenceController.java
new file mode 100644
index 0000000..2f37ec8
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDoubleTwistPreferenceController.java
@@ -0,0 +1,28 @@
+package com.android.settings.testutils.shadow;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.settings.gestures.DoubleTwistPreferenceController;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+@Implements(DoubleTwistPreferenceController.class)
+public class ShadowDoubleTwistPreferenceController {
+ private static int sManagedProfileId = UserHandle.USER_NULL;
+ @Implementation
+ public static boolean isGestureAvailable(Context context) {
+ return true;
+ }
+
+ @Implementation
+ public static int getManagedProfileId(UserManager userManager) {
+ return sManagedProfileId;
+ }
+
+ public static void setManagedProfileId(int managedProfileId) {
+ sManagedProfileId = managedProfileId;
+ }
+}