resolve merge conflicts of 1104b94dbc to master

Test: I solemnly swear I tested this conflict resolution.
Change-Id: I537fb871134f801ec9489b48fe748b525e5a65ea
This commit is contained in:
Yohann Roussel
2017-06-06 12:01:43 +02:00
3 changed files with 54 additions and 2 deletions

View File

@@ -20,21 +20,27 @@ import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.hardware.Sensor; import android.hardware.Sensor;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
public class DoubleTwistPreferenceController extends GesturePreferenceController { public class DoubleTwistPreferenceController extends GesturePreferenceController {
private static final String PREF_KEY_VIDEO = "gesture_double_twist_video"; private static final String PREF_KEY_VIDEO = "gesture_double_twist_video";
private final String mDoubleTwistPrefKey; private final String mDoubleTwistPrefKey;
private final UserManager mUserManager;
public DoubleTwistPreferenceController(Context context, Lifecycle lifecycle, String key) { public DoubleTwistPreferenceController(Context context, Lifecycle lifecycle, String key) {
super(context, lifecycle); super(context, lifecycle);
mDoubleTwistPrefKey = key; mDoubleTwistPrefKey = key;
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
} }
@Override @Override
@@ -55,9 +61,14 @@ public class DoubleTwistPreferenceController extends GesturePreferenceController
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean enabled = (boolean) newValue; final int enabled = (boolean) newValue ? 1 : 0;
Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled ? 1 : 0); Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled);
final int managedProfileUserId = getManagedProfileUserId();
if (managedProfileUserId != UserHandle.USER_NULL) {
Settings.Secure.putIntForUser(mContext.getContentResolver(),
Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled, managedProfileUserId);
}
return true; return true;
} }
@@ -68,6 +79,11 @@ public class DoubleTwistPreferenceController extends GesturePreferenceController
return doubleTwistEnabled != 0; return doubleTwistEnabled != 0;
} }
@VisibleForTesting
int getManagedProfileUserId() {
return Utils.getManagedProfileId(mUserManager, UserHandle.myUserId());
}
private boolean hasSensor(int nameResId, int vendorResId) { private boolean hasSensor(int nameResId, int vendorResId) {
final Resources resources = mContext.getResources(); final Resources resources = mContext.getResources();
final String name = resources.getString(nameResId); final String name = resources.getString(nameResId);

View File

@@ -19,11 +19,14 @@ package com.android.settings.gestures;
import android.content.Context; import android.content.Context;
import android.hardware.Sensor; import android.hardware.Sensor;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -39,7 +42,9 @@ import java.util.List;
import static android.provider.Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED; import static android.provider.Settings.Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@@ -56,9 +61,15 @@ public class DoubleTwistPreferenceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mock(UserManager.class));
mController = new DoubleTwistPreferenceController(mContext, null, KEY_DOUBLE_TWIST); mController = new DoubleTwistPreferenceController(mContext, null, KEY_DOUBLE_TWIST);
} }
@After
public void tearDown() {
ShadowSecureSettings.clear();
}
@Test @Test
public void isAvailable_hasSensor_shouldReturnTrue() { public void isAvailable_hasSensor_shouldReturnTrue() {
// Mock sensors // Mock sensors
@@ -91,6 +102,27 @@ public class DoubleTwistPreferenceControllerTest {
assertThat(mController.isAvailable()).isFalse(); assertThat(mController.isAvailable()).isFalse();
} }
@Test
@Config(shadows = {ShadowSecureSettings.class})
public void onPreferenceChange_hasWorkProfile_shouldUpdateSettingForWorkProfileUser() {
final int managedId = 2;
ShadowSecureSettings.putIntForUser(
null, CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 0, managedId);
DoubleTwistPreferenceController controller =
spy(new DoubleTwistPreferenceController(mContext, null, KEY_DOUBLE_TWIST));
doReturn(managedId).when(controller).getManagedProfileUserId();
// enable the gesture
controller.onPreferenceChange(null, true);
assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(),
CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 0, managedId)).isEqualTo(1);
// disable the gesture
controller.onPreferenceChange(null, false);
assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(),
CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, 1, managedId)).isEqualTo(0);
}
@Test @Test
public void testSwitchEnabled_configIsSet_shouldReturnTrue() { public void testSwitchEnabled_configIsSet_shouldReturnTrue() {
// Set the setting to be enabled. // Set the setting to be enabled.

View File

@@ -68,4 +68,8 @@ public class ShadowSecureSettings {
Integer value = (Integer) mValueMap.get(name); Integer value = (Integer) mValueMap.get(name);
return value == null ? defaultValue : value; return value == null ? defaultValue : value;
} }
public static void clear() {
mValueMap.clear();
}
} }