summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Erik Wolsheimer <ewol@google.com> 2021-05-07 12:37:55 -0700
committer Erik Wolsheimer <ewol@google.com> 2021-05-10 16:29:57 +0000
commit90d2ca262ffdfdb4537a7430bc97c93377d96847 (patch)
tree3edda77f97967f1dec2cf7e8b0fb0efa5d2872b0
parentfaeda2a3ebd05016f103e835bf98f4692fb11cd8 (diff)
Do not show redundant duration for <= 1m location usage
Bug: 176902658 Test: Manual Change-Id: If48d5e65e4dccc237d3f629e33890af002117c44
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionDetailsFragment.java37
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionHistoryPreference.java12
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);