From f5819fc80cfd14d11977bfcf64b33db34a3c9d27 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 18 Feb 2021 23:19:22 +0000 Subject: [PATCH] Use EmergencyNumberUtils to get/set emergency settings. EmergencyNumberUtils now contains centralized logic for interacting with emergency gesture settings. Settings UI does not need to pay attention to underlying data access, permission controler, etc etc. Bug: 180236600 Test: robotests Change-Id: If641ee36f237d153f1d790251af408969379a57a --- .../EmergencyGesturePreferenceController.java | 13 +++++------ ...gencyGestureSoundPreferenceController.java | 15 +++++-------- ...rgencyGesturePreferenceControllerTest.java | 21 +++++++++--------- ...yGestureSoundPreferenceControllerTest.java | 22 +++++++++---------- 4 files changed, 33 insertions(+), 38 deletions(-) diff --git a/src/com/android/settings/emergency/EmergencyGesturePreferenceController.java b/src/com/android/settings/emergency/EmergencyGesturePreferenceController.java index a966ab309e9..b6135ab2740 100644 --- a/src/com/android/settings/emergency/EmergencyGesturePreferenceController.java +++ b/src/com/android/settings/emergency/EmergencyGesturePreferenceController.java @@ -17,7 +17,6 @@ package com.android.settings.emergency; import android.content.Context; -import android.provider.Settings; import android.widget.Switch; import androidx.annotation.VisibleForTesting; @@ -26,6 +25,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settingslib.emergencynumber.EmergencyNumberUtils; import com.android.settingslib.widget.MainSwitchPreference; import com.android.settingslib.widget.OnMainSwitchChangeListener; @@ -36,16 +36,13 @@ public class EmergencyGesturePreferenceController extends BasePreferenceControll OnMainSwitchChangeListener { @VisibleForTesting - static final int ON = 1; - @VisibleForTesting - static final int OFF = 0; - - private static final String SECURE_KEY = Settings.Secure.EMERGENCY_GESTURE_ENABLED; + EmergencyNumberUtils mEmergencyNumberUtils; private MainSwitchPreference mSwitchBar; public EmergencyGesturePreferenceController(Context context, String key) { super(context, key); + mEmergencyNumberUtils = new EmergencyNumberUtils(context); } @Override @@ -71,11 +68,11 @@ public class EmergencyGesturePreferenceController extends BasePreferenceControll @VisibleForTesting public boolean isChecked() { - return Settings.Secure.getInt(mContext.getContentResolver(), SECURE_KEY, ON) == ON; + return mEmergencyNumberUtils.getEmergencyGestureEnabled(); } @Override public void onSwitchChanged(Switch switchView, boolean isChecked) { - Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY, isChecked ? ON : OFF); + mEmergencyNumberUtils.setEmergencyGestureEnabled(isChecked); } } diff --git a/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java b/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java index d5896d8b111..f9fb647cbb6 100644 --- a/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java +++ b/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceController.java @@ -17,12 +17,12 @@ package com.android.settings.emergency; import android.content.Context; -import android.provider.Settings; import androidx.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settingslib.emergencynumber.EmergencyNumberUtils; /** * Preference controller for emergency sos gesture setting @@ -30,14 +30,11 @@ import com.android.settings.core.TogglePreferenceController; public class EmergencyGestureSoundPreferenceController extends TogglePreferenceController { @VisibleForTesting - static final int ON = 1; - @VisibleForTesting - static final int OFF = 0; - - private static final String SECURE_KEY = Settings.Secure.EMERGENCY_GESTURE_SOUND_ENABLED; + EmergencyNumberUtils mEmergencyNumberUtils; public EmergencyGestureSoundPreferenceController(Context context, String key) { super(context, key); + mEmergencyNumberUtils = new EmergencyNumberUtils(context); } private static boolean isGestureAvailable(Context context) { @@ -57,12 +54,12 @@ public class EmergencyGestureSoundPreferenceController extends TogglePreferenceC @Override public boolean isChecked() { - return Settings.Secure.getInt(mContext.getContentResolver(), SECURE_KEY, ON) == ON; + return mEmergencyNumberUtils.getEmergencyGestureSoundEnabled(); } @Override public boolean setChecked(boolean isChecked) { - return Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY, - isChecked ? ON : OFF); + mEmergencyNumberUtils.setEmergencySoundEnabled(isChecked); + return true; } } diff --git a/tests/robotests/src/com/android/settings/emergency/EmergencyGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/emergency/EmergencyGesturePreferenceControllerTest.java index 542301cc95b..bf30ebbaca1 100644 --- a/tests/robotests/src/com/android/settings/emergency/EmergencyGesturePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/emergency/EmergencyGesturePreferenceControllerTest.java @@ -18,24 +18,25 @@ package com.android.settings.emergency; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; -import static com.android.settings.emergency.EmergencyGesturePreferenceController.OFF; -import static com.android.settings.emergency.EmergencyGesturePreferenceController.ON; import static com.google.common.truth.Truth.assertThat; -import android.content.ContentResolver; +import static org.mockito.Mockito.when; + import android.content.Context; -import android.provider.Settings; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.testutils.shadow.SettingsShadowResources; +import com.android.settingslib.emergencynumber.EmergencyNumberUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @@ -43,16 +44,18 @@ import org.robolectric.annotation.Config; @Config(shadows = SettingsShadowResources.class) public class EmergencyGesturePreferenceControllerTest { + @Mock + private EmergencyNumberUtils mEmergencyNumberUtils; private Context mContext; - private ContentResolver mContentResolver; private EmergencyGesturePreferenceController mController; private static final String PREF_KEY = "gesture_emergency_button"; @Before public void setUp() { + MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext(); - mContentResolver = mContext.getContentResolver(); mController = new EmergencyGesturePreferenceController(mContext, PREF_KEY); + mController.mEmergencyNumberUtils = mEmergencyNumberUtils; } @After @@ -81,8 +84,7 @@ public class EmergencyGesturePreferenceControllerTest { @Test public void isChecked_configIsNotSet_shouldReturnTrue() { // Set the setting to be enabled. - Settings.Secure.putInt(mContentResolver, Settings.Secure.EMERGENCY_GESTURE_ENABLED, ON); - mController = new EmergencyGesturePreferenceController(mContext, PREF_KEY); + when(mEmergencyNumberUtils.getEmergencyGestureEnabled()).thenReturn(true); assertThat(mController.isChecked()).isTrue(); } @@ -90,8 +92,7 @@ public class EmergencyGesturePreferenceControllerTest { @Test public void isChecked_configIsSet_shouldReturnFalse() { // Set the setting to be disabled. - Settings.Secure.putInt(mContentResolver, Settings.Secure.EMERGENCY_GESTURE_ENABLED, OFF); - mController = new EmergencyGesturePreferenceController(mContext, PREF_KEY); + when(mEmergencyNumberUtils.getEmergencyGestureEnabled()).thenReturn(false); assertThat(mController.isChecked()).isFalse(); } diff --git a/tests/robotests/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceControllerTest.java index 6f3884eb7be..f8f2ed1ff48 100644 --- a/tests/robotests/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/emergency/EmergencyGestureSoundPreferenceControllerTest.java @@ -16,40 +16,42 @@ package com.android.settings.emergency; -import static com.android.settings.emergency.EmergencyGestureSoundPreferenceController.OFF; -import static com.android.settings.emergency.EmergencyGestureSoundPreferenceController.ON; import static com.google.common.truth.Truth.assertThat; -import android.content.ContentResolver; +import static org.mockito.Mockito.when; + import android.content.Context; -import android.provider.Settings; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.testutils.shadow.SettingsShadowResources; +import com.android.settingslib.emergencynumber.EmergencyNumberUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(shadows = SettingsShadowResources.class) public class EmergencyGestureSoundPreferenceControllerTest { - + @Mock + private EmergencyNumberUtils mEmergencyNumberUtils; private Context mContext; - private ContentResolver mContentResolver; private EmergencyGestureSoundPreferenceController mController; @Before public void setUp() { + MockitoAnnotations.initMocks(this); mContext = ApplicationProvider.getApplicationContext(); - mContentResolver = mContext.getContentResolver(); mController = new EmergencyGestureSoundPreferenceController(mContext, "test_key"); + mController.mEmergencyNumberUtils = mEmergencyNumberUtils; } @After @@ -78,8 +80,7 @@ public class EmergencyGestureSoundPreferenceControllerTest { @Test public void isChecked_configIsSet_shouldReturnTrue() { // Set the setting to be enabled. - Settings.Secure.putInt(mContentResolver, Settings.Secure.EMERGENCY_GESTURE_SOUND_ENABLED, - ON); + when(mEmergencyNumberUtils.getEmergencyGestureSoundEnabled()).thenReturn(true); assertThat(mController.isChecked()).isTrue(); } @@ -87,8 +88,7 @@ public class EmergencyGestureSoundPreferenceControllerTest { @Test public void isChecked_configIsSetToFalse_shouldReturnFalse() { // Set the setting to be disabled. - Settings.Secure.putInt(mContentResolver, Settings.Secure.EMERGENCY_GESTURE_SOUND_ENABLED, - OFF); + when(mEmergencyNumberUtils.getEmergencyGestureSoundEnabled()).thenReturn(false); assertThat(mController.isChecked()).isFalse(); }