From 7557a48e2ee1e55bffe2e0f3a7a0330110653159 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Thu, 24 Oct 2024 08:07:31 +0800 Subject: [PATCH] [Catalyst] Create airplane mode preference Bug: 375925972 Flag: com.android.settings.flags.catalyst_network_provider_and_internet_screen Test: Manual testing atest -c AirplaneModePreferenceTest atest -c VpnPreferenceControllerTest Change-Id: Icf0bb9dfc1a8bda7a001f2ad3c6d6b835c489c0d --- res/xml/network_provider_internet.xml | 2 +- .../network/AirplaneModePreference.kt | 42 +++++++++++ .../AirplaneModePreferenceController.java | 2 + .../network/VpnPreferenceController.java | 5 +- .../network/AirplaneModePreferenceTest.kt | 71 +++++++++++++++++++ .../network/VpnPreferenceControllerTest.java | 3 +- 6 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 src/com/android/settings/network/AirplaneModePreference.kt create mode 100644 tests/robotests/src/com/android/settings/network/AirplaneModePreferenceTest.kt diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml index 292f1824552..1437db67da5 100644 --- a/res/xml/network_provider_internet.xml +++ b/res/xml/network_provider_internet.xml @@ -56,7 +56,7 @@ settings:controller="com.android.settings.network.MobileNetworkSummaryController" /> () + private val mockResources = mock() + + private val context = + object : ContextWrapper(ApplicationProvider.getApplicationContext()) { + override fun getPackageManager(): PackageManager = mockPackageManager + + override fun getResources(): Resources = mockResources + } + + private val airplaneModePreference = AirplaneModePreference() + + @Test + fun isAvailable_hasConfigAndNoFeatureLeanback_shouldReturnTrue() { + mockResources.stub { on { getBoolean(anyInt()) } doReturn true } + mockPackageManager.stub { on { hasSystemFeature(FEATURE_LEANBACK) } doReturn false } + + assertThat(airplaneModePreference.isAvailable(context)).isTrue() + } + + @Test + fun isAvailable_noConfig_shouldReturnFalse() { + mockResources.stub { on { getBoolean(anyInt()) } doReturn false } + mockPackageManager.stub { on { hasSystemFeature(FEATURE_LEANBACK) } doReturn false } + + assertThat(airplaneModePreference.isAvailable(context)).isFalse() + } + + @Test + fun isAvailable_hasFeatureLeanback_shouldReturnFalse() { + mockResources.stub { on { getBoolean(anyInt()) } doReturn true } + mockPackageManager.stub { on { hasSystemFeature(FEATURE_LEANBACK) } doReturn true } + + assertThat(airplaneModePreference.isAvailable(context)).isFalse() + } +} diff --git a/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java index ee239ba84a1..7a6a99af8e5 100644 --- a/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/VpnPreferenceControllerTest.java @@ -34,7 +34,6 @@ import android.net.VpnManager; import android.os.Looper; import android.os.UserHandle; import android.provider.Settings; -import android.provider.SettingsSlicesContract; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; @@ -102,7 +101,7 @@ public class VpnPreferenceControllerTest { controller.displayPreference(mScreen); - verify(mPreference).setDependency(SettingsSlicesContract.KEY_AIRPLANE_MODE); + verify(mPreference).setDependency(Settings.Global.AIRPLANE_MODE_ON); } @Test