diff options
author | 2023-05-12 11:36:04 +0000 | |
---|---|---|
committer | 2023-05-12 11:36:04 +0000 | |
commit | 3a5decdf595767d9a747367793927552c9d25c16 (patch) | |
tree | ab1649c461de8e8d1e1dcb43ac41f17dc1c29c0e | |
parent | 890fc3ee3cbed514241cc6cca1ccd5e7210bb07a (diff) | |
parent | 04216166bcc695f6f33d8ba15d68d04f7e8315a6 (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>
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) } |