Fix references to resources for Spa

Bug: 293810334
Test: m Settings
Change-Id: Id9e7ad5bb4dc2731545c35696ecaa842d4281323
This commit is contained in:
Chaohui Wang
2023-08-02 12:00:03 +08:00
parent 96e0ef3724
commit 20f1083d14
14 changed files with 61 additions and 24 deletions

View File

@@ -22,7 +22,7 @@ android_library {
name: "SpaLib",
srcs: ["src/**/*.kt"],
use_resource_processor: true,
static_libs: [
"androidx.slice_slice-builders",
"androidx.slice_slice-core",
@@ -50,5 +50,6 @@ android_library {
// Expose the srcs to tests, so the tests can access the internal classes.
filegroup {
name: "SpaLib_srcs",
visibility: ["//frameworks/base/packages/SettingsLib/Spa/tests"],
srcs: ["src/**/*.kt"],
}

View File

@@ -22,7 +22,7 @@ android_library {
name: "SpaLibTestUtils",
srcs: ["src/**/*.kt"],
use_resource_processor: true,
static_libs: [
"SpaLib",
"androidx.arch.core_core-testing",

View File

@@ -22,7 +22,7 @@ android_library {
name: "SpaPrivilegedLib",
srcs: ["src/**/*.kt"],
use_resource_processor: true,
static_libs: [
"SpaLib",
"SettingsLib",
@@ -45,5 +45,6 @@ java_defaults {
// Expose the srcs to tests, so the tests can access the internal classes.
filegroup {
name: "SpaPrivilegedLib_srcs",
visibility: [":__subpackages__"],
srcs: ["src/**/*.kt"],
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settingslib.spaprivileged.framework.compose
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.android.settingslib.R
/** An empty placer holder string. */
@Composable
fun placeholder() = stringResource(R.string.summary_placeholder)
/** Gets an empty placer holder string. */
fun Context.getPlaceholder(): String = getString(R.string.summary_placeholder)

View File

@@ -23,11 +23,11 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.produceState
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.android.settingslib.Utils
import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.android.settingslib.spaprivileged.framework.compose.placeholder
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -40,7 +40,7 @@ interface AppRepository {
@Composable
fun produceLabel(app: ApplicationInfo, isClonedAppPage: Boolean = false): State<String> {
val context = LocalContext.current
return produceState(initialValue = stringResource(R.string.summary_placeholder), app) {
return produceState(initialValue = placeholder(), app) {
withContext(Dispatchers.IO) {
value = if (isClonedAppPage || isCloneApp(context, app)) {
context.getString(R.string.cloned_app_info_label, loadLabel(app))
@@ -82,7 +82,7 @@ internal class AppRepositoryImpl(private val context: Context) : AppRepository {
withContext(Dispatchers.IO) {
value = when {
context.userManager.isManagedProfile(app.userId) -> {
context.getString(R.string.category_work)
context.getString(com.android.settingslib.R.string.category_work)
}
else -> null

View File

@@ -20,7 +20,7 @@ import android.app.admin.DevicePolicyManager
import android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER
import android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER
import android.content.Context
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.R
class EnterpriseRepository(private val context: Context) {
private val resources by lazy {

View File

@@ -27,7 +27,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settingslib.RestrictedLockUtils
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin
import com.android.settingslib.RestrictedLockUtilsInternal
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.widget.R
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
@@ -56,11 +56,15 @@ private data class BlockedByAdminImpl(
override fun getSummary(checked: Boolean?) = when (checked) {
true -> enterpriseRepository.getEnterpriseString(
Settings.ENABLED_BY_ADMIN_SWITCH_SUMMARY, R.string.enabled_by_admin
updatableStringId = Settings.ENABLED_BY_ADMIN_SWITCH_SUMMARY,
resId = R.string.enabled_by_admin,
)
false -> enterpriseRepository.getEnterpriseString(
Settings.DISABLED_BY_ADMIN_SWITCH_SUMMARY, R.string.disabled_by_admin
updatableStringId = Settings.DISABLED_BY_ADMIN_SWITCH_SUMMARY,
resId = R.string.disabled_by_admin,
)
else -> ""
}

View File

@@ -72,7 +72,7 @@ class AppInfoProvider(private val packageInfo: PackageInfo) {
private fun InstallType(app: ApplicationInfo) {
if (!app.isInstantApp) return
Spacer(modifier = Modifier.height(4.dp))
SettingsBody(stringResource(R.string.install_type_instant))
SettingsBody(stringResource(com.android.settingslib.widget.R.string.install_type_instant))
}
@Composable

View File

@@ -24,9 +24,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.produceState
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.common.storageStatsManager
import com.android.settingslib.spaprivileged.framework.compose.placeholder
import com.android.settingslib.spaprivileged.model.app.userHandle
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -36,7 +35,7 @@ private const val TAG = "AppStorageSize"
@Composable
fun ApplicationInfo.getStorageSize(): State<String> {
val context = LocalContext.current
return produceState(initialValue = stringResource(R.string.summary_placeholder)) {
return produceState(initialValue = placeholder()) {
withContext(Dispatchers.IO) {
val sizeBytes = calculateSizeBytes(context)
value = if (sizeBytes != null) Formatter.formatFileSize(context, sizeBytes) else ""

View File

@@ -38,6 +38,7 @@ import com.android.settingslib.spa.framework.util.getStringArg
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.compose.getPlaceholder
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userId
@@ -173,7 +174,7 @@ internal class TogglePermissionInternalAppListModel<T : AppRecord>(
when (allowed.value) {
true -> context.getString(R.string.app_permission_summary_allowed)
false -> context.getString(R.string.app_permission_summary_not_allowed)
null -> context.getString(R.string.summary_placeholder)
null -> context.getPlaceholder()
}
}

View File

@@ -32,7 +32,7 @@ import androidx.compose.ui.state.ToggleableState
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.compose.getPlaceholder
import com.android.settingslib.spaprivileged.model.enterprise.BaseUserRestricted
import com.android.settingslib.spaprivileged.model.enterprise.BlockedByAdmin
import com.android.settingslib.spaprivileged.model.enterprise.NoRestricted
@@ -72,9 +72,12 @@ internal object RestrictedSwitchPreference {
checked: State<Boolean?>,
): State<String> = when (restrictedMode) {
is NoRestricted -> summaryIfNoRestricted
is BaseUserRestricted -> stateOf(context.getString(R.string.disabled))
is BaseUserRestricted -> stateOf(
context.getString(com.android.settingslib.R.string.disabled)
)
is BlockedByAdmin -> derivedStateOf { restrictedMode.getSummary(checked.value) }
null -> stateOf(context.getString(R.string.summary_placeholder))
null -> stateOf(context.getPlaceholder())
}
}

View File

@@ -25,7 +25,6 @@ import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -66,7 +65,8 @@ class AppRepositoryTest {
val contentDescription = produceIconContentDescription()
assertThat(contentDescription.value).isEqualTo(context.getString(R.string.category_work))
assertThat(contentDescription.value)
.isEqualTo(context.getString(com.android.settingslib.R.string.category_work))
}
@Test

View File

@@ -116,7 +116,7 @@ class AppListPageTest {
private fun onMoreOptions() =
composeTestRule.onNodeWithContentDescription(
context.getString(R.string.abc_action_menu_overflow_description)
context.getString(androidx.appcompat.R.string.abc_action_menu_overflow_description)
)
private companion object {

View File

@@ -30,6 +30,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.testutils.FakeNavControllerWrapper
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.compose.getPlaceholder
import com.android.settingslib.spaprivileged.model.enterprise.NoRestricted
import com.android.settingslib.spaprivileged.tests.testutils.FakeRestrictionsProvider
import com.android.settingslib.spaprivileged.tests.testutils.TestAppRecord
@@ -95,9 +96,7 @@ class TogglePermissionAppListPageTest {
val summaryState = getSummary(listModel)
assertThat(summaryState.value).isEqualTo(
context.getString(R.string.summary_placeholder)
)
assertThat(summaryState.value).isEqualTo(context.getPlaceholder())
}
@Test