summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoungJoon Yang <youngjoonyang@google.com>2023-12-29 02:10:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-12-29 02:10:34 +0000
commit409200adb110860e882917c3613c9386e1d27e63 (patch)
tree3ea3fa79b7847b00f853aaae0dfa405fd08db6f9
parent2a12e76676bd27eb69eaaecf141e0ff5e68ca071 (diff)
parent9dd9c2c892d5f987d2b538ed895a88dccded0c6a (diff)
downloadPermission-409200adb110860e882917c3613c9386e1d27e63.tar.gz
Merge changes I06de9982,I0c59e40b into main
* changes: Rephrase summary texts on permission & app chips for Wear Add app_perms_24h_access strings for Wear
-rw-r--r--PermissionController/res/values/strings.xml9
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt22
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsHelper.kt12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearUtils.kt80
4 files changed, 102 insertions, 21 deletions
diff --git a/PermissionController/res/values/strings.xml b/PermissionController/res/values/strings.xml
index d10c6fb90..b9895d611 100644
--- a/PermissionController/res/values/strings.xml
+++ b/PermissionController/res/values/strings.xml
@@ -1934,4 +1934,13 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
<string name="safety_label_changes_gear_description">Settings</string>
<!-- Safety Label Change Notifications End -->
+
+ <!-- Summary for showing the last access text for today for Wear [CHAR LIMIT=50] -->
+ <string name="wear_app_perms_24h_access">Accessed <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
+
+ <!-- Summary for showing the last access text for yesterday for Wear [CHAR LIMIT=50] -->
+ <string name="wear_app_perms_24h_access_yest">Accessed yesterday <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
+
+ <!-- Summary for showing the last access text for 7 days for Wear [CHAR LIMIT=50] -->
+ <string name="wear_app_perms_7d_access">Accessed <xliff:g id="time_date" example="Jan 3">%1$s</xliff:g> <xliff:g id="time_date" example="12:42 PM">%2$s</xliff:g></string>
</resources>
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt
index 0ccde86be..94f0b0d07 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearAppPermissionGroupsHelper.kt
@@ -142,25 +142,27 @@ class WearAppPermissionGroupsHelper(
): String {
val grantSummary =
getGrantSummary(category, groupUiInfo)?.let { context.getString(it) } ?: ""
- if (!Flags.wearPrivacyDashboardEnabled()) {
- return grantSummary
- }
- val accessSummary =
- viewModel.getPreferenceSummary(groupUiInfo, context, lastAccessTime).let {
+ val summary = StringBuilder(grantSummary)
+ if (Flags.wearPrivacyDashboardEnabled()) {
+ WearUtils.getPreferenceSummary(context, lastAccessTime).let {
if (it.isNotEmpty()) {
- System.lineSeparator() + it
- } else {
- it
+ summary.append(System.lineSeparator()).append(it)
}
}
- return grantSummary + accessSummary
+ }
+ return summary.toString()
}
private fun getGrantSummary(category: Category?, groupUiInfo: GroupUiInfo): Int? {
val subtitle = groupUiInfo.subtitle
if (category != null) {
when (category) {
- Category.ALLOWED -> return R.string.allowed_header
+ Category.ALLOWED ->
+ return if (subtitle == PermSubtitle.BACKGROUND) {
+ R.string.allowed_always_header
+ } else {
+ R.string.allowed_header
+ }
Category.ASK -> return R.string.ask_header
Category.DENIED -> return R.string.denied_header
else -> {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsHelper.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsHelper.kt
index 559160b38..539adf4fb 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsHelper.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearPermissionAppsHelper.kt
@@ -28,7 +28,6 @@ import com.android.permissioncontroller.permission.ui.wear.model.WearAppPermissi
import com.android.permissioncontroller.permission.utils.KotlinUtils
import com.android.permissioncontroller.permission.utils.KotlinUtils.getPermGroupDescription
import com.android.permissioncontroller.permission.utils.KotlinUtils.getPermGroupLabel
-import com.android.permissioncontroller.permission.utils.Utils
import com.android.settingslib.utils.applications.AppUtils
import java.text.Collator
import java.util.Random
@@ -162,16 +161,7 @@ class WearPermissionAppsHelper(
}
val summary =
if (Flags.wearPrivacyDashboardEnabled()) {
- lastAccessTime?.let {
- viewModel.getPreferenceSummary(
- application.resources,
- Utils.getPermissionLastAccessSummaryTimestamp(
- lastAccessTime,
- application,
- permGroupName
- )
- )
- }
+ lastAccessTime?.let { WearUtils.getPreferenceSummary(application, lastAccessTime) }
} else {
null
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearUtils.kt
new file mode 100644
index 000000000..53d41f7f0
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/WearUtils.kt
@@ -0,0 +1,80 @@
+/*
+ * 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.permissioncontroller.permission.ui.wear
+
+import android.content.Context
+import android.text.format.DateFormat
+import androidx.annotation.IntDef
+import com.android.permissioncontroller.R
+import java.time.ZonedDateTime
+import java.time.temporal.ChronoUnit
+
+object WearUtils {
+ @Retention(AnnotationRetention.SOURCE)
+ @IntDef(value = [LAST_24H_TODAY, LAST_24H_YESTERDAY, LAST_7D, NOT_IN_LAST_7D])
+ annotation class AppPermsLastAccessType
+
+ const val LAST_24H_TODAY = 1
+ const val LAST_24H_YESTERDAY = 2
+ const val LAST_7D = 3
+ const val NOT_IN_LAST_7D = 4
+
+ /** Get the preference summary in app permission groups and permission apps screens for Wear. */
+ @JvmStatic
+ fun getPreferenceSummary(context: Context, lastAccessTime: Long?): String {
+ val summaryTimestamp = getPermissionLastAccessSummaryTimestamp(lastAccessTime, context)
+ val res = context.resources
+ return when (summaryTimestamp.second) {
+ LAST_24H_TODAY ->
+ res.getString(R.string.wear_app_perms_24h_access, summaryTimestamp.first)
+ LAST_24H_YESTERDAY ->
+ res.getString(R.string.wear_app_perms_24h_access_yest, summaryTimestamp.first)
+ LAST_7D ->
+ res.getString(
+ R.string.wear_app_perms_7d_access,
+ summaryTimestamp.third,
+ summaryTimestamp.first
+ )
+ else -> ""
+ }
+ }
+
+ @JvmStatic
+ private fun getPermissionLastAccessSummaryTimestamp(
+ lastAccessTime: Long?,
+ context: Context
+ ): Triple<String, Int, String> {
+ val midnightToday =
+ (ZonedDateTime.now().truncatedTo(ChronoUnit.DAYS).toEpochSecond() * 1000L)
+ val midnightYesterday =
+ ZonedDateTime.now().minusDays(1).truncatedTo(ChronoUnit.DAYS).toEpochSecond() * 1000L
+ val isLastAccessToday = (lastAccessTime != null && midnightToday <= lastAccessTime)
+ val isLastAccessTodayOrYesterday =
+ (lastAccessTime != null && midnightYesterday <= lastAccessTime)
+ var lastAccessTimeFormatted = ""
+ var lastAccessDateFormatted = ""
+ @AppPermsLastAccessType var lastAccessType = NOT_IN_LAST_7D
+ if (lastAccessTime != null) {
+ lastAccessTimeFormatted = DateFormat.getTimeFormat(context).format(lastAccessTime)
+ lastAccessDateFormatted = DateFormat.getDateFormat(context).format(lastAccessTime)
+ lastAccessType =
+ if (isLastAccessToday) LAST_24H_TODAY
+ else if (isLastAccessTodayOrYesterday) LAST_24H_YESTERDAY else LAST_7D
+ }
+ return Triple(lastAccessTimeFormatted, lastAccessType, lastAccessDateFormatted)
+ }
+}