Fix auto-rotate summary not updating on devices without smart-auto-rotate

Test: locally with crosshatch

Bug: 181585193
Change-Id: I571b10556ff2f4f4d6ff960fcfdf7866405d5ee5
This commit is contained in:
Abel Tesfaye
2021-03-11 20:16:30 +00:00
parent 38e0dae439
commit e57c87528d
2 changed files with 25 additions and 13 deletions

View File

@@ -21,7 +21,6 @@ import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
import android.content.Context; import android.content.Context;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -34,8 +33,6 @@ import com.android.settings.core.BasePreferenceController;
*/ */
public class SmartAutoRotatePreferenceController extends BasePreferenceController { public class SmartAutoRotatePreferenceController extends BasePreferenceController {
private static final String TAG = "SmartAutoRotatePreferenceController";
public SmartAutoRotatePreferenceController(Context context, String preferenceKey) { public SmartAutoRotatePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
} }
@@ -54,16 +51,12 @@ public class SmartAutoRotatePreferenceController extends BasePreferenceControlle
public CharSequence getSummary() { public CharSequence getSummary() {
int activeStringId = R.string.auto_rotate_option_off; int activeStringId = R.string.auto_rotate_option_off;
if (!RotationPolicy.isRotationLocked(mContext)) { if (!RotationPolicy.isRotationLocked(mContext)) {
try { final int cameraRotate = Settings.Secure.getIntForUser(
final int cameraRotate = Settings.Secure.getIntForUser( mContext.getContentResolver(),
mContext.getContentResolver(), CAMERA_AUTOROTATE,
CAMERA_AUTOROTATE, 0, UserHandle.USER_CURRENT);
UserHandle.USER_CURRENT); activeStringId = cameraRotate == 1 ? R.string.auto_rotate_option_face_based
activeStringId = cameraRotate == 1 ? R.string.auto_rotate_option_face_based : R.string.auto_rotate_option_on;
: R.string.auto_rotate_option_on;
} catch (Settings.SettingNotFoundException e) {
Log.w(TAG, "CAMERA_AUTOROTATE setting not found", e);
}
} }
return mContext.getString(activeStringId); return mContext.getString(activeStringId);
} }

View File

@@ -107,6 +107,25 @@ public class SmartAutoRotatePreferenceControllerTest {
assertThat(mController.getSummary()).isEqualTo("Off"); assertThat(mController.getSummary()).isEqualTo("Off");
} }
@Test
public void updatePreference_settingsIsOff_noSmartAuto_shouldTurnOffToggle() {
disableAutoRotation();
Settings.Secure.putStringForUser(mContentResolver,
CAMERA_AUTOROTATE, null, UserHandle.USER_CURRENT);
assertThat(mController.getSummary()).isEqualTo("Off");
}
@Test
public void updatePreference_settingsIsOn_noSmartAuto_shouldTurnOnToggle() {
enableAutoRotation();
Settings.Secure.putStringForUser(mContentResolver,
CAMERA_AUTOROTATE, null, UserHandle.USER_CURRENT);
assertThat(mController.getSummary()).isEqualTo("On");
}
@Test @Test
public void testGetAvailabilityStatus() { public void testGetAvailabilityStatus() {
assertThat(mController.getAvailabilityStatus()).isEqualTo(BasePreferenceController assertThat(mController.getAvailabilityStatus()).isEqualTo(BasePreferenceController