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