summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageDetailsFragment.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageFragment.java22
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModel.kt6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModelV2.kt7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/viewmodel/v31/PermissionUsageViewModel.kt8
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageDetailsViewModelTest.kt34
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageViewModelTest.kt28
7 files changed, 92 insertions, 20 deletions
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 8482545df..61693836a 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
@@ -262,10 +262,9 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
setPreferenceScreen(screen);
}
screen.removeAll();
- boolean show7Days = mViewModel.getShow7Days();
Preference subtitlePreference = new Preference(context);
- updateShow7DaysToggle(show7Days);
- int usageSubtitle = show7Days
+ updateShow7DaysToggle(uiData.getShow7Days());
+ int usageSubtitle = uiData.getShow7Days()
? R.string.permission_group_usage_subtitle_7d
: R.string.permission_group_usage_subtitle_24h;
@@ -282,7 +281,7 @@ public class PermissionUsageDetailsFragment extends SettingsWithLargeHeader {
if (mHasSystemApps != containsSystemAppAccesses) {
mHasSystemApps = containsSystemAppAccesses;
}
- updateShowSystemToggle(mViewModel.getShowSystem());
+ updateShowSystemToggle(uiData.getShowSystem());
// Make these variables effectively final so that
// we can use these captured variables in the below lambda expression
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageFragment.java
index 633f18f5d..d99d531a0 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/v31/PermissionUsageFragment.java
@@ -47,7 +47,6 @@ import com.android.permissioncontroller.permission.ui.viewmodel.v31.PermissionUs
import com.android.permissioncontroller.permission.ui.viewmodel.v31.PermissionUsageViewModelFactory;
import com.android.permissioncontroller.permission.ui.viewmodel.v31.PermissionUsagesUiState;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
-import com.android.settingslib.HelpUtils;
import java.util.ArrayList;
import java.util.Comparator;
@@ -217,8 +216,6 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader {
}
mMenuItemsCreated = true;
updateShowSystemToggle(mViewModel.getShowSystemApps());
- HelpUtils.prepareHelpMenuItem(
- getActivity(), menu, R.string.help_permission_usage, getClass().getName());
}
@Override
@@ -318,7 +315,6 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader {
mSessionId,
PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SEE_OTHER_PERMISSIONS_CLICKED);
});
- boolean containsSystemAppUsages = permissionUsagesUiData.getContainsSystemAppUsage();
Map<String, Integer> permissionGroupWithUsageCounts =
permissionUsagesUiData.getPermissionGroupUsageCount();
List<Map.Entry<String, Integer>> permissionGroupWithUsageCountsEntries =
@@ -332,13 +328,14 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader {
mViewModel.getPermissionGroupLabel(
context, permissionGroupWithUsageCount.getKey())));
+ boolean containsSystemAppUsages = permissionUsagesUiData.getContainsSystemAppUsage();
if (mHasSystemApps != containsSystemAppUsages) {
mHasSystemApps = containsSystemAppUsages;
}
-
- boolean show7Days = mViewModel.getShow7DaysData();
+ boolean show7Days = permissionUsagesUiData.getShow7Days();
+ boolean showSystem = permissionUsagesUiData.getShowSystem();
updateShow7DaysToggle(show7Days);
- updateShowSystemToggle(mViewModel.getShowSystemApps());
+ updateShowSystemToggle(showSystem);
mGraphic = new PermissionUsageGraphicPreference(context, show7Days);
screen.addPreference(mGraphic);
@@ -351,7 +348,8 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader {
getAdvancedInfoSummaryString(context, permissionGroupWithUsageCountsEntries);
screen.setSummary(advancedInfoSummary);
- addUIContent(context, permissionGroupWithUsageCountsEntries, category);
+ addUIContent(context, permissionGroupWithUsageCountsEntries, category,
+ showSystem, show7Days);
}
private CharSequence getAdvancedInfoSummaryString(
@@ -404,10 +402,10 @@ public class PermissionUsageFragment extends SettingsWithLargeHeader {
private void addUIContent(
Context context,
List<Map.Entry<String, Integer>> permissionGroupWithUsageCounts,
- PreferenceCategory category) {
- boolean showSystem = mViewModel.getShowSystemApps();
- boolean show7Days = mViewModel.getShow7DaysData();
-
+ PreferenceCategory category,
+ boolean showSystem,
+ boolean show7Days
+ ) {
for (int i = 0; i < permissionGroupWithUsageCounts.size(); i++) {
Map.Entry<String, Integer> permissionGroupWithUsageCount =
permissionGroupWithUsageCounts.get(i);
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 b2f50be0e..849ce3c8c 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
@@ -125,7 +125,9 @@ class PermissionUsageDetailsViewModel(
startTime,
showSystem
),
- containsSystemAppUsages(allLightHistoricalPackageOpsLiveData, startTime)
+ containsSystemAppUsages(allLightHistoricalPackageOpsLiveData, startTime),
+ showSystem,
+ show7Days
)
}
@@ -571,6 +573,8 @@ class PermissionUsageDetailsViewModel(
data class Success(
val appPermissionAccessUiInfoList: List<AppPermissionAccessUiInfo>,
val containsSystemAppUsage: Boolean,
+ val showSystem: Boolean,
+ val show7Days: Boolean,
) : PermissionUsageDetailsUiState()
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModelV2.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModelV2.kt
index 6808cf263..15ed88683 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModelV2.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/v31/PermissionUsageDetailsViewModelV2.kt
@@ -157,7 +157,12 @@ class PermissionUsageDetailsViewModelV2(
)
}
.sortedBy { -1 * it.accessStartTime }
- return PermissionUsageDetailsUiState.Success(result, containsSystemUsages)
+ return PermissionUsageDetailsUiState.Success(
+ result,
+ containsSystemUsages,
+ showSystem,
+ show7Days
+ )
}
private val emergencyLocationAttributionLabel: String by lazy {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/viewmodel/v31/PermissionUsageViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/viewmodel/v31/PermissionUsageViewModel.kt
index e1be94866..c1929dd42 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/viewmodel/v31/PermissionUsageViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/viewmodel/v31/PermissionUsageViewModel.kt
@@ -132,7 +132,9 @@ class PermissionUsageViewModel(
}
return PermissionUsagesUiState.Success(
permGroupOps.any { !it.isUserSensitive },
- permissionUsageCountMap
+ permissionUsageCountMap,
+ showSystemApps,
+ show7DaysData
)
}
@@ -181,7 +183,9 @@ sealed class PermissionUsagesUiState {
data class Success(
val containsSystemAppUsage: Boolean,
- val permissionGroupUsageCount: Map<String, Int>
+ val permissionGroupUsageCount: Map<String, Int>,
+ val showSystem: Boolean,
+ val show7Days: Boolean,
) : PermissionUsagesUiState()
}
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageDetailsViewModelTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageDetailsViewModelTest.kt
index 25ae74e40..c387a0b9b 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageDetailsViewModelTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageDetailsViewModelTest.kt
@@ -450,6 +450,40 @@ class PermissionUsageDetailsViewModelTest {
assertThat(uiState.appPermissionAccessUiInfoList.size).isEqualTo(1)
}
+ @Test
+ fun verifyObserverIsNotifiedOnUserActionWhenDataIsSame() = runTest {
+ val accessTimeMillis = (getCurrentTime() - TimeUnit.HOURS.toMillis(2))
+ val appOpEvents =
+ listOf(
+ DiscreteOpModel(
+ AppOpsManager.OPSTR_COARSE_LOCATION,
+ accessTimeMillis,
+ TimeUnit.MINUTES.toMillis(1)
+ ),
+ )
+
+ val discretePackageOps = flow {
+ emit(
+ listOf(
+ DiscretePackageOpsModel(testPackageName, currentUser.identifier, appOpEvents),
+ )
+ )
+ }
+ val underTest =
+ getViewModel(
+ LOCATION_PERMISSION_GROUP,
+ discretePackageOps,
+ )
+
+ val uiState = getPermissionUsageDetailsUiState(underTest)
+ assertThat(uiState.show7Days).isFalse()
+
+ // perform user action
+ underTest.updateShow7DaysToggle(true)
+ val uiState2 = getPermissionUsageDetailsUiState(underTest)
+ assertThat(uiState2.show7Days).isTrue()
+ }
+
private fun getPermissionGroupUsageDetailsUseCase(
permissionGroup: String,
discreteUsageFlow: Flow<List<DiscretePackageOpsModel>>,
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageViewModelTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageViewModelTest.kt
index 1356da2a6..fdd6534f5 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageViewModelTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/tests/mocking/permission/ui/model/PermissionUsageViewModelTest.kt
@@ -216,6 +216,34 @@ class PermissionUsageViewModelTest {
assertThat(permissionGroupsCount[MICROPHONE_PERMISSION_GROUP]).isEqualTo(1)
}
+ @Test
+ fun verifyObserverIsNotifiedOnUserActionWhenDataIsSame() = runTest {
+ val timestamp = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2)
+ val appOpsUsage =
+ listOf(
+ AppOpUsageModel(AppOpsManager.OPSTR_CAMERA, timestamp),
+ AppOpUsageModel(AppOpsManager.OPSTR_PHONE_CALL_MICROPHONE, timestamp),
+ )
+ val appOpsUsageModels =
+ listOf(
+ PackageAppOpUsageModel(testPackageName, appOpsUsage, currentUser.identifier),
+ )
+ val permissionUsageUseCase = getPermissionGroupUsageUseCase(appOpsUsageModels)
+ val permissionUsageViewModel =
+ getViewModel(
+ useCase = permissionUsageUseCase,
+ savedStateHandle = SavedStateHandle(mapOf("show7Days" to false))
+ )
+
+ val uiState = getPermissionUsageUiState(permissionUsageViewModel)
+ assertThat(uiState.show7Days).isFalse()
+
+ // perform user action
+ permissionUsageViewModel.updateShow7Days(true)
+ val uiState2 = getPermissionUsageUiState(permissionUsageViewModel)
+ assertThat(uiState2.show7Days).isTrue()
+ }
+
private fun TestScope.getViewModel(
useCase: GetPermissionGroupUsageUseCase = getPermissionGroupUsageUseCase(),
is7DayToggleEnabled: Boolean = false,