diff options
9 files changed, 32 insertions, 39 deletions
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg index bd5908319..0bfd581d5 100644 --- a/PREUPLOAD.cfg +++ b/PREUPLOAD.cfg @@ -11,4 +11,4 @@ checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPL ktlint_hook = ${REPO_ROOT}/prebuilts/ktlint/ktlint.py --no-verify-format -f ${PREUPLOAD_FILES} [Tool Paths] -ktfmt = ${REPO_ROOT}/prebuilts/build-tools/common/framework/ktfmt.jar +ktfmt = ${REPO_ROOT}/external/ktfmt/ktfmt.sh diff --git a/PermissionController/res/values-as/strings.xml b/PermissionController/res/values-as/strings.xml index 85ff0e289..e46e8bafe 100644 --- a/PermissionController/res/values-as/strings.xml +++ b/PermissionController/res/values-as/strings.xml @@ -367,7 +367,7 @@ <string name="role_dialer_request_description" msgid="6288839625724909320">"এই এপ্টোক আপোনাৰ কেমেৰা, সম্পৰ্ক, মাইক্ৰ’ফ’ন, ফ’ন আৰু এছএমএছৰ এক্সেছ দিয়া হ’ব"</string> <string name="role_dialer_search_keywords" msgid="3324448983559188087">"ডায়েলাৰ"</string> <string name="role_sms_label" msgid="8456999857547686640">"ডিফ’ল্ট এছএমএছ এপ্"</string> - <string name="role_sms_short_label" msgid="4371444488034692243">"এছএমএছ এপ্"</string> + <string name="role_sms_short_label" msgid="4371444488034692243">"এছএমএছ এপ"</string> <string name="role_sms_description" msgid="3424020199148153513">"যিবোৰ এপে আপোনাক নিজৰ ফ’ন নম্বৰ ব্যৱহাৰ কৰি চমু পাঠ বাৰ্তা, ফট’, ভিডিঅ’ আৰু অন্য সমল পঠিওৱাৰ অনুমতি দিয়ে"</string> <string name="role_sms_request_title" msgid="7953552109601185602">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ ডিফ’ল্ট এছএমএছ এপ্ হিচাপে ছেট কৰিবনে?"</string> <string name="role_sms_request_description" msgid="2691004766132144886">"এই এপ্টোক আপোনাৰ কেমেৰা, সম্পৰ্ক, ফাইল আৰু মিডিয়া, মাইক্ৰ’ফ’ন, ফ’ন আৰু এছএমএছৰ এক্সেছ দিয়া হ’ব"</string> diff --git a/PermissionController/res/values-de/strings.xml b/PermissionController/res/values-de/strings.xml index 5ec60858a..a1347a736 100644 --- a/PermissionController/res/values-de/strings.xml +++ b/PermissionController/res/values-de/strings.xml @@ -675,7 +675,7 @@ <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"Aus Sicherheitsgründen ist diese Einstellung derzeit nicht verfügbar."</string> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"App wurde Zugriff auf „<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>“ verweigert"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"Die App hat Zugriff auf eine vertrauliche Berechtigung angefordert. Wenn du diesen zulässt, sind deine privaten Daten und Finanzdaten eventuell gefährdet.<xliff:g id="ID_1"><br><br></xliff:g>Die App funktioniert ohne diese eingeschränkte Berechtigung aber möglicherweise nicht richtig. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Informationen dazu, wie du den Zugriff erlaubst</a>"</string> - <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App wurde Zugriff verweigert, die standardmäßige <xliff:g id="ROLE_NAME">%1$s</xliff:g> zu sein"</string> + <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"App wurde der Zugriff verweigert, die standardmäßige <xliff:g id="ROLE_NAME">%1$s</xliff:g> zu sein"</string> <string name="enhanced_confirmation_dialog_desc_role" msgid="6369601947905234551">"Die App hat Zugriff auf vertrauliche Berechtigungen angefordert. Wenn du diesen zulässt, sind deine privaten Daten und Finanzdaten eventuell gefährdet.<xliff:g id="ID_1"><br><br></xliff:g>Die App funktioniert ohne diese eingeschränkten Berechtigungen aber möglicherweise nicht richtig. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Informationen dazu, wie du den Zugriff erlaubst</a>"</string> <string name="enhanced_confirmation_dialog_title_settings_default" msgid="1858092969721041576">"App wurde Zugriff verweigert"</string> <string name="enhanced_confirmation_dialog_desc_settings_default" msgid="6911632348359332981">"Wenn du den Zugriff auf diese Berechtigung zulässt, sind deine privaten Daten und Finanzdaten eventuell gefährdet.<xliff:g id="ID_1"><br><br></xliff:g>Die App funktioniert ohne diese eingeschränkte Berechtigung aber möglicherweise nicht richtig. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>Informationen dazu, wie du den Zugriff erlaubst</a>"</string> diff --git a/PermissionController/res/values-hi/strings.xml b/PermissionController/res/values-hi/strings.xml index 6503fa873..eb95fb9ba 100644 --- a/PermissionController/res/values-hi/strings.xml +++ b/PermissionController/res/values-hi/strings.xml @@ -673,7 +673,7 @@ <string name="enhanced_confirmation_dialog_desc" msgid="5921240234843839219">"आपकी सुरक्षा के लिए, यह सेटिंग फ़िलहाल उपलब्ध नहीं है."</string> <string name="enhanced_confirmation_dialog_title_permission" msgid="2149144789394238266">"ऐप्लिकेशन को, <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> को ऐक्सेस करने की अनुमति नहीं मिली"</string> <string name="enhanced_confirmation_dialog_desc_permission" msgid="3150778951946468945">"इस ऐप्लिकेशन ने संवेदनशील जानकारी ऐक्सेस करने का अनुरोध किया है. इसे अनुमति देने पर, आपकी निजी और वित्तीय जानकारी की सुरक्षा को खतरा हो सकता है.<xliff:g id="ID_1"><br><br></xliff:g>हालांकि, हो सकता है कि पाबंदी वाली अनुमति न मिलने पर, ऐप्लिकेशन सही तरह से काम न करें. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ऐक्सेस देने का तरीका जानें</a>"</string> - <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ऐप्लिकेशन को, डिफ़ॉल्ट <xliff:g id="ROLE_NAME">%1$s</xliff:g> के तौर पर सेट करने की अनुमति नहीं मिली"</string> + <string name="enhanced_confirmation_dialog_title_role" msgid="1737023798483772780">"ऐप्लिकेशन को डिफ़ॉल्ट <xliff:g id="ROLE_NAME">%1$s</xliff:g> के तौर पर सेट करने की अनुमति नहीं दी गई"</string> <string name="enhanced_confirmation_dialog_desc_role" msgid="6369601947905234551">"इस ऐप्लिकेशन ने संवेदनशील जानकारी ऐक्सेस करने का अनुरोध किया है. इसे अनुमति देने पर, आपकी निजी और वित्तीय जानकारी की सुरक्षा को खतरा हो सकता है.<xliff:g id="ID_1"><br><br></xliff:g>हालांकि, हो सकता है कि पाबंदी वाली अनुमतियां न मिलने पर, ऐप्लिकेशन सही तरह से काम न करे. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ऐक्सेस देने का तरीका जानें</a>"</string> <string name="enhanced_confirmation_dialog_title_settings_default" msgid="1858092969721041576">"ऐप्लिकेशन को ऐक्सेस से जुड़ी अनुमति नहीं दी गई"</string> <string name="enhanced_confirmation_dialog_desc_settings_default" msgid="6911632348359332981">"ऐप्लिकेशन को यह अनुमति देने पर, आपकी निजी और वित्तीय जानकारी की सुरक्षा को खतरा हो सकता है.<xliff:g id="ID_1"><br><br></xliff:g>हालांकि, हो सकता है कि पाबंदी वाली अनुमति न मिलने पर, ऐप्लिकेशन सही तरह से काम न करे. <a href=<xliff:g id="LEARN_MORE_LINK">%1$s</xliff:g>>ऐक्सेस देने का तरीका जानें</a>"</string> diff --git a/PermissionController/res/values-pa/strings.xml b/PermissionController/res/values-pa/strings.xml index 366c1ee8c..f00741f53 100644 --- a/PermissionController/res/values-pa/strings.xml +++ b/PermissionController/res/values-pa/strings.xml @@ -485,7 +485,7 @@ <string name="permgrouprequest_device_aware_fineupgrade" msgid="4453775952305587571">"ਕੀ <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b> \'ਤੇ <xliff:g id="APP_NAME"><b>%1$s</b></xliff:g> ਦੀ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਅਨੁਮਾਨਿਤ ਤੋਂ ਸਟੀਕ \'ਤੇ ਬਦਲਣਾ ਹੈ?"</string> <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਦੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string> <string name="permgrouprequest_device_aware_coarselocation" msgid="8367540370912066757">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b> ਦੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> - <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ਸਹੀ"</string> + <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ਸਟੀਕ"</string> <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ਅੰਦਾਜ਼ਨ"</string> <string name="permgrouprequest_calendar" msgid="1493150855673603806">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> <string name="permgrouprequest_device_aware_calendar" msgid="7161929851377463612">"ਕੀ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ਨੂੰ <b><xliff:g id="DEVICE_NAME">%2$s</xliff:g></b> \'ਤੇ ਆਪਣੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> diff --git a/PermissionController/res/values-sk/strings.xml b/PermissionController/res/values-sk/strings.xml index 67cd04116..73a78befe 100644 --- a/PermissionController/res/values-sk/strings.xml +++ b/PermissionController/res/values-sk/strings.xml @@ -368,7 +368,7 @@ <string name="role_dialer_search_keywords" msgid="3324448983559188087">"vytáčanie"</string> <string name="role_sms_label" msgid="8456999857547686640">"Predvolená aplikácia na SMS"</string> <string name="role_sms_short_label" msgid="4371444488034692243">"aplikáciou na SMS"</string> - <string name="role_sms_description" msgid="3424020199148153513">"Aplikácie, ktoré vám umožňujú prostredníctvom vášho telefónneho čísla odosielať a prijímať krátke textové správy, fotky, videá a ďalší obsah"</string> + <string name="role_sms_description" msgid="3424020199148153513">"Aplikácie, ktoré vám pomocou telefónneho čísla umožňujú posielať a prijímať krátke textové správy, fotky, videá a iné"</string> <string name="role_sms_request_title" msgid="7953552109601185602">"Chcete <xliff:g id="APP_NAME">%1$s</xliff:g> nastaviť ako predvolenú aplikáciu na SMS?"</string> <string name="role_sms_request_description" msgid="2691004766132144886">"Tejto aplikácii bude udelený prístup k vašej kamere, kontaktom, súborom a médiám, mikrofónu, telefónu aj správam SMS"</string> <string name="role_sms_search_keywords" msgid="8022048144395047352">"textová správa, poslať textovú správu, správy, posielanie textových správ"</string> diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/AnnotatedText.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/AnnotatedText.kt index d1b665846..bcdf3b661 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/AnnotatedText.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/AnnotatedText.kt @@ -19,81 +19,75 @@ package com.android.permissioncontroller.permission.ui.wear.elements import android.text.Spanned import android.text.style.ClickableSpan import android.view.View -import androidx.compose.foundation.text.ClickableText +import androidx.compose.foundation.text.BasicText import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.LinkAnnotation +import androidx.compose.ui.text.LinkInteractionListener import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.TextDecoration import androidx.wear.compose.material.MaterialTheme -import com.android.permissioncontroller.permission.ui.wear.WearUtils.capitalize const val CLICKABLE_SPAN_TAG = "CLICKABLE_SPAN_TAG" @Composable -fun AnnotatedText( - text: CharSequence, - style: TextStyle, - modifier: Modifier = Modifier, - shouldCapitalize: Boolean -) { +fun AnnotatedText(text: CharSequence, style: TextStyle, modifier: Modifier = Modifier) { val onClickCallbacks = mutableMapOf<String, (View) -> Unit>() - val annotatedString = spannableStringToAnnotatedString(text, shouldCapitalize, onClickCallbacks) val context = LocalContext.current - ClickableText(text = annotatedString, style = style, modifier = modifier) { offset -> - // Fires the onClickCallback at the clicked position. - // It's tricky to send an empty view over the parameter, but no way to get the proper one. - // Need to improve to use it in common. - annotatedString - .getStringAnnotations(CLICKABLE_SPAN_TAG, offset, offset) - .firstOrNull() - ?.let { onClickCallbacks.get(it.item)?.invoke(View(context)) } + val listener = LinkInteractionListener { + if (it is LinkAnnotation.Clickable) { + onClickCallbacks.get(it.tag)?.invoke(View(context)) + } } + + val annotatedString = + spannableStringToAnnotatedString(text, onClickCallbacks, listener = listener) + BasicText(text = annotatedString, style = style, modifier = modifier) } @Composable private fun spannableStringToAnnotatedString( text: CharSequence, - shouldCapitalize: Boolean, onClickCallbacks: MutableMap<String, (View) -> Unit>, - spanColor: Color = MaterialTheme.colors.primary -): AnnotatedString { - val finalString = if (shouldCapitalize) text.toString().capitalize() else text.toString() - return if (text is Spanned) { + spanColor: Color = MaterialTheme.colors.primary, + listener: LinkInteractionListener +) = + if (text is Spanned) { buildAnnotatedString { - append(finalString) + append((text.toString())) for (span in text.getSpans(0, text.length, Any::class.java)) { val start = text.getSpanStart(span) val end = text.getSpanEnd(span) when (span) { is ClickableSpan -> - addClickableSpan(span, spanColor, start, end, onClickCallbacks) + addClickableSpan(span, spanColor, start, end, onClickCallbacks, listener) else -> addStyle(SpanStyle(), start, end) } } } } else { - AnnotatedString(finalString) + AnnotatedString(text.toString()) } -} private fun AnnotatedString.Builder.addClickableSpan( span: ClickableSpan, spanColor: Color, start: Int, end: Int, - onClickCallbacks: MutableMap<String, (View) -> Unit> + onClickCallbacks: MutableMap<String, (View) -> Unit>, + listener: LinkInteractionListener ) { + val key = "${CLICKABLE_SPAN_TAG}:$start:$end" + onClickCallbacks[key] = span::onClick + addLink(LinkAnnotation.Clickable(key, linkInteractionListener = listener), start, end) addStyle( SpanStyle(color = spanColor, textDecoration = TextDecoration.Underline), start, end, ) - val key = "${CLICKABLE_SPAN_TAG}:$start:$end" - onClickCallbacks[key] = span::onClick - addStringAnnotation(CLICKABLE_SPAN_TAG, key, start, end) } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt index 7c0a7428e..717cf9528 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt @@ -271,7 +271,6 @@ internal fun Scaffold( color = MaterialTheme.colors.onSurfaceVariant ), modifier = modifier, - shouldCapitalize = true ) } } diff --git a/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt b/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt index 0ba251aac..9325ff8fb 100644 --- a/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt +++ b/tests/cts/permissionui/src/android/permissionui/cts/CameraMicIndicatorsPermissionTest.kt @@ -109,8 +109,6 @@ class CameraMicIndicatorsPermissionTest : StsExtraBusinessLogicTestCase { private val isTv = packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) private val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) private val isWatch = packageManager.hasSystemFeature(PackageManager.FEATURE_WATCH) - private val safetyCenterMicLabel = getPermissionControllerString(MIC_LABEL_NAME) - private val safetyCenterCameraLabel = getPermissionControllerString(CAMERA_LABEL_NAME) private val originalCameraLabel = packageManager .getPermissionGroupInfo(Manifest.permission_group.CAMERA, 0) @@ -723,6 +721,7 @@ class CameraMicIndicatorsPermissionTest : StsExtraBusinessLogicTestCase { } private fun assertSafetyCenterMicViewNotNull() { + val safetyCenterMicLabel = getPermissionControllerString(MIC_LABEL_NAME) val micView = waitFindObject(byOneOfText(originalMicLabel, safetyCenterMicLabel)) assertNotNull( "View with text '$originalMicLabel' or '$safetyCenterMicLabel' not found", @@ -731,6 +730,7 @@ class CameraMicIndicatorsPermissionTest : StsExtraBusinessLogicTestCase { } private fun assertSafetyCenterCameraViewNotNull() { + val safetyCenterCameraLabel = getPermissionControllerString(CAMERA_LABEL_NAME) val cameraView = waitFindObject(byOneOfText(originalCameraLabel, safetyCenterCameraLabel)) assertNotNull( "View with text '$originalCameraLabel' or '$safetyCenterCameraLabel' not found", |