diff --git a/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java b/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java index 1566ae913f4..491fd8b7bfc 100644 --- a/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java +++ b/src/com/android/settings/notification/AssistantFeedbackPreferenceController.java @@ -23,11 +23,13 @@ import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; +import android.provider.DeviceConfig; import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -77,13 +79,15 @@ public class AssistantFeedbackPreferenceController extends TogglePreferenceContr @Override public int getAvailabilityStatus() { - return AVAILABLE; + return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, false) + ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @Override public boolean isChecked() { return Settings.Global.getInt(mContext.getContentResolver(), - NOTIFICATION_FEEDBACK_ENABLED, OFF) == ON; + NOTIFICATION_FEEDBACK_ENABLED, ON) == ON; } @Override diff --git a/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java index 8cfb0e0d111..9f172a6df1f 100644 --- a/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/AssistantFeedbackPreferenceControllerTest.java @@ -28,12 +28,18 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.provider.DeviceConfig; import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; +import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; +import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.shadow.ShadowDeviceConfig; + +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -42,8 +48,10 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) +@Config(shadows = {ShadowDeviceConfig.class}) public class AssistantFeedbackPreferenceControllerTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) @@ -65,13 +73,47 @@ public class AssistantFeedbackPreferenceControllerTest { when(mScreen.findPreference(mPreference.getKey())).thenReturn(mPreference); } + @After + public void tearDown() { + ShadowDeviceConfig.reset(); + } + @Test - public void testIsVisible() { + public void testIsVisible_DeviceConfigOn() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "true", true); mController.displayPreference(mScreen); assertThat(mPreference.isVisible()).isTrue(); } + @Test + public void testIsVisible_DeviceConfigOff() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "false", true); + mController.displayPreference(mScreen); + + assertThat(mPreference.isVisible()).isFalse(); + } + + @Test + public void getAvailabilityStatus_DeviceConfigOn_returnAvailable() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "true", true); + + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.AVAILABLE); + } + + @Test + public void getAvailabilityStatus_DeviceConfigOff_returnUnavailable() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.ENABLE_NAS_FEEDBACK, "false", true); + + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.CONDITIONALLY_UNAVAILABLE); + } + @Test public void updateState_preferenceSetCheckedWhenSettingIsOn() { final TwoStatePreference preference = mock(TwoStatePreference.class);