diff options
author | 2021-05-07 12:37:55 -0700 | |
---|---|---|
committer | 2021-05-10 16:29:57 +0000 | |
commit | 90d2ca262ffdfdb4537a7430bc97c93377d96847 (patch) | |
tree | 3edda77f97967f1dec2cf7e8b0fb0efa5d2872b0 | |
parent | faeda2a3ebd05016f103e835bf98f4692fb11cd8 (diff) |
Do not show redundant duration for <= 1m location usage
Bug: 176902658
Test: Manual
Change-Id: If48d5e65e4dccc237d3f629e33890af002117c44
2 files changed, 29 insertions, 20 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionDetailsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionDetailsFragment.java index 02bfd0aec..8df1850e4 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionDetailsFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionDetailsFragment.java @@ -20,6 +20,7 @@ import static java.util.concurrent.TimeUnit.DAYS; import static java.util.concurrent.TimeUnit.HOURS; import static java.util.concurrent.TimeUnit.MINUTES; +import android.Manifest; import android.Manifest.permission_group; import android.app.ActionBar; import android.app.role.RoleManager; @@ -400,19 +401,12 @@ public class PermissionDetailsFragment extends SettingsWithLargeHeader implement } String accessTime = DateFormat.getTimeFormat(context).format(usage.mEndTime); - Long accessDurationLong = usage.mClusteredAccessTimeList + Long durationLong = usage.mClusteredAccessTimeList .stream() .map(p -> p.second) .filter(dur -> dur > 0) .reduce(0L, (dur1, dur2) -> dur1 + dur2); - // Only show the duration if it is at least (cluster + 1) minutes. Displaying times - // that are the same as the cluster granularity does not convey useful information. - String accessDuration = null; - if (accessDurationLong >= MINUTES.toMillis(CLUSTER_MINUTES_APART + 1)) { - accessDuration = UtilsKt.getDurationUsedStr(context, accessDurationLong); - } - List<Long> accessTimeList = usage.mClusteredAccessTimeList .stream().map(p -> p.first).collect(Collectors.toList()); ArrayList<String> attributionTags = @@ -421,6 +415,33 @@ public class PermissionDetailsFragment extends SettingsWithLargeHeader implement AppPermissionUsage.GroupUsage::getAttributionTags).filter( Objects::nonNull).flatMap(Collection::stream).collect( Collectors.toCollection(ArrayList::new)); + + // Determine duration string. + String accessDuration = null; + // Since Location accesses are atomic, we manually calculate the access duration + // by comparing the first and last access within the cluster + if (mFilterGroup.equals(Manifest.permission_group.LOCATION)) { + if (accessTimeList.size() > 1) { + durationLong = accessTimeList.get(0) + - accessTimeList.get(accessTimeList.size() - 1); + + // Similar to other history items, only show the duration if it's longer + // than the clustering granularity. + if (durationLong + >= (MINUTES.toMillis(CLUSTER_MINUTES_APART) + 1)) { + accessDuration = UtilsKt.getDurationUsedStr(context, durationLong); + } + } + } else { + // Only show the duration if it is at least (cluster + 1) minutes. Displaying + // times that are the same as the cluster granularity does not convey useful + // information. + if ((durationLong != null) + && durationLong >= MINUTES.toMillis(CLUSTER_MINUTES_APART + 1)) { + accessDuration = UtilsKt.getDurationUsedStr(context, durationLong); + } + } + PermissionHistoryPreference permissionUsagePreference = new PermissionHistoryPreference(context, usage.mAppPermissionUsage, mFilterGroup, accessTime, accessDuration, accessTimeList, attributionTags, diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionHistoryPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionHistoryPreference.java index 862e3b1d9..3d3a6aa9a 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionHistoryPreference.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionHistoryPreference.java @@ -16,7 +16,6 @@ package com.android.permissioncontroller.permission.ui.handheld; -import android.Manifest; import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.Context; @@ -45,7 +44,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.android.permissioncontroller.R; -import com.android.permissioncontroller.permission.debug.UtilsKt; import com.android.permissioncontroller.permission.model.AppPermissionUsage; import com.android.permissioncontroller.permission.utils.KotlinUtils; @@ -103,16 +101,6 @@ public class PermissionHistoryPreference extends Preference { setSummary(accessDuration); } - // Since Location accesses are atomic, we manually calculate the access duration - // by comparing the first and last access within the cluster - if (mPermissionGroup.equals(Manifest.permission_group.LOCATION) - && mAccessTimeList.size() > 1) { - int accessTimeListSize = mAccessTimeList.size(); - long locationAccessDuration = mAccessTimeList.get(0) - - mAccessTimeList.get(accessTimeListSize - 1); - setSummary(UtilsKt.getDurationUsedStr(context, locationAccessDuration)); - } - mIntent = getViewPermissionUsageForPeriodIntent(); if (mIntent != null) { mWidgetIcon = mContext.getDrawable(R.drawable.ic_info_outline); |