summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionHistoryPreference.java34
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageDetailsFragment.java47
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt31
3 files changed, 40 insertions, 72 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionHistoryPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionHistoryPreference.java
index c2b5b875b..75213ad04 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionHistoryPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionHistoryPreference.java
@@ -66,25 +66,23 @@ public class PermissionHistoryPreference extends Preference {
private final long mAccessStartTime;
private final long mAccessEndTime;
private final Drawable mAppIcon;
- private final String mTitle;
private final List<String> mAttributionTags;
private final boolean mIsLastUsage;
private final Intent mIntent;
private final boolean mShowingAttribution;
private final PackageManager mUserPackageManager;
- private final PermissionUsageDetailsViewModel.PermissionUsageOnClickDialog mOnClickDialog;
+ private final boolean mIsEmergencyLocationAccess;
private final long mSessionId;
- private Drawable mWidgetIcon;
+ private Drawable mInfoWidgetIcon;
public PermissionHistoryPreference(@NonNull Context context, @NonNull UserHandle userHandle,
- @NonNull String pkgName, @Nullable Drawable appIcon, @NonNull String preferenceTitle,
+ @NonNull String pkgName, @Nullable Drawable packageIcon, @NonNull String packageLabel,
@NonNull String permissionGroup, @NonNull long accessStartTime,
@NonNull long accessEndTime, @Nullable CharSequence summaryText,
boolean showingAttribution, @NonNull List<String> attributionTags,
- boolean isLastUsage, long sessionId,
- @Nullable PermissionUsageDetailsViewModel.PermissionUsageOnClickDialog onClickDialog) {
+ boolean isLastUsage, long sessionId, boolean isEmergencyLocationAccess) {
super(context);
mContext = context;
Context userContext = Utils.getUserContext(context, userHandle);
@@ -94,23 +92,22 @@ public class PermissionHistoryPreference extends Preference {
mPermissionGroup = permissionGroup;
mAccessStartTime = accessStartTime;
mAccessEndTime = accessEndTime;
- mAppIcon = appIcon;
- mTitle = preferenceTitle;
- mWidgetIcon = null;
+ mAppIcon = packageIcon;
+ mInfoWidgetIcon = null;
mAttributionTags = attributionTags;
mIsLastUsage = isLastUsage;
mSessionId = sessionId;
mShowingAttribution = showingAttribution;
- mOnClickDialog = onClickDialog;
+ mIsEmergencyLocationAccess = isEmergencyLocationAccess;
- setTitle(mTitle);
+ setTitle(packageLabel);
if (summaryText != null) {
setSummary(summaryText);
}
mIntent = getViewPermissionUsageForPeriodIntent(showingAttribution);
if (mIntent != null) {
- mWidgetIcon = mContext.getDrawable(R.drawable.ic_info_outline);
+ mInfoWidgetIcon = mContext.getDrawable(R.drawable.ic_info_outline);
setWidgetLayoutResource(R.layout.image_view_with_divider);
}
}
@@ -139,8 +136,8 @@ public class PermissionHistoryPreference extends Preference {
TextView permissionHistoryTime = widget.findViewById(R.id.permission_history_time);
permissionHistoryTime.setText(DateFormat.getTimeFormat(mContext).format(mAccessEndTime));
- ImageView permissionIcon = widget.findViewById(R.id.permission_history_icon);
- permissionIcon.setImageDrawable(mAppIcon);
+ ImageView appIcon = widget.findViewById(R.id.permission_history_icon);
+ appIcon.setImageDrawable(mAppIcon);
ImageView widgetView = widgetFrame.findViewById(R.id.icon);
setInfoIcon(holder, widgetView);
@@ -161,11 +158,12 @@ public class PermissionHistoryPreference extends Preference {
mShowingAttribution,
mAttributionTags);
- if (mOnClickDialog != null) {
+ if (mIsEmergencyLocationAccess) {
setOnPreferenceClickListener(preference -> {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext)
- .setTitle(mOnClickDialog.getTitle())
- .setMessage(mOnClickDialog.getDescription())
+ .setTitle(R.string.privacy_dashboard_emergency_location_dialog_title)
+ .setMessage(
+ R.string.privacy_dashboard_emergency_location_dialog_description)
.setPositiveButton(R.string.app_permissions, (dialog, which) -> {
mContext.startActivityAsUser(intent, mUserHandle);
})
@@ -189,7 +187,7 @@ public class PermissionHistoryPreference extends Preference {
private void setInfoIcon(@NonNull PreferenceViewHolder holder, ImageView widgetView) {
if (mIntent != null) {
- widgetView.setImageDrawable(mWidgetIcon);
+ widgetView.setImageDrawable(mInfoWidgetIcon);
widgetView.setOnClickListener(v -> {
write(PERMISSION_DETAILS_INTERACTION,
mSessionId,
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageDetailsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageDetailsFragment.java
index 0740a08fd..4da9d58f1 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageDetailsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageDetailsFragment.java
@@ -37,7 +37,6 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.lifecycle.ViewModelProvider;
@@ -76,8 +75,7 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
private static final int MENU_SHOW_7_DAYS_DATA = Menu.FIRST + 4;
private static final int MENU_SHOW_24_HOURS_DATA = Menu.FIRST + 5;
- private @Nullable String mPermissionGroup;
- private int mUsageSubtitle;
+ private String mPermissionGroup;
private boolean mHasSystemApps;
private MenuItem mShowSystemMenu;
@@ -190,9 +188,9 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
.getString(
R.string.permission_group_usage_title,
KotlinUtils.INSTANCE.getPermGroupLabel(
- getActivity(), mPermissionGroup));
+ requireActivity(), mPermissionGroup));
}
- getActivity().setTitle(title);
+ requireActivity().setTitle(title);
}
@Override
@@ -239,7 +237,7 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
int itemId = item.getItemId();
switch (itemId) {
case android.R.id.home:
- getActivity().finishAfterTransition();
+ requireActivity().finishAfterTransition();
return true;
case MENU_SHOW_SYSTEM:
mViewModel.updateShowSystemAppsToggle(true);
@@ -277,17 +275,16 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
Preference subtitlePreference = new Preference(context);
updateShow7DaysToggle(show7Days);
- mUsageSubtitle =
- show7Days
- ? R.string.permission_group_usage_subtitle_7d
- : R.string.permission_group_usage_subtitle_24h;
+ int usageSubtitle = show7Days
+ ? R.string.permission_group_usage_subtitle_7d
+ : R.string.permission_group_usage_subtitle_24h;
subtitlePreference.setSummary(
getResources()
.getString(
- mUsageSubtitle,
+ usageSubtitle,
KotlinUtils.INSTANCE.getPermGroupLabel(
- getActivity(), mPermissionGroup)));
+ context, mPermissionGroup)));
subtitlePreference.setSelectable(false);
screen.addPreference(subtitlePreference);
@@ -306,14 +303,8 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
AtomicReference<PreferenceCategory> category =
new AtomicReference<>(createDayCategoryPreference());
screen.addPreference(category.get());
- PreferenceScreen finalScreen = screen;
-
- if (getActivity() == null) {
- // Fragment has no Activity, return.
- return;
- }
- renderHistoryPreferences(uiData.getAppPermissionAccessUiInfoList(), category, finalScreen);
+ renderHistoryPreferences(uiData.getAppPermissionAccessUiInfoList(), category, screen);
setLoading(false, true);
setProgressBarVisible(false);
}
@@ -323,8 +314,7 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
List<AppPermissionAccessUiInfo> appPermissionAccessUiInfoList,
AtomicReference<PreferenceCategory> category,
PreferenceScreen preferenceScreen) {
- Context context = getContext();
- long previousDateMs = 0L;
+ Context context = requireContext();
long midnightToday =
ZonedDateTime.now(ZoneId.systemDefault())
.truncatedTo(ChronoUnit.DAYS)
@@ -337,19 +327,20 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
.toEpochSecond()
* 1000L;
+ long previousAccessDateMs = 0L;
for (int i = 0; i < appPermissionAccessUiInfoList.size(); i++) {
AppPermissionAccessUiInfo appPermissionAccessUiInfo =
appPermissionAccessUiInfoList.get(i);
long accessEndTime = appPermissionAccessUiInfo.getAccessEndTime();
- long currentDateMs =
+ long accessDateMS =
ZonedDateTime.ofInstant(
Instant.ofEpochMilli(accessEndTime),
Clock.system(ZoneId.systemDefault()).getZone())
.truncatedTo(ChronoUnit.DAYS)
.toEpochSecond()
* 1000L;
- if (currentDateMs != previousDateMs) {
- if (previousDateMs != 0L) {
+ if (accessDateMS != previousAccessDateMs) {
+ if (previousAccessDateMs != 0L) {
category.set(createDayCategoryPreference());
preferenceScreen.addPreference(category.get());
}
@@ -359,14 +350,14 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
category.get().setTitle(R.string.permission_history_category_yesterday);
} else {
category.get()
- .setTitle(DateFormat.getLongDateFormat(context).format(currentDateMs));
+ .setTitle(DateFormat.getLongDateFormat(context).format(accessDateMS));
}
- previousDateMs = currentDateMs;
+ previousAccessDateMs = accessDateMS;
}
Preference permissionUsagePreference =
new PermissionHistoryPreference(
- getContext(),
+ context,
appPermissionAccessUiInfo.getUserHandle(),
appPermissionAccessUiInfo.getPackageName(),
appPermissionAccessUiInfo.getBadgedPackageIcon(),
@@ -379,7 +370,7 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
appPermissionAccessUiInfo.getAttributionTags(),
i == appPermissionAccessUiInfoList.size() - 1,
mSessionId,
- appPermissionAccessUiInfo.getOnClickDialog());
+ appPermissionAccessUiInfo.isEmergencyLocationAccess());
category.get().addPreference(permissionUsagePreference);
}
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 85f907fd3..598dbad2d 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
@@ -36,7 +36,6 @@ import android.os.UserHandle
import android.os.UserManager
import android.permission.flags.Flags
import androidx.annotation.RequiresApi
-import androidx.annotation.StringRes
import androidx.lifecycle.AbstractSavedStateViewModelFactory
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
@@ -429,10 +428,11 @@ class PermissionUsageDetailsViewModel(
val durationSummaryLabel = getDurationSummary(context, this, accessTimeList)
val proxyLabel = getProxyPackageLabel(this)
val subAttributionLabel = getSubAttributionLabel(this)
- val showingSubAttribution = subAttributionLabel != null && subAttributionLabel.isNotEmpty()
+ val showingSubAttribution = !subAttributionLabel.isNullOrEmpty()
val summary =
buildUsageSummary(context, subAttributionLabel, proxyLabel, durationSummaryLabel)
- val onClickDialog = getPermissionUsageOnclickDialog(this.clusteredOp)
+ val isEmergencyLocationAccess =
+ isLocationByPassEnabled() && clusteredOp == AppOpsManager.OPSTR_EMERGENCY_LOCATION
return AppPermissionAccessUiInfo(
this.appPermissionId.userHandle,
@@ -445,26 +445,10 @@ class PermissionUsageDetailsViewModel(
showingSubAttribution,
ArrayList(this.attributionTags),
getBadgedPackageIcon(this.appPermissionId.packageName, this.appPermissionId.userHandle),
- onClickDialog
+ isEmergencyLocationAccess
)
}
- /**
- * If an app op is clustered by itself and clicking its access entry in the privacy timeline
- * displays an alert dialog, return the dialog with title and description.
- */
- private fun getPermissionUsageOnclickDialog(
- clusteredOp: String?
- ): PermissionUsageOnClickDialog? {
- if (isLocationByPassEnabled() && clusteredOp == AppOpsManager.OPSTR_EMERGENCY_LOCATION) {
- val title = R.string.privacy_dashboard_emergency_location_dialog_title
- val description = R.string.privacy_dashboard_emergency_location_dialog_description
- return PermissionUsageOnClickDialog(title, description)
- }
-
- return null
- }
-
/** Builds a summary of the permission access. */
private fun buildUsageSummary(
context: Context,
@@ -590,12 +574,7 @@ class PermissionUsageDetailsViewModel(
val showingAttribution: Boolean,
val attributionTags: ArrayList<String>,
val badgedPackageIcon: Drawable?,
- val onClickDialog: PermissionUsageOnClickDialog?
- )
-
- data class PermissionUsageOnClickDialog(
- @StringRes val title: Int,
- @StringRes val description: Int
+ val isEmergencyLocationAccess: Boolean
)
/**