Merge "String changes in the cross profile settings page" into rvc-dev
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 3b085dc..d4a69f2 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -290,7 +290,7 @@
<string name="lockdown_settings_summary" msgid="7422522013953398806">"Mostra a opción do botón de acendido que desactiva Smart Lock, o desbloqueo biométrico e as notificacións da pantalla de bloqueo"</string>
<string name="trust_lost_locks_screen_title" msgid="4231232144565291276">"Bloquear pantalla ao perder a confianza"</string>
<string name="trust_lost_locks_screen_summary" msgid="718374221849537361">"Se se activa, o dispositivo bloquearase cando o último axente de confianza perda ese privilexio"</string>
- <string name="owner_info_settings_summary" msgid="347238313388083297">"Ningunha"</string>
+ <string name="owner_info_settings_summary" msgid="347238313388083297">"Ningún"</string>
<string name="owner_info_settings_status" msgid="7488764871758677862">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="owner_info_settings_edit_text_hint" msgid="841926875876050274">"Por exemplo: Android de Xoán."</string>
<string name="show_profile_info_on_lockscreen_label" msgid="5734739022887933365">"Mostrar info do perfil na pantalla de bloqueo"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 9d878d0..4be0b18 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2127,24 +2127,17 @@
<string name="accessibility_screen_magnification_summary" msgid="2023126829553044999">"Vuta karibu haraka kwenye skrini ili uonyeshe maudhui vizuri zaidi.<br/><br/><b>Ili uvute karibu:</b><br/> 1. Tumia njia ya mkato ili uanzishe ukuzaji<br/> 2. Gusa skrini<br/> 3. Buruta vidole viwili ili usogeze kwenye skrini<br/> 4. Bana kwa vidole viwili ili ubadilishe ukuzaji<br/> 5. Tumia njia ya mkato ili usimamishe ukuzaji<br/><br/><b>Ili uvute karibu kwa muda:</b><br/> 1. Tumia njia ya mkato ili uanzishe ukuzaji<br/> 2. Gusa na ushikilie mahali popote kwenye skrini<br/> 3. Buruta kidole ili usogeze kwenye skrini<br/> 4. Inua kidole ili uache kukuza"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Ukiwasha ukuzaji, unaweza kuvuta karibu kwenye skrini yako.\n\n"<b>"Ili ukuze"</b>", anzisha ukuzaji kisha uguse mahali popote kwenye skrini.\n"<ul><li>"Buruta vidole 2 au zaidi ili usogeze"</li>\n<li>"Bana vidole 2 au zaidi ili urekebishe ukuzaji"</li></ul>\n\n<b>"Ili ukuze kwa muda"</b>", anzisha ukuzaji kisha uguse na ushikilie mahali popote kwenye skrini.\n"<ul><li>"Buruta ili usogeze kwenye skrini"</li>\n<li>"Inua kidole ili usogeze mbali"</li></ul>\n\n"Huwezi kuvuta karibu kwenye kibodi au sehemu ya viungo muhimu."</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Tumia kitufe cha ufikivu kufungua"</string>
- <!-- no translation found for accessibility_tutorial_dialog_title_volume (494810949830845234) -->
- <skip />
+ <string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Shikilia vitufe vya sauti ili ufungue"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Gusa skrini mara tatu ili ufungue"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Tumia ishara ili ufungue"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="8485448068531147828">"Tumia ishara mpya ya ufikivu"</string>
- <!-- no translation found for accessibility_tutorial_dialog_message_button (7002398857479782303) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_volume (5033080515460519183) -->
- <skip />
+ <string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Ili utumie kipengele hiki, gusa kitufe cha zana za ufikivu cha <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> katika sehemu ya chini ya skrini yako.\n\nIli ubadilishe kati ya vipengele, gusa na ushikilie kitufe cha zana za ufikivu."</string>
+ <string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Ili utumie kipengele hiki, bonyeza na ushikilie vitufe vyote viwili vya sauti."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Ili uanzishe na kusimamisha ukuzaji, gusa mara tatu mahali popote kwenye skrini yako."</string>
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture (4148062210755434854) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture_talkback (8142847782708562793) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture_settings (40769674586981429) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture_settings_talkback (7292969929578621958) -->
- <skip />
+ <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Ili utumie kipengele hiki, telezesha vidole viwili juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole viwili juu na ushikilie."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Ili utumie kipengele hiki, telezesha vidole vitatu juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole vitatu juu na ushikilie."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Ili utumie kipengele cha ufikivu, telezesha vidole viwili juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole viwili juu na ushikilie."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Ili utumie kipengele cha ufikivu, telezesha vidole vitatu juu kutoka sehemu ya chini ya skrini.\n\nIli ubadilishe kati ya vipengele, telezesha vidole vitatu juu na ushikilie."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Nimeelewa"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"Njia mkato ya <xliff:g id="SERVICE">%1$s</xliff:g>"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"Kitufe cha zana za ufikivu"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index da7d6c1..30314f5 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2127,24 +2127,17 @@
<string name="accessibility_screen_magnification_summary" msgid="2023126829553044999">"İçeriği daha net görüntülemek için ekranı hızlıca yakınlaştırın.<br/><br/><b>Yakınlaştırmak için:</b><br/> 1. Büyütmeyi başlatmak için kısayolu kullanın<br/> 2. Ekrana dokunun<br/> 3. Ekranda gezinmek için 2 parmağınızı sürükleyin<br/> 4. Yakınlaştırmayı ayarlamak için 2 parmağınızla sıkıştırın<br/> 5. Büyütmeyi durdurmak için kısayolu kullanın<br/><br/><b>Geçici bir süreliğine yakınlaştırmak için:</b><br/> 1. Büyütmeyi başlatmak için kısayolu kullanın<br/> 2. Ekranda herhangi bir yere dokunup basılı tutun<br/> 3. Ekranda gezinmek için parmağınızı sürükleyin<br/> 4. Büyütmeyi durdurmak için parmağınızı kaldırın"</string>
<string name="accessibility_screen_magnification_navbar_summary" msgid="807985499898802296">"Büyütme açıldığında ekranınızda yakınlaştırma yapabilirsiniz.\n\n"<b>"Yakınlaştırmak için"</b>", büyütmeyi başlatın, ardından ekranda herhangi bir yere dokunun.\n"<ul><li>"Kaydırmak için 2 veya daha fazla parmağınızı sürükleyin"</li>\n<li>"Yakınlaştırmayı ayarlamak için 2 veya daha fazla parmağınızı birbirine yaklaştırın"</li></ul>\n\n<b>"Geçici olarak yakınlaştırmak için"</b>", büyütmeyi başlatın, ardından ekranda herhangi bir yere dokunup basılı tutun.\n"<ul><li>"Ekranda hareket etmek için sürükleyin"</li>\n<li>"Uzaklaştırmak için parmağınızı çekin"</li></ul>\n\n"Klavyede veya gezinme çubuğundayken yakınlaştırma yapamazsınız."</string>
<string name="accessibility_tutorial_dialog_title_button" msgid="4681164949716215131">"Açmak için erişilebilirlik düğmesini kullanın"</string>
- <!-- no translation found for accessibility_tutorial_dialog_title_volume (494810949830845234) -->
- <skip />
+ <string name="accessibility_tutorial_dialog_title_volume" msgid="494810949830845234">"Açmak için ses düğmelerini basılı tutun"</string>
<string name="accessibility_tutorial_dialog_title_triple" msgid="7089562919284464400">"Açmak için ekrana üç kez dokunun"</string>
<string name="accessibility_tutorial_dialog_title_gesture" msgid="4965810097646659332">"Açmak için hareketi kullanın"</string>
<string name="accessibility_tutorial_dialog_title_gesture_settings" msgid="8485448068531147828">"Yeni erişilebilirlik hareketlerini kullanma"</string>
- <!-- no translation found for accessibility_tutorial_dialog_message_button (7002398857479782303) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_volume (5033080515460519183) -->
- <skip />
+ <string name="accessibility_tutorial_dialog_message_button" msgid="7002398857479782303">"Bu özelliği kullanmak için ekranınızın alt kısmındaki erişilebilirlik düğmesine <xliff:g id="ACCESSIBILITY_ICON">%s</xliff:g> dokunun.\n\nÖzellikler arasında geçiş yapmak için erişilebilirlik düğmesine dokunup basılı tutun."</string>
+ <string name="accessibility_tutorial_dialog_message_volume" msgid="5033080515460519183">"Bu özelliği kullanmak için ses tuşlarının ikisini birden basılı tutun."</string>
<string name="accessibility_tutorial_dialog_message_triple" msgid="5219991116201165146">"Büyütmeyi başlatıp durdurmak için ekranınızda herhangi bir yere üç kez dokunun."</string>
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture (4148062210755434854) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture_talkback (8142847782708562793) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture_settings (40769674586981429) -->
- <skip />
- <!-- no translation found for accessibility_tutorial_dialog_message_gesture_settings_talkback (7292969929578621958) -->
- <skip />
+ <string name="accessibility_tutorial_dialog_message_gesture" msgid="4148062210755434854">"Bu özelliği kullanmak için 2 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 2 parmağınızla yukarı kaydırıp basılı tutun."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_talkback" msgid="8142847782708562793">"Bu özelliği kullanmak için 3 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 3 parmağınızla yukarı kaydırıp basılı tutun."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_settings" msgid="40769674586981429">"Bir erişilebilirlik özelliğini kullanmak için 2 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 2 parmağınızla yukarı kaydırıp basılı tutun."</string>
+ <string name="accessibility_tutorial_dialog_message_gesture_settings_talkback" msgid="7292969929578621958">"Bir erişilebilirlik özelliğini kullanmak için 3 parmağınızla ekranın alt kısmından yukarı kaydırın.\n\nÖzellikler arasında geçiş yapmak için 3 parmağınızla yukarı kaydırıp basılı tutun."</string>
<string name="accessibility_tutorial_dialog_button" msgid="2031773187678948436">"Anladım"</string>
<string name="accessibility_shortcut_title" msgid="8125867833704517463">"<xliff:g id="SERVICE">%1$s</xliff:g> kısayolu"</string>
<string name="accessibility_shortcut_edit_summary_software" msgid="6405629977940618205">"Erişilebilirlik düğmesi"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b08361e..54525d5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4944,7 +4944,7 @@
<string name="accessibility_screen_magnification_navbar_summary">When magnification is turned on, you can zoom in on your screen.\n\n<b>To zoom</b>, start magnification, then tap anywhere on the screen.\n<ul><li>Drag 2 or more fingers to scroll</li>\n<li>Pinch 2 or more fingers to adjust zoom</li></ul>\n\n<b>To zoom temporarily</b>, start magnification, then touch & hold anywhere on the screen.\n<ul><li>Drag to move around the screen</li>\n<li>Lift finger to zoom out</li></ul>\n\nYou can’t zoom in on the keyboard or navigation bar.</string>
<!-- Title for the accessibility tutorial dialog in accessibility service with button. [CHAR LIMIT=50] -->
<string name="accessibility_tutorial_dialog_title_button">Use accessibility button to open</string>
- <!-- Title for the accessibility tutorial dialog in accessibility service with volume keys. [CHAR LIMIT=50] -->
+ <!-- Title for the accessibility tutorial dialog in accessibility service with volume keys. [CHAR LIMIT=100] -->
<string name="accessibility_tutorial_dialog_title_volume">Hold volume keys to open</string>
<!-- Title for the accessibility tutorial dialog in accessibility service with triple tap. [CHAR LIMIT=100] -->
<string name="accessibility_tutorial_dialog_title_triple">Triple tap screen to open</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8393f80..d8f5e87 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -501,6 +501,11 @@
<item name="rowStyle">@style/SliceRow.Settings</item>
</style>
+ <style name="Widget.SliceView.ContextualCard">
+ <item name="rowStyle">@style/SliceRow</item>
+ <item name="android:background">@color/contextual_card_background</item>
+ </style>
+
<style name="Widget.SliceView.Panel">
<item name="titleSize">16sp</item>
<item name="rowStyle">@style/SliceRow</item>
@@ -511,35 +516,6 @@
<item name="rowStyle">@style/SliceRow.Slider</item>
</style>
- <style name="SliceRow.Slider">
- <!-- 2dp start padding for the start icon -->
- <item name="titleItemStartPadding">10dp</item>
- <item name="titleItemEndPadding">0dp</item>
-
- <!-- Padding between content and the start icon is 14dp -->
- <item name="contentStartPadding">5dp</item>
- <!-- Padding between content and end items is 16dp -->
- <item name="contentEndPadding">16dp</item>
-
- <!-- Both side margins of end item are 16dp -->
- <item name="endItemStartPadding">0dp</item>
- <item name="endItemEndPadding">24dp</item>
-
- <!-- Both side margins of bottom divider are 12dp -->
- <item name="bottomDividerStartPadding">12dp</item>
- <item name="bottomDividerEndPadding">12dp</item>
-
- <item name="actionDividerHeight">32dp</item>
- <!-- Align text with slider -->
- <item name="titleStartPadding">6dp</item>
- <item name="subContentStartPadding">6dp</item>
- </style>
-
- <style name="Widget.SliceView.ContextualCard">
- <item name="rowStyle">@style/SliceRow</item>
- <item name="android:background">@color/contextual_card_background</item>
- </style>
-
<style name="SliceRow">
<!-- 2dp start padding for the start icon -->
<item name="titleItemStartPadding">2dp</item>
@@ -566,6 +542,23 @@
<item name="contentStartPadding">8dp</item>
</style>
+ <style name="SliceRow.Slider">
+ <!-- 10dp start padding for the start icon -->
+ <item name="titleItemStartPadding">10dp</item>
+
+ <!-- Padding between content and the start icon is 5dp -->
+ <item name="contentStartPadding">5dp</item>
+
+ <!-- 0dp start padding for the end item -->
+ <item name="endItemStartPadding">0dp</item>
+ <!-- 24dp end padding for the end item -->
+ <item name="endItemEndPadding">24dp</item>
+
+ <!-- Align text with slider -->
+ <item name="titleStartPadding">6dp</item>
+ <item name="subContentStartPadding">6dp</item>
+ </style>
+
<style name="DisclaimerPositiveButton" parent="@style/SudGlifButton.Primary">
<item name="android:layout_margin">16dp</item>
<item name="android:paddingStart">8dp</item>
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 6b0759a..f8b64fb 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -30,6 +30,7 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
+import android.os.Handler;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.Html;
@@ -96,6 +97,7 @@
private int mUserShortcutTypes = UserShortcutType.EMPTY;
private CheckBox mSoftwareTypeCheckBox;
private CheckBox mHardwareTypeCheckBox;
+ private SettingsContentObserver mSettingsContentObserver;
// For html description of accessibility service, must follow the rule, such as
// <img src="R.drawable.fileName"/>, a11y settings will get the resources successfully.
@@ -133,6 +135,17 @@
removeDialog(DialogEnums.EDIT_SHORTCUT);
mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
};
+
+ final List<String> shortcutFeatureKeys = new ArrayList<>();
+ shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS);
+ shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE);
+ mSettingsContentObserver = new SettingsContentObserver(new Handler(), shortcutFeatureKeys) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateShortcutPreferenceData();
+ updateShortcutPreference();
+ }
+ };
return super.onCreateView(inflater, container, savedInstanceState);
}
@@ -229,6 +242,7 @@
final AccessibilityManager am = getPrefContext().getSystemService(
AccessibilityManager.class);
am.addTouchExplorationStateChangeListener(mTouchExplorationStateChangeListener);
+ mSettingsContentObserver.register(getContentResolver());
updateShortcutPreferenceData();
updateShortcutPreference();
}
@@ -238,6 +252,7 @@
final AccessibilityManager am = getPrefContext().getSystemService(
AccessibilityManager.class);
am.removeTouchExplorationStateChangeListener(mTouchExplorationStateChangeListener);
+ mSettingsContentObserver.unregister(getContentResolver());
super.onPause();
}
@@ -618,7 +633,7 @@
getShortcutTypeSummary(getPrefContext()));
}
- private void updateShortcutPreferenceData() {
+ protected void updateShortcutPreferenceData() {
if (mComponentName == null) {
return;
}
@@ -651,7 +666,7 @@
mShortcutPreference.setTitle(title);
}
- private void updateShortcutPreference() {
+ protected void updateShortcutPreference() {
if (mComponentName == null) {
return;
}
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index 23fb153..52f8f71 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -467,7 +467,8 @@
showDialog(DialogEnums.MAGNIFICATION_EDIT_SHORTCUT);
}
- private void updateShortcutPreferenceData() {
+ @Override
+ protected void updateShortcutPreferenceData() {
// Get the user shortcut type from settings provider.
mUserShortcutType = getUserShortcutTypeFromSettings(getPrefContext());
if (mUserShortcutType != UserShortcutType.EMPTY) {
@@ -489,7 +490,8 @@
mShortcutPreference.setTitle(title);
}
- private void updateShortcutPreference() {
+ @Override
+ protected void updateShortcutPreference() {
final int shortcutTypes = getUserShortcutTypes(getPrefContext(), UserShortcutType.SOFTWARE);
mShortcutPreference.setChecked(
hasMagnificationValuesInSettings(getPrefContext(), shortcutTypes));
diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
index d954e72..147c412 100644
--- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
@@ -16,6 +16,10 @@
package com.android.settings.applications.appinfo;
+import static com.android.settings.core.instrumentation.SettingsStatsLog.AUTO_REVOKED_APP_INTERACTION;
+import static com.android.settings.core.instrumentation.SettingsStatsLog.AUTO_REVOKED_APP_INTERACTION__ACTION__OPEN_IN_SETTINGS;
+import static com.android.settings.core.instrumentation.SettingsStatsLog.AUTO_REVOKED_APP_INTERACTION__ACTION__REMOVE_IN_SETTINGS;
+
import android.app.Activity;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
@@ -52,6 +56,7 @@
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.instrumentation.SettingsStatsLog;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -118,10 +123,12 @@
private RestrictedLockUtils.EnforcedAdmin mAppsControlDisallowedAdmin;
private PreferenceScreen mScreen;
+ private long mSessionId;
private boolean mUpdatedSysApp = false;
private boolean mListeningToPackageRemove = false;
private boolean mFinishing = false;
private boolean mAppsControlDisallowedBySystem;
+ private boolean mAccessedFromAutoRevoke;
public AppButtonsPreferenceController(SettingsActivity activity,
InstrumentedPreferenceFragment fragment,
@@ -149,6 +156,8 @@
mRequestUninstall = requestUninstall;
mRequestRemoveDeviceAdmin = requestRemoveDeviceAdmin;
mAppLaunchIntent = mPm.getLaunchIntentForPackage(mPackageName);
+ mSessionId = activity.getIntent().getLongExtra(Intent.ACTION_AUTO_REVOKE_PERMISSIONS, 0);
+ mAccessedFromAutoRevoke = mSessionId != 0;
if (packageName != null) {
mAppEntry = mState.getEntry(packageName, mUserId);
@@ -202,6 +211,13 @@
@Override
public void onClick(View v) {
+ if (mAccessedFromAutoRevoke) {
+
+ Log.i(TAG, "sessionId: " + mSessionId + " uninstalling " + mPackageName
+ + " with uid " + getUid() + ", reached from auto revoke");
+ SettingsStatsLog.write(AUTO_REVOKED_APP_INTERACTION, mSessionId, getUid(),
+ mPackageName, AUTO_REVOKED_APP_INTERACTION__ACTION__REMOVE_IN_SETTINGS);
+ }
final String packageName = mAppEntry.info.packageName;
// Uninstall
if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
@@ -701,10 +717,28 @@
private void launchApplication() {
if (mAppLaunchIntent != null) {
+ if (mAccessedFromAutoRevoke) {
+
+ Log.i(TAG, "sessionId: " + mSessionId + " uninstalling " + mPackageName
+ + " with uid " + getUid() + ", reached from auto revoke");
+ SettingsStatsLog.write(AUTO_REVOKED_APP_INTERACTION, mSessionId, getUid(),
+ mPackageName, AUTO_REVOKED_APP_INTERACTION__ACTION__OPEN_IN_SETTINGS);
+ }
mContext.startActivityAsUser(mAppLaunchIntent, new UserHandle(mUserId));
}
}
+ private int getUid() {
+ int uid = -1;
+ if (mPackageInfo == null) {
+ retrieveAppEntry();
+ }
+ if (mPackageInfo != null) {
+ uid = mPackageInfo.applicationInfo.uid;
+ }
+ return uid;
+ }
+
private boolean isInstantApp() {
return mAppEntry != null && AppUtils.isInstant(mAppEntry.info);
}
diff --git a/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java b/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
index cf0be20..8860de9 100644
--- a/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppPermissionPreferenceController.java
@@ -35,6 +35,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Random;
/**
* A PreferenceController handling the logic for permissions of apps.
@@ -44,6 +45,7 @@
private static final String TAG = "PermissionPrefControl";
private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
+ private static final long INVALID_SESSION_ID = 0;
private final PackageManager mPackageManager;
@@ -124,6 +126,16 @@
final Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mParent.getAppEntry().info.packageName);
intent.putExtra(EXTRA_HIDE_INFO_BUTTON, true);
+ String action = mParent.getActivity().getIntent().getAction();
+ long sessionId = mParent.getActivity().getIntent().getLongExtra(
+ Intent.ACTION_AUTO_REVOKE_PERMISSIONS, INVALID_SESSION_ID);
+ if ((action != null && action.equals(Intent.ACTION_AUTO_REVOKE_PERMISSIONS))
+ || sessionId != INVALID_SESSION_ID) {
+ while (sessionId == INVALID_SESSION_ID) {
+ sessionId = new Random().nextLong();
+ }
+ intent.putExtra(Intent.ACTION_AUTO_REVOKE_PERMISSIONS, sessionId);
+ }
try {
mParent.getActivity().startActivityForResult(intent, mParent.SUB_INFO_FRAGMENT);
} catch (ActivityNotFoundException e) {
diff --git a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
index 33faee0..4d420d1 100644
--- a/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/manageapplications/ManageApplicationsTest.java
@@ -56,6 +56,7 @@
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
+import com.android.settings.testutils.shadow.ShadowAppUtils;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.widget.LoadingViewController;
import com.android.settingslib.applications.ApplicationsState;
@@ -76,7 +77,7 @@
import java.util.ArrayList;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = ShadowUserManager.class)
+@Config(shadows = {ShadowUserManager.class, ShadowAppUtils.class})
public class ManageApplicationsTest {
@Mock
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAppUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAppUtils.java
new file mode 100644
index 0000000..871a536
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAppUtils.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2020 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.settings.testutils.shadow;
+
+import android.content.Context;
+
+import com.android.settingslib.applications.AppUtils;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Implements(AppUtils.class)
+public class ShadowAppUtils {
+
+ private static Map<String, String> sAppContentDesMap;
+
+ @Implementation
+ protected static CharSequence getAppContentDescription(Context context, String packageName,
+ int userId) {
+ if (sAppContentDesMap != null) {
+ return sAppContentDesMap.get(packageName);
+ }
+ return null;
+ }
+
+ public static void setAppContentDescription(String packageName, String appContentDes) {
+ if (sAppContentDesMap == null) {
+ sAppContentDesMap = new HashMap<>();
+ }
+ sAppContentDesMap.put(packageName, appContentDes);
+ }
+}