Implemented removal of stale adselection data
Test: test would be flaky because of the way the feature works
Bug: 241182319
Bug: 238353778
Change-Id: I9596e40449d9761e41d0e3bcdbf52d654f96c163
diff --git a/adservices/service-core/java/com/android/adservices/service/adselection/AdSelectionRunner.java b/adservices/service-core/java/com/android/adservices/service/adselection/AdSelectionRunner.java
index 856e49a..20ecc3c 100644
--- a/adservices/service-core/java/com/android/adservices/service/adselection/AdSelectionRunner.java
+++ b/adservices/service-core/java/com/android/adservices/service/adselection/AdSelectionRunner.java
@@ -60,6 +60,7 @@
import com.google.common.util.concurrent.MoreExecutors;
import java.time.Clock;
+import java.time.Instant;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -100,6 +101,8 @@
@VisibleForTesting
static final String AD_SELECTION_TIMED_OUT = "Ad selection exceeded allowed time limit";
+ public static final long DAY_IN_SECONDS = 60 * 60 * 24;
+
@NonNull private final Context mContext;
@NonNull private final CustomAudienceDao mCustomAudienceDao;
@NonNull private final AdSelectionEntryDao mAdSelectionEntryDao;
@@ -230,6 +233,8 @@
@Override
public void onSuccess(DBAdSelection result) {
notifySuccessToCaller(result, callback);
+ // TODO(242280808): Schedule a clear for stale data instead of this hack
+ clearExpiredAdSelectionData();
}
@Override
@@ -241,6 +246,8 @@
} else {
notifyFailureToCaller(callback, t);
}
+ // TODO(242280808): Schedule a clear for stale data instead of this hack
+ clearExpiredAdSelectionData();
}
},
mExecutorService);
@@ -599,4 +606,9 @@
}
return null;
}
+
+ private void clearExpiredAdSelectionData() {
+ Instant expirationTime = mClock.instant().minusSeconds(DAY_IN_SECONDS);
+ mAdSelectionEntryDao.removeExpiredAdSelection(expirationTime);
+ }
}
diff --git a/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionRunnerTest.java b/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionRunnerTest.java
index c96e2fb..2fb629b 100644
--- a/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionRunnerTest.java
+++ b/adservices/tests/unittest/service-core/src/com/android/adservices/service/adselection/AdSelectionRunnerTest.java
@@ -118,10 +118,9 @@
@Mock private AdBidGenerator mMockAdBidGenerator;
@Mock private AdSelectionIdGenerator mMockAdSelectionIdGenerator;
@Mock private AppImportanceFilter mAppImportanceFilter;
- @Mock private Clock mClock;
+ @Spy private Clock mClock = Clock.systemUTC();
@Mock private ConsentManager mConsentManagerMock;
private Flags mFlags;
-
private Context mContext;
private ExecutorService mExecutorService;
private CustomAudienceDao mCustomAudienceDao;