diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt index b870f30eaf1..3b2b58a5148 100644 --- a/src/com/android/settings/network/AirplaneModePreference.kt +++ b/src/com/android/settings/network/AirplaneModePreference.kt @@ -30,11 +30,11 @@ import android.telephony.TelephonyManager import androidx.annotation.DrawableRes import androidx.preference.Preference import com.android.settings.AirplaneModeEnabler +import com.android.settings.PreferenceActionMetricsProvider import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R import com.android.settings.Utils import com.android.settings.network.SatelliteRepository.Companion.isSatelliteOn -import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settingslib.RestrictedSwitchPreference import com.android.settingslib.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.KeyValueStore @@ -51,6 +51,7 @@ import com.android.settingslib.metadata.SwitchPreference // LINT.IfChange class AirplaneModePreference : SwitchPreference(KEY, R.string.airplane_mode), + PreferenceActionMetricsProvider, PreferenceAvailabilityProvider, PreferenceLifecycleProvider, PreferenceRestrictionMixin { @@ -88,6 +89,9 @@ class AirplaneModePreference : override val sensitivityLevel get() = SensitivityLevel.HIGH_SENSITIVITY + override val preferenceActionMetrics: Int + get() = ACTION_AIRPLANE_TOGGLE + override fun storage(context: Context): KeyValueStore = AirplaneModeStorage(context, SettingsGlobalStore.get(context)) @@ -109,16 +113,12 @@ class AirplaneModePreference : (settingsStore.getBoolean(key) ?: DEFAULT_VALUE) as T override fun setValue(key: String, valueType: Class, value: T?) { - if (value is Boolean) { - settingsStore.setBoolean(key, value) + if (value !is Boolean) return + settingsStore.setBoolean(key, value) - val intent = Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED) - intent.putExtra("state", value) - context.sendBroadcastAsUser(intent, UserHandle.ALL) - - val metricsFeature = featureFactory.metricsFeatureProvider - metricsFeature.action(context, ACTION_AIRPLANE_TOGGLE, value) - } + val intent = Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED) + intent.putExtra("state", value) + context.sendBroadcastAsUser(intent, UserHandle.ALL) } override fun onFirstObserverAdded() { diff --git a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt index 75b843d8b46..5b39a269e97 100644 --- a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt +++ b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt @@ -27,10 +27,11 @@ import android.telephony.TelephonyManager import androidx.preference.SwitchPreferenceCompat import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 -import com.android.settings.testutils.FakeFeatureFactory +import com.android.settings.testutils.MetricsRule import com.android.settingslib.datastore.SettingsGlobalStore import com.android.settingslib.preference.createAndBindWidget import com.google.common.truth.Truth.assertThat +import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyInt @@ -41,6 +42,7 @@ import org.mockito.kotlin.stub @RunWith(AndroidJUnit4::class) class AirplaneModePreferenceTest { + @Rule(order = 0) @JvmField val metricsRule = MetricsRule() private val mockResources = mock() private val mockPackageManager = mock() @@ -106,24 +108,6 @@ class AirplaneModePreferenceTest { assertThat(getValue).isFalse() } - @Test - fun setValue_valueTrue_metricsActionAirplaneToggleTrue() { - val metricsFeatureProvider = FakeFeatureFactory.setupForTest().metricsFeatureProvider - - airplaneModePreference.storage(context).setBoolean(AirplaneModePreference.KEY, true) - - verify(metricsFeatureProvider).action(context, ACTION_AIRPLANE_TOGGLE, true) - } - - @Test - fun setValue_valueFalse_metricsActionAirplaneToggleFalse() { - val metricsFeatureProvider = FakeFeatureFactory.setupForTest().metricsFeatureProvider - - airplaneModePreference.storage(context).setBoolean(AirplaneModePreference.KEY, false) - - verify(metricsFeatureProvider).action(context, ACTION_AIRPLANE_TOGGLE, false) - } - @Test fun performClick_defaultOn_checkedIsFalse() { SettingsGlobalStore.get(context).setInt(Settings.Global.AIRPLANE_MODE_ON, 1) @@ -131,6 +115,7 @@ class AirplaneModePreferenceTest { val preference = getSwitchPreference().apply { performClick() } assertThat(preference.isChecked).isFalse() + verify(metricsRule.metricsFeatureProvider).action(context, ACTION_AIRPLANE_TOGGLE, false) } @Test @@ -140,6 +125,7 @@ class AirplaneModePreferenceTest { val preference = getSwitchPreference().apply { performClick() } assertThat(preference.isChecked).isTrue() + verify(metricsRule.metricsFeatureProvider).action(context, ACTION_AIRPLANE_TOGGLE, true) } private fun getSwitchPreference(): SwitchPreferenceCompat =