From 63215582d56e63bf4fb199b6b1bb64bcedac3a4d Mon Sep 17 00:00:00 2001 From: Weng Su Date: Fri, 27 Dec 2024 21:00:03 +0800 Subject: [PATCH] [Catalyst] Add back Airplane toggle metrics - The original Airplane toggle metrics is recorded by AirplaneEnabler. Since the design of Catalyst removes AirplaneEnabler, the metrics needs to be added to Catalyst preference. NO_IFTTT=Catalyst only Bug: 386330825 Flag: EXEMPT bugfix Test: Manual testing atest -c AirplaneModePreferenceTest Change-Id: I61f9fc5d623e7d497d13ddf7bc37990ce0fa223e --- .../network/AirplaneModePreference.kt | 5 +++++ .../network/AirplaneModePreferenceTest.kt | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt index f86d41a9e60..11790d0be26 100644 --- a/src/com/android/settings/network/AirplaneModePreference.kt +++ b/src/com/android/settings/network/AirplaneModePreference.kt @@ -17,6 +17,7 @@ package com.android.settings.network import android.app.Activity +import android.app.settings.SettingsEnums.ACTION_AIRPLANE_TOGGLE import android.content.Context import android.content.Intent import android.content.pm.PackageManager @@ -33,6 +34,7 @@ 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.DataChangeReason @@ -113,6 +115,9 @@ class AirplaneModePreference : 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) } } diff --git a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt index a0f380fa5ec..75b843d8b46 100644 --- a/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt +++ b/tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt @@ -16,6 +16,7 @@ package com.android.settings.network +import android.app.settings.SettingsEnums.ACTION_AIRPLANE_TOGGLE import android.content.Context import android.content.ContextWrapper import android.content.pm.PackageManager @@ -26,12 +27,14 @@ 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.settingslib.datastore.SettingsGlobalStore import com.android.settingslib.preference.createAndBindWidget import com.google.common.truth.Truth.assertThat import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyInt +import org.mockito.Mockito.verify import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.stub @@ -103,6 +106,24 @@ 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)