diff options
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)      }  |