From 95719f21b32c99383fd643acfcb61656eee6812f Mon Sep 17 00:00:00 2001 From: Jacky Wang Date: Mon, 9 Dec 2024 17:19:40 +0800 Subject: [PATCH] [Catalyst] Add SatelliteRepository.isSatelliteOn helper method NO_IFTTT=Catalyst only Bug: 335132588 Flag: EXEMPT refactor Test: manual Change-Id: Ib10f7f616a6deed438a129da4b2cb927915bfcda --- .../network/AirplaneModePreference.kt | 18 +---------------- .../network/NetworkDashboardScreen.kt | 6 ++++++ .../settings/network/SatelliteRepository.kt | 12 +++++++++++ .../settings/wifi/WifiSwitchPreference.kt | 20 +++---------------- 4 files changed, 22 insertions(+), 34 deletions(-) diff --git a/src/com/android/settings/network/AirplaneModePreference.kt b/src/com/android/settings/network/AirplaneModePreference.kt index 758bcfbe487..e3b7f5503d6 100644 --- a/src/com/android/settings/network/AirplaneModePreference.kt +++ b/src/com/android/settings/network/AirplaneModePreference.kt @@ -26,13 +26,13 @@ import android.os.UserManager import android.provider.Settings import android.telephony.PhoneStateListener import android.telephony.TelephonyManager -import android.util.Log import androidx.annotation.DrawableRes import androidx.preference.Preference import com.android.settings.AirplaneModeEnabler 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.settingslib.RestrictedSwitchPreference import com.android.settingslib.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.DataChangeReason @@ -45,8 +45,6 @@ import com.android.settingslib.metadata.PreferenceLifecycleProvider import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SwitchPreference -import java.util.concurrent.Executors -import java.util.concurrent.TimeUnit // LINT.IfChange class AirplaneModePreference : @@ -113,9 +111,7 @@ class AirplaneModePreference : context.getSystemService(TelephonyManager::class.java)?.let { phoneStateListener = object : PhoneStateListener(Looper.getMainLooper()) { - @Deprecated("Deprecated in Java") override fun onRadioPowerStateChanged(state: Int) { - Log.d(TAG, "onRadioPowerStateChanged(), state=$state") notifyChange(KEY, DataChangeReason.UPDATE) } } @@ -163,17 +159,6 @@ class AirplaneModePreference : context.getSystemService(TelephonyManager::class.java), ) - private fun isSatelliteOn(context: Context): Boolean { - try { - return SatelliteRepository(context) - .requestIsSessionStarted(Executors.newSingleThreadExecutor()) - .get(2000, TimeUnit.MILLISECONDS) - } catch (e: Exception) { - Log.e(TAG, "Error to get satellite status : $e") - } - return false - } - private fun showEcmDialog(context: PreferenceLifecycleContext) { val intent = Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null) @@ -192,7 +177,6 @@ class AirplaneModePreference : } companion object { - const val TAG = "AirplaneModePreference" const val KEY = Settings.Global.AIRPLANE_MODE_ON const val DEFAULT_VALUE = false const val REQUEST_CODE_EXIT_ECM = 1 diff --git a/src/com/android/settings/network/NetworkDashboardScreen.kt b/src/com/android/settings/network/NetworkDashboardScreen.kt index 15bf590f462..1ed88c080d1 100644 --- a/src/com/android/settings/network/NetworkDashboardScreen.kt +++ b/src/com/android/settings/network/NetworkDashboardScreen.kt @@ -17,9 +17,12 @@ package com.android.settings.network import android.content.Context import com.android.settings.R +import com.android.settings.Settings.NetworkDashboardActivity import com.android.settings.datausage.DataSaverScreen import com.android.settings.flags.Flags +import com.android.settings.utils.makeLaunchIntent import com.android.settingslib.metadata.PreferenceIconProvider +import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.ProvidePreferenceScreen import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.preference.PreferenceScreenCreator @@ -44,6 +47,9 @@ class NetworkDashboardScreen : PreferenceScreenCreator, PreferenceIconProvider { override fun fragmentClass() = NetworkDashboardFragment::class.java + override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) = + makeLaunchIntent(context, NetworkDashboardActivity::class.java, metadata?.key) + override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(this) { +MobileNetworkListScreen.KEY order -15 diff --git a/src/com/android/settings/network/SatelliteRepository.kt b/src/com/android/settings/network/SatelliteRepository.kt index b7c25f4f658..c70484a7e7a 100644 --- a/src/com/android/settings/network/SatelliteRepository.kt +++ b/src/com/android/settings/network/SatelliteRepository.kt @@ -26,6 +26,8 @@ import androidx.concurrent.futures.CallbackToFutureAdapter import com.google.common.util.concurrent.Futures.immediateFuture import com.google.common.util.concurrent.ListenableFuture import java.util.concurrent.Executor +import java.util.concurrent.Executors +import java.util.concurrent.TimeUnit import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.asExecutor @@ -203,5 +205,15 @@ class SatelliteRepository( fun setIsSessionStartedForTesting(isEnabled: Boolean) { this.isSessionStarted = isEnabled } + + fun isSatelliteOn(context: Context, timeoutMs: Long = 2000): Boolean = + try { + SatelliteRepository(context) + .requestIsSessionStarted(Executors.newSingleThreadExecutor()) + .get(timeoutMs, TimeUnit.MILLISECONDS) + } catch (e: Exception) { + Log.e(TAG, "Error to get satellite status : $e") + false + } } } diff --git a/src/com/android/settings/wifi/WifiSwitchPreference.kt b/src/com/android/settings/wifi/WifiSwitchPreference.kt index 2a18d3f5616..ba6fb02b769 100644 --- a/src/com/android/settings/wifi/WifiSwitchPreference.kt +++ b/src/com/android/settings/wifi/WifiSwitchPreference.kt @@ -23,13 +23,12 @@ import android.content.IntentFilter import android.net.wifi.WifiManager import android.os.UserManager import android.provider.Settings -import android.util.Log import android.widget.Toast import androidx.preference.Preference import androidx.preference.Preference.OnPreferenceChangeListener import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R -import com.android.settings.network.SatelliteRepository +import com.android.settings.network.SatelliteRepository.Companion.isSatelliteOn import com.android.settings.network.SatelliteWarningDialogActivity import com.android.settingslib.RestrictedSwitchPreference import com.android.settingslib.WirelessUtils @@ -42,8 +41,6 @@ import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SwitchPreference import com.android.settingslib.preference.SwitchPreferenceBinding -import java.util.concurrent.Executors -import java.util.concurrent.TimeUnit // LINT.IfChange class WifiSwitchPreference : @@ -75,7 +72,7 @@ class WifiSwitchPreference : val context = preference.context // Show dialog and do nothing under satellite mode. - if (context.isSatelliteOn()) { + if (isSatelliteOn(context)) { context.startActivity( Intent(context, SatelliteWarningDialogActivity::class.java) .putExtra( @@ -100,7 +97,7 @@ class WifiSwitchPreference : override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) = when { - (value == true && !context.isRadioAllowed()) || context.isSatelliteOn() -> + (value == true && !context.isRadioAllowed()) || isSatelliteOn(context) -> ReadWritePermit.DISALLOW else -> ReadWritePermit.ALLOW } @@ -155,22 +152,11 @@ class WifiSwitchPreference : } companion object { - const val TAG = "WifiSwitchPreference" const val KEY = "main_toggle_wifi" private fun Context.isRadioAllowed() = WirelessUtils.isRadioAllowed(this, Settings.Global.RADIO_WIFI) - private fun Context.isSatelliteOn() = - try { - SatelliteRepository(this) - .requestIsSessionStarted(Executors.newSingleThreadExecutor()) - .get(2000, TimeUnit.MILLISECONDS) - } catch (e: Exception) { - Log.e(TAG, "Error to get satellite status : $e") - false - } - private val Intent.wifiState get() = getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN) }