Check DISALLOW_CONFIG_MOBILE_NETWORKS when search
If disallowed, not show mobile related search results. Bug: 358238959 Flag: EXEMPT bug fix Test: manual - search Mobile Settings Test: atest MobileNetworkSettingsSearchIndexTest Change-Id: I79b984f41f09dd9612bcd0c9942089756d5d365d
This commit is contained in:
@@ -89,7 +89,7 @@ class MobileNetworkListFragment : DashboardFragment() {
|
||||
private val simRepositoryFactory: (Context) -> SimRepository = ::SimRepository
|
||||
) : BaseSearchIndexProvider(R.xml.network_provider_sims_list) {
|
||||
public override fun isPageSearchEnabled(context: Context): Boolean =
|
||||
simRepositoryFactory(context).showMobileNetworkPage()
|
||||
simRepositoryFactory(context).canEnterMobileNetworkPage()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ constructor(
|
||||
private var isAirplaneModeOn = false
|
||||
|
||||
override fun getAvailabilityStatus() =
|
||||
if (SimRepository(mContext).showMobileNetworkPage()) AVAILABLE
|
||||
if (SimRepository(mContext).showMobileNetworkPageEntrance()) AVAILABLE
|
||||
else CONDITIONALLY_UNAVAILABLE
|
||||
|
||||
override fun displayPreference(screen: PreferenceScreen) {
|
||||
|
||||
@@ -48,7 +48,7 @@ constructor(
|
||||
|
||||
override fun getSummary(): CharSequence {
|
||||
val summaryResId =
|
||||
if (simRepository.showMobileNetworkPage()) {
|
||||
if (simRepository.showMobileNetworkPageEntrance()) {
|
||||
R.string.network_dashboard_summary_mobile
|
||||
} else {
|
||||
R.string.network_dashboard_summary_no_mobile
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.provider.Settings
|
||||
import android.telephony.SubscriptionInfo
|
||||
import com.android.settings.R
|
||||
import com.android.settings.datausage.BillingCyclePreferenceController.Companion.BillingCycleSearchItem
|
||||
import com.android.settings.network.SubscriptionUtil
|
||||
import com.android.settings.network.telephony.CarrierSettingsVersionPreferenceController.Companion.CarrierSettingsVersionSearchItem
|
||||
import com.android.settings.network.telephony.DataUsagePreferenceController.Companion.DataUsageSearchItem
|
||||
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
|
||||
@@ -36,7 +35,6 @@ import com.android.settings.spa.search.SpaSearchRepository.Companion.createSearc
|
||||
import com.android.settings.spa.search.SpaSearchRepository.Companion.searchIndexProviderOf
|
||||
import com.android.settingslib.search.SearchIndexableData
|
||||
import com.android.settingslib.search.SearchIndexableRaw
|
||||
import com.android.settingslib.spaprivileged.framework.common.userManager
|
||||
import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBoolean
|
||||
|
||||
class MobileNetworkSettingsSearchIndex(
|
||||
@@ -109,12 +107,8 @@ class MobileNetworkSettingsSearchIndex(
|
||||
companion object {
|
||||
/** suppress full page if user is not admin */
|
||||
@JvmStatic
|
||||
fun isMobileNetworkSettingsSearchable(context: Context): Boolean {
|
||||
val isAirplaneMode by context.settingsGlobalBoolean(Settings.Global.AIRPLANE_MODE_ON)
|
||||
return SubscriptionUtil.isSimHardwareVisible(context) &&
|
||||
!isAirplaneMode &&
|
||||
context.userManager.isAdminUser
|
||||
}
|
||||
fun isMobileNetworkSettingsSearchable(context: Context): Boolean =
|
||||
SimRepository(context).canEnterMobileNetworkPage()
|
||||
|
||||
fun createSearchItems(context: Context): List<MobileNetworkSettingsSearchItem> =
|
||||
listOf(
|
||||
|
||||
@@ -18,13 +18,24 @@ package com.android.settings.network.telephony
|
||||
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.UserManager
|
||||
import android.provider.Settings
|
||||
import com.android.settingslib.spaprivileged.framework.common.userManager
|
||||
import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBoolean
|
||||
|
||||
class SimRepository(context: Context) {
|
||||
class SimRepository(private val context: Context) {
|
||||
private val packageManager = context.packageManager
|
||||
private val userManager = context.userManager
|
||||
|
||||
/** Gets whether we show mobile network settings page to the current user. */
|
||||
fun showMobileNetworkPage(): Boolean =
|
||||
/** Gets whether show mobile network settings page entrance to the current user. */
|
||||
fun showMobileNetworkPageEntrance(): Boolean =
|
||||
packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) && userManager.isAdminUser
|
||||
|
||||
/** Gets whether current user can enter mobile network settings page. */
|
||||
fun canEnterMobileNetworkPage(): Boolean {
|
||||
val isAirplaneMode by context.settingsGlobalBoolean(Settings.Global.AIRPLANE_MODE_ON)
|
||||
return showMobileNetworkPageEntrance() &&
|
||||
!isAirplaneMode &&
|
||||
!userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ open class NetworkCellularGroupProvider : SettingsPageProvider, SearchablePage {
|
||||
const val fileName = "NetworkCellularGroupProvider"
|
||||
|
||||
private fun isPageSearchable(context: Context) =
|
||||
Flags.isDualSimOnboardingEnabled() && SimRepository(context).showMobileNetworkPage()
|
||||
Flags.isDualSimOnboardingEnabled() && SimRepository(context).canEnterMobileNetworkPage()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ class MobileNetworkListFragmentTest {
|
||||
|
||||
@Test
|
||||
fun isPageSearchEnabled_showMobileNetworkPage_returnTrue() {
|
||||
mockSimRepository.stub { on { showMobileNetworkPage() } doReturn true }
|
||||
mockSimRepository.stub { on { canEnterMobileNetworkPage() } doReturn true }
|
||||
|
||||
val isEnabled = SearchIndexProvider { mockSimRepository }.isPageSearchEnabled(context)
|
||||
|
||||
@@ -45,7 +45,7 @@ class MobileNetworkListFragmentTest {
|
||||
|
||||
@Test
|
||||
fun isPageSearchEnabled_hideMobileNetworkPage_returnFalse() {
|
||||
mockSimRepository.stub { on { showMobileNetworkPage() } doReturn false }
|
||||
mockSimRepository.stub { on { canEnterMobileNetworkPage() } doReturn false }
|
||||
|
||||
val isEnabled = SearchIndexProvider { mockSimRepository }.isPageSearchEnabled(context)
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ class TopLevelNetworkEntryPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
fun getSummary_hasMobile_shouldReturnMobileSummary() {
|
||||
mockSimRepository.stub { on { showMobileNetworkPage() } doReturn true }
|
||||
mockSimRepository.stub { on { showMobileNetworkPageEntrance() } doReturn true }
|
||||
|
||||
val summary = controller.summary
|
||||
|
||||
@@ -84,7 +84,7 @@ class TopLevelNetworkEntryPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
fun getSummary_noMobile_shouldReturnNoMobileSummary() {
|
||||
mockSimRepository.stub { on { showMobileNetworkPage() } doReturn false }
|
||||
mockSimRepository.stub { on { showMobileNetworkPageEntrance() } doReturn false }
|
||||
|
||||
val summary = controller.summary
|
||||
|
||||
|
||||
@@ -37,50 +37,76 @@ class SimRepositoryTest {
|
||||
|
||||
private val mockPackageManager = mock<PackageManager>()
|
||||
|
||||
private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
|
||||
on { userManager } doReturn mockUserManager
|
||||
on { packageManager } doReturn mockPackageManager
|
||||
}
|
||||
private val context: Context =
|
||||
spy(ApplicationProvider.getApplicationContext()) {
|
||||
on { userManager } doReturn mockUserManager
|
||||
on { packageManager } doReturn mockPackageManager
|
||||
}
|
||||
|
||||
private val repository = SimRepository(context)
|
||||
|
||||
@Test
|
||||
fun showMobileNetworkPage_adminUserAndHasTelephony_returnTrue() {
|
||||
mockUserManager.stub {
|
||||
on { isAdminUser } doReturn true
|
||||
}
|
||||
fun showMobileNetworkPageEntrance_adminUserAndHasTelephony_returnTrue() {
|
||||
mockUserManager.stub { on { isAdminUser } doReturn true }
|
||||
mockPackageManager.stub {
|
||||
on { hasSystemFeature(PackageManager.FEATURE_TELEPHONY) } doReturn true
|
||||
}
|
||||
|
||||
val showMobileNetworkPage = repository.showMobileNetworkPage()
|
||||
val showMobileNetworkPage = repository.showMobileNetworkPageEntrance()
|
||||
|
||||
assertThat(showMobileNetworkPage).isTrue()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun showMobileNetworkPage_notAdminUser_returnFalse() {
|
||||
fun showMobileNetworkPageEntrance_notAdminUser_returnFalse() {
|
||||
mockUserManager.stub { on { isAdminUser } doReturn false }
|
||||
mockPackageManager.stub {
|
||||
on { hasSystemFeature(PackageManager.FEATURE_TELEPHONY) } doReturn true
|
||||
}
|
||||
|
||||
val showMobileNetworkPage = repository.showMobileNetworkPageEntrance()
|
||||
|
||||
assertThat(showMobileNetworkPage).isFalse()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun showMobileNetworkPageEntrance_noTelephony_returnFalse() {
|
||||
mockUserManager.stub { on { isAdminUser } doReturn true }
|
||||
mockPackageManager.stub {
|
||||
on { hasSystemFeature(PackageManager.FEATURE_TELEPHONY) } doReturn false
|
||||
}
|
||||
|
||||
val showMobileNetworkPage = repository.showMobileNetworkPageEntrance()
|
||||
|
||||
assertThat(showMobileNetworkPage).isFalse()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canEnterMobileNetworkPage_allowConfigMobileNetwork_returnTrue() {
|
||||
mockUserManager.stub {
|
||||
on { isAdminUser } doReturn false
|
||||
on { isAdminUser } doReturn true
|
||||
on { hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS) } doReturn false
|
||||
}
|
||||
mockPackageManager.stub {
|
||||
on { hasSystemFeature(PackageManager.FEATURE_TELEPHONY) } doReturn true
|
||||
}
|
||||
|
||||
val showMobileNetworkPage = repository.showMobileNetworkPage()
|
||||
val showMobileNetworkPage = repository.canEnterMobileNetworkPage()
|
||||
|
||||
assertThat(showMobileNetworkPage).isFalse()
|
||||
assertThat(showMobileNetworkPage).isTrue()
|
||||
}
|
||||
|
||||
@Test fun showMobileNetworkPage_noTelephony_returnFalse() {
|
||||
@Test
|
||||
fun canEnterMobileNetworkPage_disallowConfigMobileNetwork_returnFalse() {
|
||||
mockUserManager.stub {
|
||||
on { isAdminUser } doReturn true
|
||||
on { hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS) } doReturn true
|
||||
}
|
||||
mockPackageManager.stub {
|
||||
on { hasSystemFeature(PackageManager.FEATURE_TELEPHONY) } doReturn false
|
||||
on { hasSystemFeature(PackageManager.FEATURE_TELEPHONY) } doReturn true
|
||||
}
|
||||
|
||||
val showMobileNetworkPage = repository.showMobileNetworkPage()
|
||||
val showMobileNetworkPage = repository.canEnterMobileNetworkPage()
|
||||
|
||||
assertThat(showMobileNetworkPage).isFalse()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user