summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Elliot Sisteron <elliotsisteron@google.com> 2023-05-12 11:36:04 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-05-12 11:36:04 +0000
commit3a5decdf595767d9a747367793927552c9d25c16 (patch)
treeab1649c461de8e8d1e1dcb43ac41f17dc1c29c0e
parent890fc3ee3cbed514241cc6cca1ccd5e7210bb07a (diff)
parent04216166bcc695f6f33d8ba15d68d04f7e8315a6 (diff)
Merge "Stop clearing errors when starting a new refresh." into udc-dev am: 67cc474e72 am: 05ebd915be am: 04216166bc
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Permission/+/23168639 Change-Id: I2502d62962cf08449fb845b237695430dc8105ad Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--service/java/com/android/safetycenter/SafetyCenterService.java2
-rw-r--r--service/java/com/android/safetycenter/data/SafetyCenterDataManager.java10
-rw-r--r--service/java/com/android/safetycenter/data/SafetySourceDataRepository.java19
-rw-r--r--service/java/com/android/safetycenter/data/SafetySourceStateCollectedLogger.java3
-rw-r--r--service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java3
-rw-r--r--tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt23
6 files changed, 23 insertions, 37 deletions
diff --git a/service/java/com/android/safetycenter/SafetyCenterService.java b/service/java/com/android/safetycenter/SafetyCenterService.java
index 8e729bf4e..fd50c6ff8 100644
--- a/service/java/com/android/safetycenter/SafetyCenterService.java
+++ b/service/java/com/android/safetycenter/SafetyCenterService.java
@@ -1057,8 +1057,6 @@ public final class SafetyCenterService extends SystemService {
@Nullable List<String> selectedSafetySourceIds) {
UserProfileGroup userProfileGroup = UserProfileGroup.fromUser(getContext(), userId);
synchronized (mApiLock) {
- mSafetyCenterDataManager.clearSafetySourceErrors(userProfileGroup);
-
String refreshBroadcastId =
mSafetyCenterBroadcastDispatcher.sendRefreshSafetySources(
refreshReason, userProfileGroup, selectedSafetySourceIds);
diff --git a/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java b/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java
index 289b25474..fd03f88f7 100644
--- a/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java
+++ b/service/java/com/android/safetycenter/data/SafetyCenterDataManager.java
@@ -89,7 +89,6 @@ public final class SafetyCenterDataManager {
mSafetySourceDataRepository =
new SafetySourceDataRepository(
context,
- safetyCenterRefreshTracker,
mSafetyCenterInFlightIssueActionRepository,
mSafetyCenterIssueDismissalRepository);
mSafetyCenterIssueRepository =
@@ -242,15 +241,6 @@ public final class SafetyCenterDataManager {
}
}
- /**
- * Clears all safety source errors received so far for the given {@link UserProfileGroup}, this
- * is useful e.g. when starting a new broadcast.
- */
- public void clearSafetySourceErrors(UserProfileGroup userProfileGroup) {
- mSafetySourceDataRepository.clearSafetySourceErrors(userProfileGroup);
- mSafetyCenterIssueRepository.updateIssues(userProfileGroup);
- }
-
/** Marks the given {@link SafetyCenterIssueActionId} as in-flight. */
public void markSafetyCenterIssueActionInFlight(
SafetyCenterIssueActionId safetyCenterIssueActionId) {
diff --git a/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java b/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java
index e602b5b7b..bf630b400 100644
--- a/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java
+++ b/service/java/com/android/safetycenter/data/SafetySourceDataRepository.java
@@ -40,9 +40,7 @@ import android.util.Log;
import androidx.annotation.RequiresApi;
-import com.android.safetycenter.SafetyCenterRefreshTracker;
import com.android.safetycenter.SafetySourceKey;
-import com.android.safetycenter.UserProfileGroup;
import com.android.safetycenter.internaldata.SafetyCenterIssueActionId;
import com.android.safetycenter.internaldata.SafetyCenterIssueKey;
import com.android.safetycenter.logging.SafetyCenterStatsdLogger;
@@ -71,18 +69,15 @@ final class SafetySourceDataRepository {
private final ArrayMap<SafetySourceKey, Integer> mSourceStates = new ArrayMap<>();
private final Context mContext;
- private final SafetyCenterRefreshTracker mSafetyCenterRefreshTracker;
private final SafetyCenterInFlightIssueActionRepository
mSafetyCenterInFlightIssueActionRepository;
private final SafetyCenterIssueDismissalRepository mSafetyCenterIssueDismissalRepository;
SafetySourceDataRepository(
Context context,
- SafetyCenterRefreshTracker safetyCenterRefreshTracker,
SafetyCenterInFlightIssueActionRepository safetyCenterInFlightIssueActionRepository,
SafetyCenterIssueDismissalRepository safetyCenterIssueDismissalRepository) {
mContext = context;
- mSafetyCenterRefreshTracker = safetyCenterRefreshTracker;
mSafetyCenterInFlightIssueActionRepository = safetyCenterInFlightIssueActionRepository;
mSafetyCenterIssueDismissalRepository = safetyCenterIssueDismissalRepository;
}
@@ -209,20 +204,6 @@ final class SafetySourceDataRepository {
}
/**
- * Clears all safety source errors received so far for the given {@link UserProfileGroup}, this
- * is useful e.g. when starting a new broadcast.
- */
- void clearSafetySourceErrors(UserProfileGroup userProfileGroup) {
- // Loop in reverse index order to be able to remove entries while iterating.
- for (int i = mSafetySourceErrors.size() - 1; i >= 0; i--) {
- SafetySourceKey sourceKey = mSafetySourceErrors.valueAt(i);
- if (userProfileGroup.contains(sourceKey.getUserId())) {
- mSafetySourceErrors.removeAt(i);
- }
- }
- }
-
- /**
* Returns the {@link SafetySourceIssue} associated with the given {@link SafetyCenterIssueKey}.
*
* <p>Returns {@code null} if there is no such {@link SafetySourceIssue}.
diff --git a/service/java/com/android/safetycenter/data/SafetySourceStateCollectedLogger.java b/service/java/com/android/safetycenter/data/SafetySourceStateCollectedLogger.java
index 12d2725f0..b6bf280ae 100644
--- a/service/java/com/android/safetycenter/data/SafetySourceStateCollectedLogger.java
+++ b/service/java/com/android/safetycenter/data/SafetySourceStateCollectedLogger.java
@@ -18,6 +18,7 @@ package com.android.safetycenter.data;
import static android.os.Build.VERSION_CODES.TIRAMISU;
+import android.annotation.ElapsedRealtimeLong;
import android.annotation.Nullable;
import android.content.Context;
import android.safetycenter.SafetyCenterManager;
@@ -105,7 +106,7 @@ final class SafetySourceStateCollectedLogger {
boolean sourceDataDiffers,
boolean isManagedProfile,
@Nullable SafetyEvent safetyEvent,
- @Nullable Long lastUpdatedElapsedTimeMillis) {
+ @Nullable @ElapsedRealtimeLong Long lastUpdatedElapsedTimeMillis) {
SafetySourceStatus sourceStatus = sourceData == null ? null : sourceData.getStatus();
List<SafetySourceIssue> sourceIssues =
sourceData == null ? Collections.emptyList() : sourceData.getIssues();
diff --git a/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java b/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java
index a15bbc633..8ca662d27 100644
--- a/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java
+++ b/service/java/com/android/safetycenter/logging/SafetyCenterStatsdLogger.java
@@ -72,6 +72,7 @@ import static com.android.permission.PermissionStatsLog.SAFETY_STATE__OVERALL_SE
import static com.android.permission.PermissionStatsLog.SAFETY_STATE__OVERALL_SEVERITY_LEVEL__SAFETY_SEVERITY_OK;
import static com.android.permission.PermissionStatsLog.SAFETY_STATE__OVERALL_SEVERITY_LEVEL__SAFETY_SEVERITY_RECOMMENDATION;
+import android.annotation.ElapsedRealtimeLong;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.safetycenter.SafetyCenterManager;
@@ -173,7 +174,7 @@ public final class SafetyCenterStatsdLogger {
@Nullable SafetyEvent safetyEvent,
@Nullable @SafetyCenterManager.RefreshReason Integer refreshReason,
boolean dataChanged,
- @Nullable Long lastUpdatedElapsedTimeMillis) {
+ @Nullable @ElapsedRealtimeLong Long lastUpdatedElapsedTimeMillis) {
if (!SafetyCenterFlags.getAllowStatsdLogging()) {
return;
}
diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt
index 90ccb39f9..81a71d7a4 100644
--- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt
+++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/SafetyCenterManagerTest.kt
@@ -430,6 +430,18 @@ class SafetyCenterManagerTest {
emptyList()
)
+ private val safetyCenterDataUnknownScanningWithError =
+ SafetyCenterData(
+ safetyCenterStatusUnknownScanning,
+ emptyList(),
+ listOf(
+ SafetyCenterEntryOrGroup(
+ safetyCenterTestData.safetyCenterEntryError(SINGLE_SOURCE_ID)
+ )
+ ),
+ emptyList()
+ )
+
private val safetyCenterDataUnknownReviewError =
SafetyCenterData(
safetyCenterTestData.safetyCenterStatusUnknown,
@@ -738,7 +750,7 @@ class SafetyCenterManagerTest {
}
@Test
- fun refreshSafetySources_withShowEntriesOnTimeout_stopsShowingErrorWhenTryingAgain() {
+ fun refreshSafetySources_withShowEntriesOnTimeout_keepsShowingErrorUntilClearedBySource() {
SafetyCenterFlags.setAllRefreshTimeoutsTo(TIMEOUT_SHORT)
SafetyCenterFlags.showErrorEntriesOnTimeout = true
safetyCenterTestHelper.setConfig(safetyCenterTestConfigs.singleSourceConfig)
@@ -746,8 +758,10 @@ class SafetyCenterManagerTest {
safetyCenterManager.refreshSafetySourcesWithReceiverPermissionAndWait(
REFRESH_REASON_RESCAN_BUTTON_CLICK
)
- listener.receiveSafetyCenterData()
- listener.receiveSafetyCenterData()
+ val scanningData = listener.receiveSafetyCenterData()
+ checkState(scanningData == safetyCenterDataFromConfigScanning)
+ val initialData = listener.receiveSafetyCenterData()
+ checkState(initialData == safetyCenterDataUnknownReviewError)
SafetyCenterFlags.setAllRefreshTimeoutsTo(TIMEOUT_LONG)
SafetySourceReceiver.setResponse(
@@ -759,7 +773,8 @@ class SafetyCenterManagerTest {
)
val safetyCenterDataWhenTryingAgain = listener.receiveSafetyCenterData()
- assertThat(safetyCenterDataWhenTryingAgain).isEqualTo(safetyCenterDataFromConfigScanning)
+ assertThat(safetyCenterDataWhenTryingAgain)
+ .isEqualTo(safetyCenterDataUnknownScanningWithError)
val safetyCenterDataWhenFinishingRefresh = listener.receiveSafetyCenterData()
assertThat(safetyCenterDataWhenFinishingRefresh).isEqualTo(safetyCenterDataOk)
}