summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/res/values-am/strings.xml2
-rw-r--r--PermissionController/res/values-as-television/strings.xml2
-rw-r--r--PermissionController/res/values-as/strings.xml8
-rw-r--r--PermissionController/res/values-gu-television/strings.xml4
-rw-r--r--PermissionController/res/values-gu/strings.xml2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/DashboardUtils.kt103
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionDetailsFragment.java8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageV2Fragment.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt26
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/PermissionAppsViewModel.kt10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewPermissionsViewModel.kt6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageViewModel.kt32
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt122
-rw-r--r--PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt5
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/ReviewPermissionsViewModelTest.kt14
-rw-r--r--SafetyCenter/Resources/Android.bp1
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterListeners.java15
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterService.java6
-rw-r--r--service/java/com/android/safetycenter/UserProfileGroup.java2
-rw-r--r--tests/cts/safetycenter/src/android/safetycenter/cts/ui/SafetyCenterActivityTest.kt13
32 files changed, 244 insertions, 214 deletions
diff --git a/PermissionController/res/values-am/strings.xml b/PermissionController/res/values-am/strings.xml
index 616e84740..0250bdf2d 100644
--- a/PermissionController/res/values-am/strings.xml
+++ b/PermissionController/res/values-am/strings.xml
@@ -412,7 +412,7 @@
<string name="ongoing_usage_dialog_separator" msgid="1715181526581520068">"፣ "</string>
<string name="ongoing_usage_dialog_last_separator" msgid="4170995004748832163">" እና "</string>
<string name="default_app_search_keyword" msgid="8330125736889689743">"ነባሪ መተግበሪያዎች"</string>
- <string name="permgroup_list_microphone_and_camera" msgid="962768198001487969">"ድምጽ ማጉያ እና ካሜራ"</string>
+ <string name="permgroup_list_microphone_and_camera" msgid="962768198001487969">"ድምፅ ማጉያ እና ካሜራ"</string>
<string name="settings_button" msgid="4414988414732479636">"ቅንብሮች"</string>
<string name="default_apps" msgid="5119201969348748639">"ነባሪ መተግበሪያዎች"</string>
<string name="no_default_apps" msgid="2593466527182950231">"ምንም ነባሪ መተግበሪያዎች የሉም"</string>
diff --git a/PermissionController/res/values-as-television/strings.xml b/PermissionController/res/values-as-television/strings.xml
index 3a8197d38..2c92996a9 100644
--- a/PermissionController/res/values-as-television/strings.xml
+++ b/PermissionController/res/values-as-television/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="grant_dialog_button_deny_dont_ask_again" msgid="747769682501286250">"অস্বীকাৰ কৰক আৰু পুনৰাই নুসুধিব"</string>
- <string name="grant_dialog_how_to_change" msgid="997462845048160559">"আপুনি ইয়াক পিছত ছেটিং &gt; এপসমূহলৈ গৈ সলনি কৰিব পাৰিব"</string>
+ <string name="grant_dialog_how_to_change" msgid="997462845048160559">"আপুনি ইয়াক পাছত ছেটিং &gt; এপসমূহলৈ গৈ সলনি কৰিব পাৰিব"</string>
<string name="current_permission_template" msgid="6240787325714651204">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="4262140518693221093">"ছিষ্টেম এপসমূহ দেখুৱাওক"</string>
<string name="app_permissions_decor_title" msgid="7438716722786036814">"এপৰ অনুমতি"</string>
diff --git a/PermissionController/res/values-as/strings.xml b/PermissionController/res/values-as/strings.xml
index 50ac8c758..6bb5e8007 100644
--- a/PermissionController/res/values-as/strings.xml
+++ b/PermissionController/res/values-as/strings.xml
@@ -72,7 +72,7 @@
<string name="additional_permissions" msgid="5801285469338873430">"অতিৰিক্ত অনুমতি"</string>
<string name="app_permissions_info_button_label" msgid="7633312050729974623">"এপৰ তথ্য খোলক"</string>
<string name="additional_permissions_more" msgid="5681220714755304407">"{count,plural, =1{আৰু # টা}one{আৰু # টা}other{আৰু # টা}}"</string>
- <string name="old_sdk_deny_warning" msgid="2382236998845153919">"এই এপটো Androidৰ এটা পুৰণা সংস্কৰণৰ বাবে প্ৰস্তুত কৰা হৈছিল। অনুমতি নিদিলে ই বিচৰা ধৰণে কাম নকৰিবও পাৰে।"</string>
+ <string name="old_sdk_deny_warning" msgid="2382236998845153919">"এই এপ্‌টো Androidৰ এটা পুৰণা সংস্কৰণৰ বাবে প্ৰস্তুত কৰা হৈছিল। অনুমতি নিদিলে ই বিচৰা ধৰণে কাম নকৰিবও পাৰে।"</string>
<string name="storage_supergroup_warning_allow" msgid="103093462784523190">"এই এপ্‌টো Androidৰ এটা পুৰণা সংস্কৰণৰ বাবে ডিজাইন কৰা হৈছিল। যদি আপুনি এই অনুমতিটো দিয়ে, তেন্তে আটাইবোৰ ষ্ট’ৰেজলৈ (ফট’, ভিডিঅ’, সংগীত, অডিঅ’ আৰু অন্য ফাইলসমূহকে ধৰি) এক্সেছৰ অনুমতি দিয়া হ’ব।"</string>
<string name="storage_supergroup_warning_deny" msgid="6420765672683284347">"এই এপ্‌টো Androidৰ এটা পুৰণা সংস্কৰণৰ বাবে ডিজাইন কৰা হৈছিল। যদি আপুনি এই অনুমতিটো অস্বীকাৰ কৰে, তেন্তে আটাইবোৰ ষ্ট’ৰেজলৈ (ফট’, ভিডিঅ’, সংগীত, অডিঅ’ আৰু অন্য ফাইলসমূহকে ধৰি) এক্সেছ অস্বীকাৰ কৰা হ’ব।"</string>
<string name="default_permission_description" msgid="4624464917726285203">"অজ্ঞাত কাৰ্য কৰিব পাৰে"</string>
@@ -110,7 +110,7 @@
<string name="other_permissions" msgid="2901186127193849594">"অন্য এপৰ কার্যক্ষমতা"</string>
<string name="permission_request_title" msgid="8790310151025020126">"অনুমতি বিচাৰি কৰা অনুৰোধ"</string>
<string name="screen_overlay_title" msgid="6977038513913222078">"স্ক্ৰীন অভাৰলে\' চিনাক্ত কৰা হৈছে"</string>
- <string name="screen_overlay_message" msgid="5622563069757142102">"এই অনুমতিৰ ছেটিং সলনি কৰিবলৈ আপুনি প্ৰথমে ছেটিংসমূহ &gt; এপসমূহলৈ গৈ স্ক্ৰীণ অভাৰলে\' অফ কৰিব লাগিব"</string>
+ <string name="screen_overlay_message" msgid="5622563069757142102">"এই অনুমতিৰ ছেটিং সলনি কৰিবলৈ আপুনি প্ৰথমে ছেটিংসমূহ &gt; এপসমূহলৈ গৈ স্ক্ৰীন অভাৰলে\' অফ কৰিব লাগিব"</string>
<string name="screen_overlay_button" msgid="4655005928054025250">"ছেটিং খোলক"</string>
<string name="wear_not_allowed_dlg_title" msgid="1429467891296932713">"Android Wear"</string>
<string name="wear_not_allowed_dlg_text" msgid="512340555334769098">"ইনষ্টল/আনইনষ্টল কাৰ্য Wearত কৰিব নোৱাৰি।"</string>
@@ -308,7 +308,7 @@
<string name="unused_app_permissions_removed_summary_some" msgid="5080490037831563441">"আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ আপুনি কেইমাহমান ব্যৱহাৰ নকৰা কিছুমান এপৰ পৰা অনুমতিসমূহ আঁতৰোৱা হৈছে"</string>
<string name="one_unused_app_summary" msgid="7831913934488881991">"১ টা এপ্ কেইমাহমান ব্যৱহাৰ কৰা হোৱা নাই"</string>
<string name="num_unused_apps_summary" msgid="1870719749940571227">"<xliff:g id="NUMBER_OF_APPS">%s</xliff:g> টা এপ্ কেইমাহমান ব্যৱহাৰ কৰা হোৱা নাই"</string>
- <string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"কেৱল এপটো ব্যৱহাৰ হৈ থকা সময়ত"</string>
+ <string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"কেৱল এপ্‌টো ব্যৱহাৰ হৈ থকা সময়ত"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"মিডিয়া"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"আটাইবোৰ ফাইল"</string>
<string name="permission_subtitle_background" msgid="8916750995309083180">"সকলো সময়ৰ বাবে অনুমতি দিয়া হৈছে"</string>
@@ -372,7 +372,7 @@
<string name="role_emergency_search_keywords" msgid="1920007722599213358">"বৰফ"</string>
<string name="role_home_label" msgid="3871847846649769412">"ডিফ’ল্ট হ’ম এপ্"</string>
<string name="role_home_short_label" msgid="8544733747952272337">"হ’ম এপ্"</string>
- <string name="role_home_description" msgid="7997371519626556675">"যিবোৰ এপক সাধাৰণতে লঞ্চাৰ বুলি কোৱা হয় সেই এপ্‌বোৰে আপোনাৰ Android ডিভাইচত গৃহ স্ক্ৰীণৰ ঠাই লয় আৰু আপোনাক নিজৰ ডিভাইচৰ সমল আৰু সুবিধাবোৰৰ এক্সেছ দিয়ে"</string>
+ <string name="role_home_description" msgid="7997371519626556675">"যিবোৰ এপক সাধাৰণতে লঞ্চাৰ বুলি কোৱা হয় সেই এপ্‌বোৰে আপোনাৰ Android ডিভাইচত গৃহ স্ক্ৰীনৰ ঠাই লয় আৰু আপোনাক নিজৰ ডিভাইচৰ সমল আৰু সুবিধাবোৰৰ এক্সেছ দিয়ে"</string>
<string name="role_home_request_title" msgid="738136983453341081">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ ডিফ’ল্ট হ’ম এপ্ হিচাপে ছেট কৰিবনে?"</string>
<string name="role_home_request_description" msgid="2658833966716057673">"কোনো অনুমতিৰ প্ৰয়োজন নাই"</string>
<string name="role_home_search_keywords" msgid="3830755001192666285">"লঞ্চাৰ"</string>
diff --git a/PermissionController/res/values-gu-television/strings.xml b/PermissionController/res/values-gu-television/strings.xml
index a382722a7..5fde391de 100644
--- a/PermissionController/res/values-gu-television/strings.xml
+++ b/PermissionController/res/values-gu-television/strings.xml
@@ -20,8 +20,8 @@
<string name="grant_dialog_how_to_change" msgid="997462845048160559">"તમે થોડા સમય પછી આને સેટિંગ &gt; ઍપમાં બદલી શકો છો"</string>
<string name="current_permission_template" msgid="6240787325714651204">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="4262140518693221093">"સિસ્ટમ ઍપ બતાવો"</string>
- <string name="app_permissions_decor_title" msgid="7438716722786036814">"ઍપ પરવાનગીઓ"</string>
- <string name="manage_permissions_decor_title" msgid="4138423885439613577">"ઍપ પરવાનગીઓ"</string>
+ <string name="app_permissions_decor_title" msgid="7438716722786036814">"ઍપની પરવાનગીઓ"</string>
+ <string name="manage_permissions_decor_title" msgid="4138423885439613577">"ઍપની પરવાનગીઓ"</string>
<string name="permission_apps_decor_title" msgid="2811550489429789828">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
<string name="additional_permissions_decor_title" msgid="5113847982502484225">"વધારાની પરવાનગીઓ"</string>
<string name="system_apps_decor_title" msgid="4402004958937474803">"<xliff:g id="PERMISSION">%1$s</xliff:g> પરવાનગીઓ"</string>
diff --git a/PermissionController/res/values-gu/strings.xml b/PermissionController/res/values-gu/strings.xml
index c5f471151..9e9f42906 100644
--- a/PermissionController/res/values-gu/strings.xml
+++ b/PermissionController/res/values-gu/strings.xml
@@ -53,7 +53,7 @@
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"બધી ફાઇલો મેનેજ કરવાની મંજૂરી આપો"</string>
<string name="grant_dialog_button_allow_media_only" msgid="4832877658422573832">"મીડિયા ફાઇલો ઍક્સેસ કરવાની મંજૂરી આપો"</string>
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ઍપ"</string>
- <string name="app_permissions" msgid="3369917736607944781">"ઍપ પરવાનગીઓ"</string>
+ <string name="app_permissions" msgid="3369917736607944781">"ઍપની પરવાનગીઓ"</string>
<string name="unused_apps" msgid="2058057455175955094">"ન વપરાયેલી ઍપ"</string>
<string name="no_unused_apps" msgid="12809387670415295">"કોઈ બિનવપરાયેલી ઍપ નથી"</string>
<string name="zero_unused_apps" msgid="9024448554157499748">"બિનવપરાયેલી 0 ઍપ"</string>
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java
index 6dd429b7a..bc147efd0 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java
@@ -57,9 +57,9 @@ import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.auto.GrantPermissionsAutoViewHandler;
-import com.android.permissioncontroller.permission.ui.model.v31.GrantPermissionsViewModel;
-import com.android.permissioncontroller.permission.ui.model.v31.GrantPermissionsViewModel.RequestInfo;
-import com.android.permissioncontroller.permission.ui.model.v31.GrantPermissionsViewModelFactory;
+import com.android.permissioncontroller.permission.ui.model.GrantPermissionsViewModel;
+import com.android.permissioncontroller.permission.ui.model.GrantPermissionsViewModel.RequestInfo;
+import com.android.permissioncontroller.permission.ui.model.GrantPermissionsViewModelFactory;
import com.android.permissioncontroller.permission.ui.wear.GrantPermissionsWearViewHandler;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.Utils;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java
index 6dfceb90d..05a75f594 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java
@@ -25,8 +25,8 @@ import android.view.MenuItem;
import androidx.annotation.NonNull;
import com.android.permissioncontroller.DeviceUtils;
-import com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt;
import com.android.permissioncontroller.permission.ui.handheld.v31.ReviewOngoingUsageWrapperFragment;
+import com.android.permissioncontroller.permission.utils.KotlinUtils;
/**
* A dialog listing the currently uses of camera, microphone, and location.
@@ -40,8 +40,8 @@ public final class ReviewOngoingUsageActivity extends SettingsActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (!DashboardUtilsKt.shouldShowCameraMicIndicators()
- && !DashboardUtilsKt.shouldShowLocationIndicators()) {
+ if (!KotlinUtils.INSTANCE.shouldShowCameraMicIndicators()
+ && !KotlinUtils.INSTANCE.shouldShowLocationIndicators()) {
finishAfterTransition();
return;
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java
index 0973d1dfe..cf58f1e17 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java
@@ -23,7 +23,6 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__DENIED;
import static com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_CALLER_NAME;
-import static com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt.is7DayToggleEnabled;
import static java.util.concurrent.TimeUnit.DAYS;
@@ -146,7 +145,7 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment implem
if (SdkLevel.isAtLeastS()) {
mPermissionUsages = new PermissionUsages(getContext());
- long aggregateDataFilterBeginDays = is7DayToggleEnabled()
+ long aggregateDataFilterBeginDays = KotlinUtils.INSTANCE.is7DayToggleEnabled()
? AppPermissionGroupsViewModel.AGGREGATE_DATA_FILTER_BEGIN_DAYS_7 :
AppPermissionGroupsViewModel.AGGREGATE_DATA_FILTER_BEGIN_DAYS_1;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
index 9bb49bed6..568d7f225 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
@@ -24,7 +24,6 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__DENIED;
import static com.android.permissioncontroller.hibernation.HibernationPolicyKt.isHibernationEnabled;
import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
-import static com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt.is7DayToggleEnabled;
import static java.util.concurrent.TimeUnit.DAYS;
@@ -183,7 +182,7 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
Context context = getPreferenceManager().getContext();
mPermissionUsages = new PermissionUsages(context);
- long aggregateDataFilterBeginDays = is7DayToggleEnabled()
+ long aggregateDataFilterBeginDays = KotlinUtils.INSTANCE.is7DayToggleEnabled()
? AppPermissionGroupsViewModel.AGGREGATE_DATA_FILTER_BEGIN_DAYS_7 :
AppPermissionGroupsViewModel.AGGREGATE_DATA_FILTER_BEGIN_DAYS_1;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
index 6245c9229..8e3192eee 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
@@ -20,7 +20,6 @@ import static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory;
import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
-import static com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt.shouldShowPermissionsDashboard;
import android.app.Application;
import android.content.Intent;
@@ -39,6 +38,7 @@ import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
import com.android.permissioncontroller.permission.ui.UnusedAppsFragment;
import com.android.permissioncontroller.permission.ui.model.ManageStandardPermissionsViewModel;
+import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.StringUtils;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.settingslib.widget.FooterPreference;
@@ -123,7 +123,7 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
- if (shouldShowPermissionsDashboard()) {
+ if (KotlinUtils.INSTANCE.shouldShowPermissionsDashboard()) {
menu.add(Menu.NONE, MENU_PERMISSION_USAGE, Menu.NONE, R.string.permission_usage_title);
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java
index 1d92a6e74..90d7204cf 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java
@@ -22,7 +22,6 @@ import static com.android.permissioncontroller.permission.ui.Category.ALLOWED_FO
import static com.android.permissioncontroller.permission.ui.Category.ASK;
import static com.android.permissioncontroller.permission.ui.Category.DENIED;
import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
-import static com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt.shouldShowPermissionsDashboard;
import android.Manifest;
import android.app.ActionBar;
@@ -197,7 +196,7 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
updateMenu(mViewModel.getShouldShowSystemLiveData().getValue());
}
- if (shouldShowPermissionsDashboard()) {
+ if (KotlinUtils.INSTANCE.shouldShowPermissionsDashboard()) {
menu.add(Menu.NONE, MENU_PERMISSION_USAGE, Menu.NONE, R.string.permission_usage_title);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java
index 9569baeeb..658a82af5 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java
@@ -36,10 +36,10 @@ import androidx.preference.PreferenceFragmentCompat;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.PermissionSummary;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.PermissionTarget;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.SummaryMessage;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.PermissionSummary;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.PermissionTarget;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.SummaryMessage;
import com.android.permissioncontroller.permission.utils.LocationUtils;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.settingslib.RestrictedLockUtils;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java
index a6f74c822..5e5c221ae 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java
@@ -57,9 +57,9 @@ import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup;
import com.android.permissioncontroller.permission.model.livedatatypes.LightPermission;
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionViewModelFactory;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel;
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.PermissionTarget;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionViewModelFactory;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel;
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.PermissionTarget;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.Utils;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/DashboardUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/DashboardUtils.kt
index 19b19f620..5b92dd36d 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/DashboardUtils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/DashboardUtils.kt
@@ -19,7 +19,6 @@ package com.android.permissioncontroller.permission.ui.handheld.v31
import android.content.Context
import android.icu.util.Calendar
import android.os.Build
-import android.provider.DeviceConfig
import android.text.format.DateFormat.getMediumDateFormat
import android.text.format.DateFormat.getTimeFormat
import android.util.Pair
@@ -30,58 +29,12 @@ import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage.
import com.android.permissioncontroller.permission.utils.StringUtils
import java.util.Locale
-/** Whether to show the Permissions Hub. */
-private const val PROPERTY_PERMISSIONS_HUB_2_ENABLED = "permissions_hub_2_enabled"
-
-/** Whether to show the mic and camera icons. */
-const val PROPERTY_CAMERA_MIC_ICONS_ENABLED = "camera_mic_icons_enabled"
-
-/** Whether to show the location indicators. */
-const val PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled"
-
-/* Whether location accuracy feature is enabled */
-const val PROPERTY_LOCATION_ACCURACY_ENABLED = "location_accuracy_enabled"
-
-/** Whether to show 7-day toggle in privacy hub. */
-private const val PRIVACY_DASHBOARD_7_DAY_TOGGLE = "privacy_dashboard_7_day_toggle"
-
-/* Default location precision */
-const val PROPERTY_LOCATION_PRECISION = "location_precision"
-
const val SECONDS = 1
const val MINUTES = 2
const val HOURS = 3
const val DAYS = 4
/**
- * Whether the Permissions Hub 2 flag is enabled
- *
- * @return whether the flag is enabled
- */
-fun isPermissionsHub2FlagEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_PERMISSIONS_HUB_2_ENABLED, false)
-}
-/**
- * Whether to show the Permissions Dashboard
- *
- * @return whether to show the Permissions Dashboard.
- */
-fun shouldShowPermissionsDashboard(): Boolean {
- return isPermissionsHub2FlagEnabled()
-}
-
-/**
- * Whether we should enable the 7-day toggle in privacy dashboard
- *
- * @return whether the flag is enabled
- */
-fun is7DayToggleEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PRIVACY_DASHBOARD_7_DAY_TOGGLE, false)
-}
-
-/**
* Whether to show the subattribution in the Permissions Dashboard
*
* @return whether to show subattribution in the Permissions Dashboard.
@@ -91,62 +44,6 @@ fun shouldShowSubattributionInPermissionsDashboard(): Boolean {
}
/**
- * Whether the Camera and Mic Icons are enabled by flag.
- *
- * @return whether the Camera and Mic Icons are enabled.
- */
-fun isCameraMicIconsFlagEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_CAMERA_MIC_ICONS_ENABLED, true)
-}
-
-/**
- * Whether to show Camera and Mic Icons. They should be shown if the permission hub, or the icons
- * specifically, are enabled.
- *
- * @return whether to show the icons.
- */
-fun shouldShowCameraMicIndicators(): Boolean {
- return isCameraMicIconsFlagEnabled() || isPermissionsHub2FlagEnabled()
-}
-
-/**
- * Whether the location indicators are enabled by flag.
- *
- * @return whether the location indicators are enabled by flag.
- */
-fun isLocationIndicatorsFlagEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_LOCATION_INDICATORS_ENABLED, false)
-}
-
-/**
- * Whether to show the location indicators. The location indicators are enable if the
- * permission hub, or location indicator specifically are enabled.
- */
-fun shouldShowLocationIndicators(): Boolean {
- return isLocationIndicatorsFlagEnabled() || isPermissionsHub2FlagEnabled()
-}
-
-/**
- * Whether the location accuracy feature is enabled
- */
-fun isLocationAccuracyEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_LOCATION_ACCURACY_ENABLED, true)
-}
-
-/**
- * Default state of location precision
- * true: default is FINE.
- * false: default is COARSE.
- */
-fun getDefaultPrecision(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_LOCATION_PRECISION, true)
-}
-
-/**
* Build a string representing the given time if it happened on the current day and the date
* otherwise.
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionDetailsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionDetailsFragment.java
index 07bcf68bd..5b24bc316 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionDetailsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionDetailsFragment.java
@@ -18,7 +18,6 @@ package com.android.permissioncontroller.permission.ui.handheld.v31;
import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
-import static com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt.is7DayToggleEnabled;
import android.app.ActionBar;
import android.app.Activity;
@@ -130,7 +129,7 @@ public class PermissionDetailsFragment extends SettingsWithLargeHeader
mShowSystem =
getArguments().getBoolean(ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, false);
mShow7Days =
- is7DayToggleEnabled()
+ KotlinUtils.INSTANCE.is7DayToggleEnabled()
&& getArguments()
.getBoolean(ManagePermissionsActivity.EXTRA_SHOW_7_DAYS, false);
mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
@@ -258,7 +257,7 @@ public class PermissionDetailsFragment extends SettingsWithLargeHeader
menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE, R.string.menu_show_system);
mHideSystemMenu =
menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE, R.string.menu_hide_system);
- if (is7DayToggleEnabled()) {
+ if (KotlinUtils.INSTANCE.is7DayToggleEnabled()) {
mShow7DaysDataMenu =
menu.add(
Menu.NONE,
@@ -316,7 +315,8 @@ public class PermissionDetailsFragment extends SettingsWithLargeHeader
break;
case MENU_SHOW_7_DAYS_DATA:
case MENU_SHOW_24_HOURS_DATA:
- mShow7Days = is7DayToggleEnabled() && itemId == MENU_SHOW_7_DAYS_DATA;
+ mShow7Days = KotlinUtils.INSTANCE.is7DayToggleEnabled()
+ && itemId == MENU_SHOW_7_DAYS_DATA;
updateUI();
updateMenu();
break;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageV2Fragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageV2Fragment.java
index cd285f918..a065c7a74 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageV2Fragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageV2Fragment.java
@@ -22,7 +22,6 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.PERM
import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SEE_OTHER_PERMISSIONS_CLICKED;
import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SHOW_SYSTEM_CLICKED;
import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
-import static com.android.permissioncontroller.permission.ui.handheld.v31.DashboardUtilsKt.is7DayToggleEnabled;
import android.app.ActionBar;
import android.app.Activity;
@@ -219,7 +218,7 @@ public class PermissionUsageV2Fragment extends SettingsWithLargeHeader
menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE, R.string.menu_hide_system);
}
- if (is7DayToggleEnabled()) {
+ if (KotlinUtils.INSTANCE.is7DayToggleEnabled()) {
mShow7DaysDataMenu =
menu.add(
Menu.NONE,
@@ -264,7 +263,8 @@ public class PermissionUsageV2Fragment extends SettingsWithLargeHeader
break;
case MENU_SHOW_7_DAYS_DATA:
case MENU_SHOW_24_HOURS_DATA:
- mShow7Days = is7DayToggleEnabled() && itemId == MENU_SHOW_7_DAYS_DATA;
+ mShow7Days = KotlinUtils.INSTANCE.is7DayToggleEnabled()
+ && itemId == MENU_SHOW_7_DAYS_DATA;
updateUI();
updateMenu();
break;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt
index bb060e831..5e3cd8684 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt
@@ -38,7 +38,6 @@ import com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISS
import com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION__ACTION__SWITCH_ENABLED
import com.android.permissioncontroller.R
import com.android.permissioncontroller.hibernation.isHibernationEnabled
-import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.data.AppPermGroupUiInfoLiveData
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData
import com.android.permissioncontroller.permission.data.HibernationSettingStateLiveData
@@ -47,19 +46,20 @@ import com.android.permissioncontroller.permission.data.PackagePermissionsLiveDa
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
import com.android.permissioncontroller.permission.data.get
-import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage
import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState
+import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage
import com.android.permissioncontroller.permission.ui.Category
-import com.android.permissioncontroller.permission.ui.handheld.v31.is7DayToggleEnabled
import com.android.permissioncontroller.permission.utils.IPC
+import com.android.permissioncontroller.permission.utils.KotlinUtils
+import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.permission.utils.Utils.AppPermsLastAccessType
import com.android.permissioncontroller.permission.utils.navigateSafe
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
import java.time.Instant
import java.util.concurrent.TimeUnit
import kotlin.math.max
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
/**
* ViewModel for the AppPermissionGroupsFragment. Has a liveData with the UI information for all
@@ -281,7 +281,7 @@ class AppPermissionGroupsViewModel(
return
}
- val aggregateDataFilterBeginDays = if (is7DayToggleEnabled())
+ val aggregateDataFilterBeginDays = if (KotlinUtils.is7DayToggleEnabled())
AGGREGATE_DATA_FILTER_BEGIN_DAYS_7 else AGGREGATE_DATA_FILTER_BEGIN_DAYS_1
accessTime.clear()
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
index 7781216e2..99b97b52c 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
@@ -19,7 +19,6 @@ package com.android.permissioncontroller.permission.ui.model
import android.Manifest
import android.Manifest.permission.ACCESS_COARSE_LOCATION
import android.Manifest.permission.ACCESS_FINE_LOCATION
-import android.Manifest.permission_group.LOCATION
import android.annotation.SuppressLint
import android.app.AppOpsManager
import android.app.AppOpsManager.MODE_ALLOWED
@@ -44,7 +43,6 @@ import com.android.permissioncontroller.PermissionControllerStatsLog
import com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED
import com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_VIEWED
import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData.FullStoragePackageState
import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
@@ -55,9 +53,6 @@ import com.android.permissioncontroller.permission.model.livedatatypes.LightPerm
import com.android.permissioncontroller.permission.service.PermissionChangeStorageImpl
import com.android.permissioncontroller.permission.service.v33.PermissionDecisionStorageImpl
import com.android.permissioncontroller.permission.ui.AdvancedConfirmDialogArgs
-
-import com.android.permissioncontroller.permission.ui.handheld.v31.getDefaultPrecision
-import com.android.permissioncontroller.permission.ui.handheld.v31.isLocationAccuracyEnabled
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ALLOW
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ALLOW_ALWAYS
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ALLOW_FOREGROUND
@@ -67,7 +62,10 @@ import com.android.permissioncontroller.permission.ui.model.AppPermissionViewMod
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.DENY_FOREGROUND
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.LOCATION_ACCURACY
import com.android.permissioncontroller.permission.utils.KotlinUtils
+import com.android.permissioncontroller.permission.utils.KotlinUtils.getDefaultPrecision
+import com.android.permissioncontroller.permission.utils.KotlinUtils.isLocationAccuracyEnabled
import com.android.permissioncontroller.permission.utils.LocationUtils
+import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.SafetyNetLogger
import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.permission.utils.navigateSafe
@@ -200,8 +198,8 @@ class AppPermissionViewModel(
/**
* A livedata which computes the state of the radio buttons
*/
- val buttonStateLiveData = object
- : SmartUpdateMediatorLiveData<@JvmSuppressWildcards Map<ButtonType, ButtonState>>() {
+ val buttonStateLiveData = object :
+ SmartUpdateMediatorLiveData<@JvmSuppressWildcards Map<ButtonType, ButtonState>>() {
private val appPermGroupLiveData = LightAppPermGroupLiveData[packageName, permGroupName,
user]
@@ -376,9 +374,8 @@ class AppPermissionViewModel(
}
if (shouldShowLocationAccuracy == null) {
- shouldShowLocationAccuracy = group.permGroupName == LOCATION &&
- group.permissions.containsKey(ACCESS_FINE_LOCATION) &&
- isLocationAccuracyEnabled()
+ shouldShowLocationAccuracy = isLocationAccuracyEnabled() &&
+ group.permissions.containsKey(ACCESS_FINE_LOCATION)
}
val locationAccuracyState = ButtonState(isFineLocationChecked(group),
true, false, null)
@@ -669,11 +666,12 @@ class AppPermissionViewModel(
}
if (shouldGrantForeground) {
- if (shouldShowLocationAccuracy == true && !isFineLocationChecked(newGroup)) {
- newGroup = KotlinUtils.grantForegroundRuntimePermissions(app, newGroup,
- filterPermissions = listOf(ACCESS_COARSE_LOCATION))
+ newGroup = if (shouldShowLocationAccuracy == true &&
+ !isFineLocationChecked(newGroup)) {
+ KotlinUtils.grantForegroundRuntimePermissions(app, newGroup,
+ filterPermissions = listOf(ACCESS_COARSE_LOCATION))
} else {
- newGroup = KotlinUtils.grantForegroundRuntimePermissions(app, newGroup)
+ KotlinUtils.grantForegroundRuntimePermissions(app, newGroup)
}
if (!wasForegroundGranted) {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
index b7566e757..764ddcf38 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui.model.v31
+package com.android.permissioncontroller.permission.ui.model
import android.Manifest
import android.Manifest.permission.ACCESS_COARSE_LOCATION
@@ -59,7 +59,6 @@ import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_ONE_TIME
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED
import com.android.permissioncontroller.auto.DrivingDecisionReminderService
-import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
import com.android.permissioncontroller.permission.data.LightPackageInfoLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData
@@ -99,10 +98,11 @@ import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandle
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_RESULT_PERMISSION_INTERACTED
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_RESULT_PERMISSION_RESULT
-import com.android.permissioncontroller.permission.ui.handheld.v31.getDefaultPrecision
-import com.android.permissioncontroller.permission.ui.handheld.v31.isLocationAccuracyEnabled
import com.android.permissioncontroller.permission.utils.AdminRestrictedPermissionsUtils
import com.android.permissioncontroller.permission.utils.KotlinUtils
+import com.android.permissioncontroller.permission.utils.KotlinUtils.getDefaultPrecision
+import com.android.permissioncontroller.permission.utils.KotlinUtils.isLocationAccuracyEnabled
+import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.SafetyNetLogger
import com.android.permissioncontroller.permission.utils.Utils
@@ -442,7 +442,7 @@ class GrantPermissionsViewModel(
// Show location permission dialogs based on location permissions
val locationVisibilities = MutableList(NEXT_LOCATION_DIALOG) { false }
if (groupState.group.permGroupName == LOCATION && isLocationAccuracyEnabled() &&
- packageInfo.targetSdkVersion >= Build.VERSION_CODES.S) {
+ packageInfo.targetSdkVersion >= Build.VERSION_CODES.S) {
if (needFgPermissions) {
locationVisibilities[LOCATION_ACCURACY_LAYOUT] = true
if (fgState != null &&
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/PermissionAppsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/PermissionAppsViewModel.kt
index 9814a115f..cd1a936f7 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/PermissionAppsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/PermissionAppsViewModel.kt
@@ -38,25 +38,25 @@ import androidx.savedstate.SavedStateRegistryOwner
import com.android.modules.utils.build.SdkLevel
import com.android.permissioncontroller.PermissionControllerStatsLog
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__UNDEFINED
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__DENIED
+import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__UNDEFINED
import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData.FullStoragePackageState
import com.android.permissioncontroller.permission.data.SinglePermGroupPackagesUiInfoLiveData
-import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState
+import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage
import com.android.permissioncontroller.permission.ui.Category
import com.android.permissioncontroller.permission.ui.LocationProviderInterceptDialog
-import com.android.permissioncontroller.permission.ui.handheld.v31.is7DayToggleEnabled
import com.android.permissioncontroller.permission.ui.model.PermissionAppsViewModel.Companion.CREATION_LOGGED_KEY
import com.android.permissioncontroller.permission.ui.model.PermissionAppsViewModel.Companion.HAS_SYSTEM_APPS_KEY
import com.android.permissioncontroller.permission.ui.model.PermissionAppsViewModel.Companion.SHOULD_SHOW_SYSTEM_KEY
import com.android.permissioncontroller.permission.ui.model.PermissionAppsViewModel.Companion.SHOW_ALWAYS_ALLOWED
import com.android.permissioncontroller.permission.utils.KotlinUtils.getPackageUid
+import com.android.permissioncontroller.permission.utils.KotlinUtils.is7DayToggleEnabled
import com.android.permissioncontroller.permission.utils.LocationUtils
import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.permission.utils.navigateSafe
@@ -169,8 +169,8 @@ class PermissionAppsViewModel(
}
}
- inner class CategorizedAppsLiveData(groupName: String)
- : MediatorLiveData<@kotlin.jvm.JvmSuppressWildcards
+ inner class CategorizedAppsLiveData(groupName: String) :
+ MediatorLiveData<@kotlin.jvm.JvmSuppressWildcards
Map<Category, List<Pair<String, UserHandle>>>>() {
private val packagesUiInfoLiveData = SinglePermGroupPackagesUiInfoLiveData[groupName]
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt
index e65c5c1ff..309b9eba1 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt
@@ -47,15 +47,15 @@ import com.android.permissioncontroller.permission.data.PermGroupUsageLiveData
import com.android.permissioncontroller.permission.data.SmartAsyncMediatorLiveData
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
import com.android.permissioncontroller.permission.data.micMutedLiveData
-import com.android.permissioncontroller.permission.ui.handheld.v31.shouldShowLocationIndicators
-import com.android.permissioncontroller.permission.ui.handheld.v31.shouldShowPermissionsDashboard
import com.android.permissioncontroller.permission.ui.handheld.v31.ReviewOngoingUsageFragment.PHONE_CALL
import com.android.permissioncontroller.permission.ui.handheld.v31.ReviewOngoingUsageFragment.VIDEO_CALL
import com.android.permissioncontroller.permission.utils.KotlinUtils
+import com.android.permissioncontroller.permission.utils.KotlinUtils.shouldShowLocationIndicators
+import com.android.permissioncontroller.permission.utils.KotlinUtils.shouldShowPermissionsDashboard
import com.android.permissioncontroller.permission.utils.Utils
-import kotlinx.coroutines.Job
import java.time.Instant
import kotlin.math.max
+import kotlinx.coroutines.Job
private const val FIRST_OPENED_KEY = "FIRST_OPENED"
private const val CALL_OP_USAGE_KEY = "CALL_OP_USAGE"
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewPermissionsViewModel.kt
index 97c5d7596..4e1fc1861 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewPermissionsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewPermissionsViewModel.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui.model.v33
+package com.android.permissioncontroller.permission.ui.model
import android.app.Application
import android.content.Context
@@ -26,13 +26,13 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
import com.android.permissioncontroller.permission.data.get
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
+import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.permission.utils.navigateSafe
import com.android.settingslib.RestrictedLockUtils
@@ -326,4 +326,4 @@ class ReviewPermissionViewModelFactory(
@Suppress("UNCHECKED_CAST")
return ReviewPermissionsViewModel(app, packageInfo = packageInfo) as T
}
-} \ No newline at end of file
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt
index af8e689a5..1171cfb0f 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt
@@ -38,8 +38,8 @@ import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage
import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage.TimelineUsage
import com.android.permissioncontroller.permission.model.v31.PermissionUsages
import com.android.permissioncontroller.permission.ui.handheld.v31.getDurationUsedStr
-import com.android.permissioncontroller.permission.ui.handheld.v31.is7DayToggleEnabled
import com.android.permissioncontroller.permission.ui.handheld.v31.shouldShowSubattributionInPermissionsDashboard
+import com.android.permissioncontroller.permission.utils.KotlinUtils
import com.android.permissioncontroller.permission.utils.KotlinUtils.getPackageLabel
import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.StringUtils
@@ -108,7 +108,7 @@ class PermissionUsageDetailsViewModel(
show7Days: Boolean
): PermissionUsageDetailsUiData {
val showPermissionUsagesDuration =
- if (is7DayToggleEnabled() && show7Days) {
+ if (KotlinUtils.is7DayToggleEnabled() && show7Days) {
TIME_7_DAYS_DURATION
} else {
TIME_24_HOURS_DURATION
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageViewModel.kt
index 1c27f2bbb..ef6a987f2 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageViewModel.kt
@@ -24,13 +24,13 @@ import android.os.Build
import androidx.annotation.RequiresApi
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
-import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.model.AppPermissionGroup
import com.android.permissioncontroller.permission.model.legacy.PermissionApps.PermissionApp
import com.android.permissioncontroller.permission.model.v31.AppPermissionUsage
import com.android.permissioncontroller.permission.model.v31.PermissionUsages
-import com.android.permissioncontroller.permission.ui.handheld.v31.is7DayToggleEnabled
+import com.android.permissioncontroller.permission.utils.KotlinUtils
import com.android.permissioncontroller.permission.utils.KotlinUtils.getPermGroupLabel
+import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.Utils
import java.time.Instant
import java.util.concurrent.TimeUnit
@@ -48,7 +48,8 @@ class PermissionUsageViewModel(val roleManager: RoleManager) : ViewModel() {
private val TIME_FILTER_MILLIS = TimeUnit.DAYS.toMillis(7)
private val TIME_7_DAYS_DURATION = TimeUnit.DAYS.toMillis(7)
private val TIME_24_HOURS_DURATION = TimeUnit.DAYS.toMillis(1)
-
+ /** Permission groups that should be hidden from the permissions usage UI. */
+ private val EXEMPTED_PERMISSION_GROUPS = setOf(Manifest.permission_group.NOTIFICATIONS)
@JvmStatic
/** Map to represent ordering for permission groups in the permissions usage UI. */
val PERMISSION_GROUP_ORDER: Map<String, Int> =
@@ -92,7 +93,7 @@ class PermissionUsageViewModel(val roleManager: RoleManager) : ViewModel() {
): PermissionUsagesUiData {
val curTime = System.currentTimeMillis()
val showPermissionUsagesDuration =
- if (is7DayToggleEnabled() && show7Days) {
+ if (KotlinUtils.is7DayToggleEnabled() && show7Days) {
TIME_7_DAYS_DURATION
} else {
TIME_24_HOURS_DURATION
@@ -122,11 +123,14 @@ class PermissionUsageViewModel(val roleManager: RoleManager) : ViewModel() {
showSystem: Boolean
): Map<String, Int> {
val permissionGroupsUsageCountMap: MutableMap<String, Int> = HashMap()
- extractAllPlatformAppPermissionGroups().forEach { permissionGroupsUsageCountMap[it] = 0 }
+ extractPlatformAppPermissionGroupsToDisplay().forEach {
+ permissionGroupsUsageCountMap[it] = 0
+ }
for (appUsage in this) {
appUsage.groupUsages
.filter { showSystem || !it.group.isSystem() }
+ .filter { !EXEMPTED_PERMISSION_GROUPS.contains(it.group.name) }
.filter { it.lastAccessTime >= startTime }
.forEach {
permissionGroupsUsageCountMap[it.group.name] =
@@ -141,9 +145,11 @@ class PermissionUsageViewModel(val roleManager: RoleManager) : ViewModel() {
startTime: Long,
): java.util.ArrayList<PermissionApp> {
return ArrayList(
- filter {
- it.groupUsages.any { it.lastAccessTime >= startTime || it.lastAccessTime == 0L }
- }
+ filter { appPermissionUsage ->
+ appPermissionUsage.groupUsages
+ .filter { !EXEMPTED_PERMISSION_GROUPS.contains(it.group.name) }
+ .any { it.lastAccessTime >= startTime || it.lastAccessTime == 0L }
+ }
.map { it.app })
}
@@ -155,6 +161,7 @@ class PermissionUsageViewModel(val roleManager: RoleManager) : ViewModel() {
startTime: Long,
): Boolean {
return flatMap { it.groupUsages }
+ .filter { !EXEMPTED_PERMISSION_GROUPS.contains(it.group.name) }
.filter { it.lastAccessTime > startTime && it.lastAccessTime > 0L }
.any { it.group.isSystem() }
}
@@ -180,11 +187,16 @@ class PermissionUsageViewModel(val roleManager: RoleManager) : ViewModel() {
{ PERMISSION_GROUP_ORDER.getOrDefault(it.permGroup, DEFAULT_ORDER) },
{ getPermGroupLabel(context, it.permGroup).toString() }))
- /** Extracts to a set all the permission groups declared by the platform. */
- private fun List<AppPermissionUsage>.extractAllPlatformAppPermissionGroups(): Set<String> =
+ /**
+ * Extracts to a set all the permission groups declared by the platform that should be displayed
+ * in the UI.
+ */
+ private fun List<AppPermissionUsage>.extractPlatformAppPermissionGroupsToDisplay():
+ Set<String> =
this.flatMap { it.groupUsages }
.map { it.group.name }
.filter { PermissionMapping.isPlatformPermissionGroup(it) }
+ .filter { !EXEMPTED_PERMISSION_GROUPS.contains(it) }
.toSet()
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
index 82ad2494b..3bc20744a 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
@@ -75,16 +75,16 @@ import com.android.permissioncontroller.permission.model.livedatatypes.LightPerm
import com.android.permissioncontroller.permission.model.livedatatypes.PermState
import com.android.permissioncontroller.permission.service.LocationAccessCheck
import com.android.permissioncontroller.permission.ui.handheld.SettingsWithLargeHeader
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.async
-import kotlinx.coroutines.launch
import java.util.concurrent.atomic.AtomicReference
import kotlin.coroutines.Continuation
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
/**
* A set of util functions designed to work with kotlin, though they can work with java, as well.
*/
@@ -117,6 +117,116 @@ object KotlinUtils {
private val ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_KEEP_SESSION_ALIVE =
ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE
+ /** Whether to show the Permissions Hub. */
+ private const val PROPERTY_PERMISSIONS_HUB_2_ENABLED = "permissions_hub_2_enabled"
+
+ /** Whether to show the mic and camera icons. */
+ private const val PROPERTY_CAMERA_MIC_ICONS_ENABLED = "camera_mic_icons_enabled"
+
+ /** Whether to show the location indicators. */
+ private const val PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled"
+
+ /** Whether location accuracy feature is enabled */
+ private const val PROPERTY_LOCATION_ACCURACY_ENABLED = "location_accuracy_enabled"
+
+ /** Whether to show 7-day toggle in privacy hub. */
+ private const val PRIVACY_DASHBOARD_7_DAY_TOGGLE = "privacy_dashboard_7_day_toggle"
+
+ /** Default location precision */
+ private const val PROPERTY_LOCATION_PRECISION = "location_precision"
+
+ /**
+ * Whether the Permissions Hub 2 flag is enabled
+ *
+ * @return whether the flag is enabled
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun isPermissionsHub2FlagEnabled(): Boolean {
+ return SdkLevel.isAtLeastS() && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_PERMISSIONS_HUB_2_ENABLED, false)
+ }
+ /**
+ * Whether to show the Permissions Dashboard
+ *
+ * @return whether to show the Permissions Dashboard.
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun shouldShowPermissionsDashboard(): Boolean {
+ return isPermissionsHub2FlagEnabled()
+ }
+
+ /**
+ * Whether the Camera and Mic Icons are enabled by flag.
+ *
+ * @return whether the Camera and Mic Icons are enabled.
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun isCameraMicIconsFlagEnabled(): Boolean {
+ return SdkLevel.isAtLeastS() && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_CAMERA_MIC_ICONS_ENABLED, true)
+ }
+
+ /**
+ * Whether to show Camera and Mic Icons. They should be shown if the permission hub, or the icons
+ * specifically, are enabled.
+ *
+ * @return whether to show the icons.
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun shouldShowCameraMicIndicators(): Boolean {
+ return isCameraMicIconsFlagEnabled() || isPermissionsHub2FlagEnabled()
+ }
+
+ /**
+ * Whether the location indicators are enabled by flag.
+ *
+ * @return whether the location indicators are enabled by flag.
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun isLocationIndicatorsFlagEnabled(): Boolean {
+ return SdkLevel.isAtLeastS() && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_LOCATION_INDICATORS_ENABLED, false)
+ }
+
+ /**
+ * Whether to show the location indicators. The location indicators are enable if the
+ * permission hub, or location indicator specifically are enabled.
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun shouldShowLocationIndicators(): Boolean {
+ return isLocationIndicatorsFlagEnabled() || isPermissionsHub2FlagEnabled()
+ }
+
+ /**
+ * Whether the location accuracy feature is enabled
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun isLocationAccuracyEnabled(): Boolean {
+ return SdkLevel.isAtLeastS() && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_LOCATION_ACCURACY_ENABLED, true)
+ }
+
+ /**
+ * Default state of location precision
+ * true: default is FINE.
+ * false: default is COARSE.
+ */
+ fun getDefaultPrecision(): Boolean {
+ return !SdkLevel.isAtLeastS() || DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PROPERTY_LOCATION_PRECISION, true)
+ }
+
+ /**
+ * Whether we should enable the 7-day toggle in privacy dashboard
+ *
+ * @return whether the flag is enabled
+ */
+ @ChecksSdkIntAtLeast(Build.VERSION_CODES.S)
+ fun is7DayToggleEnabled(): Boolean {
+ return SdkLevel.isAtLeastS() && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
+ PRIVACY_DASHBOARD_7_DAY_TOGGLE, false)
+ }
+
/**
* Given a Map, and a List, determines which elements are in the list, but not the map, and
* vice versa. Used primarily for determining which liveDatas are already being watched, and
@@ -1267,4 +1377,4 @@ fun NavController.navigateSafe(destResId: Int, args: Bundle? = null) {
navigate(destResId, args)
}
}
-} \ No newline at end of file
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt b/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt
index e8d98cd53..a1a4873a3 100644
--- a/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt
+++ b/PermissionController/src/com/android/permissioncontroller/privacysources/AccessibilitySourceService.kt
@@ -903,13 +903,12 @@ class AccessibilityJobService : JobService() {
override fun onCreate() {
super.onCreate()
- if (DEBUG) {
- Log.v(LOG_TAG, "accessibility privacy source job created.")
- }
+ Log.v(LOG_TAG, "accessibility privacy source job created.")
mSourceService = AccessibilitySourceService(this)
}
override fun onStartJob(params: JobParameters?): Boolean {
+ Log.v(LOG_TAG, "accessibility privacy source job started.")
synchronized(mLock) {
if (mCurrentJob != null) {
Log.v(LOG_TAG, "Accessibility privacy source job already running")
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/ReviewPermissionsViewModelTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/ReviewPermissionsViewModelTest.kt
index df6e92154..0f4216066 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/ReviewPermissionsViewModelTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/ReviewPermissionsViewModelTest.kt
@@ -26,11 +26,11 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
import com.android.permissioncontroller.permission.model.livedatatypes.LightPermission
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.PermissionTarget.PERMISSION_BACKGROUND
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.PermissionTarget.PERMISSION_BOTH
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.PermissionTarget.PERMISSION_FOREGROUND
-import com.android.permissioncontroller.permission.ui.model.v33.ReviewPermissionsViewModel.SummaryMessage
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.PermissionTarget.PERMISSION_BACKGROUND
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.PermissionTarget.PERMISSION_BOTH
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.PermissionTarget.PERMISSION_FOREGROUND
+import com.android.permissioncontroller.permission.ui.model.ReviewPermissionsViewModel.SummaryMessage
import com.android.permissioncontroller.permission.utils.Utils
import com.android.settingslib.RestrictedLockUtils
import org.junit.After
@@ -42,10 +42,10 @@ import org.mockito.Mock
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock
import org.mockito.Mockito.spy
+import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
import org.mockito.MockitoSession
import org.mockito.quality.Strictness
-import org.mockito.Mockito.`when` as whenever
/**
* Unit tests for [ReviewPermissionsViewModel]
@@ -247,4 +247,4 @@ class ReviewPermissionsViewModelTest {
requestedPermissionsFlags = listOf<Int>().toIntArray()
}
}
-} \ No newline at end of file
+}
diff --git a/SafetyCenter/Resources/Android.bp b/SafetyCenter/Resources/Android.bp
index 2a19f5c1b..2d720a6df 100644
--- a/SafetyCenter/Resources/Android.bp
+++ b/SafetyCenter/Resources/Android.bp
@@ -40,7 +40,6 @@ android_app {
privileged: true,
sdk_version: "system_current",
min_sdk_version: "30",
- target_sdk_version: "33",
apex_available: ["com.android.permission"],
certificate: ":com.android.safetycenter.resources.certificate",
lint: {
diff --git a/service/java/com/android/safetycenter/SafetyCenterListeners.java b/service/java/com/android/safetycenter/SafetyCenterListeners.java
index f7abdc137..9ea81277d 100644
--- a/service/java/com/android/safetycenter/SafetyCenterListeners.java
+++ b/service/java/com/android/safetycenter/SafetyCenterListeners.java
@@ -142,10 +142,11 @@ final class SafetyCenterListeners {
* Adds a {@link IOnSafetyCenterDataChangedListener} for the given {@code packageName} and
* {@code userId}.
*
- * <p>Returns whether the callback was successfully registered. Returns {@code true} if the
- * callback was already registered.
+ * <p>Returns the registered {@link IOnSafetyCenterDataChangedListener} if this operation was
+ * successful. Otherwise, returns {@code null}.
*/
- boolean addListener(
+ @Nullable
+ IOnSafetyCenterDataChangedListener addListener(
@NonNull IOnSafetyCenterDataChangedListener listener,
@NonNull String packageName,
@UserIdInt int userId) {
@@ -153,11 +154,15 @@ final class SafetyCenterListeners {
mSafetyCenterDataChangedListeners.get(userId);
if (listeners == null) {
listeners = new RemoteCallbackList<>();
- mSafetyCenterDataChangedListeners.put(userId, listeners);
}
OnSafetyCenterDataChangedListenerWrapper listenerWrapper =
new OnSafetyCenterDataChangedListenerWrapper(listener, packageName);
- return listeners.register(listenerWrapper);
+ boolean registered = listeners.register(listenerWrapper);
+ if (!registered) {
+ return null;
+ }
+ mSafetyCenterDataChangedListeners.put(userId, listeners);
+ return listenerWrapper;
}
/**
diff --git a/service/java/com/android/safetycenter/SafetyCenterService.java b/service/java/com/android/safetycenter/SafetyCenterService.java
index e522f8ce0..c44c2a229 100644
--- a/service/java/com/android/safetycenter/SafetyCenterService.java
+++ b/service/java/com/android/safetycenter/SafetyCenterService.java
@@ -418,13 +418,13 @@ public final class SafetyCenterService extends SystemService {
UserProfileGroup userProfileGroup = UserProfileGroup.from(getContext(), userId);
synchronized (mApiLock) {
- boolean registered =
+ IOnSafetyCenterDataChangedListener registeredListener =
mSafetyCenterListeners.addListener(listener, packageName, userId);
- if (!registered) {
+ if (registeredListener == null) {
return;
}
SafetyCenterListeners.deliverUpdateForListener(
- listener,
+ registeredListener,
mSafetyCenterDataFactory.getSafetyCenterData(packageName, userProfileGroup),
null);
}
diff --git a/service/java/com/android/safetycenter/UserProfileGroup.java b/service/java/com/android/safetycenter/UserProfileGroup.java
index 264f8bd22..777050bfa 100644
--- a/service/java/com/android/safetycenter/UserProfileGroup.java
+++ b/service/java/com/android/safetycenter/UserProfileGroup.java
@@ -233,7 +233,7 @@ final class UserProfileGroup {
@Override
public String toString() {
- return "UserProfiles{"
+ return "UserProfileGroup{"
+ "mProfileParentUserId="
+ mProfileParentUserId
+ ", mManagedProfilesUserIds="
diff --git a/tests/cts/safetycenter/src/android/safetycenter/cts/ui/SafetyCenterActivityTest.kt b/tests/cts/safetycenter/src/android/safetycenter/cts/ui/SafetyCenterActivityTest.kt
index c51f18dc0..ce50853ec 100644
--- a/tests/cts/safetycenter/src/android/safetycenter/cts/ui/SafetyCenterActivityTest.kt
+++ b/tests/cts/safetycenter/src/android/safetycenter/cts/ui/SafetyCenterActivityTest.kt
@@ -445,6 +445,19 @@ class SafetyCenterActivityTest {
}
@Test
+ fun entryListWithSingleSource_clickingTheIconActionButton_redirectsToDifferentScreen() {
+ safetyCenterCtsHelper.setConfig(SINGLE_SOURCE_CONFIG)
+ safetyCenterCtsHelper.setData(
+ SINGLE_SOURCE_ID, safetySourceCtsData.informationWithIconAction)
+
+ context.launchSafetyCenterActivity {
+ waitDisplayed(By.desc("Settings")) { it.click() }
+ waitButtonDisplayed("Exit test activity") { it.click() }
+ waitDisplayed(By.text("Ok title"))
+ }
+ }
+
+ @Test
fun staticSource_clickingTheEntry_redirectsToDifferentScreen() {
safetyCenterCtsHelper.setConfig(STATIC_SOURCES_CONFIG)