set timestamp on actions
PiperOrigin-RevId: 246030782
Change-Id: Idf86e345c51dc7c373ae7188ea7e38c021980dbf
diff --git a/src/main/java/com/google/android/libraries/feed/api/scope/FeedProcessScope.java b/src/main/java/com/google/android/libraries/feed/api/scope/FeedProcessScope.java
index 159ed5c..c3f39db 100644
--- a/src/main/java/com/google/android/libraries/feed/api/scope/FeedProcessScope.java
+++ b/src/main/java/com/google/android/libraries/feed/api/scope/FeedProcessScope.java
@@ -533,7 +533,7 @@
new RequestManagerImpl(feedRequestManager, sessionManager);
ActionManager actionManager =
new FeedActionManagerImpl(
- sessionManager, store, threadUtils, taskQueue, getOrCreateMainThreadRunner());
+ sessionManager, store, threadUtils, taskQueue, getOrCreateMainThreadRunner(), clock);
if (knownContentApi == null) {
knownContentApi =
diff --git a/src/main/java/com/google/android/libraries/feed/feedactionmanager/BUILD b/src/main/java/com/google/android/libraries/feed/feedactionmanager/BUILD
index b2315fd..197fea5 100644
--- a/src/main/java/com/google/android/libraries/feed/feedactionmanager/BUILD
+++ b/src/main/java/com/google/android/libraries/feed/feedactionmanager/BUILD
@@ -11,6 +11,7 @@
"//src/main/java/com/google/android/libraries/feed/common",
"//src/main/java/com/google/android/libraries/feed/common/concurrent",
"//src/main/java/com/google/android/libraries/feed/common/functional",
+ "//src/main/java/com/google/android/libraries/feed/common/time",
"//src/main/java/com/google/android/libraries/feed/host/logging",
"//src/main/java/com/google/android/libraries/feed/internalapi/actionmanager",
"//src/main/java/com/google/android/libraries/feed/internalapi/store",
diff --git a/src/main/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImpl.java b/src/main/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImpl.java
index e9b38f3..8767af0 100644
--- a/src/main/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImpl.java
+++ b/src/main/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImpl.java
@@ -24,6 +24,7 @@
import com.google.android.libraries.feed.common.concurrent.TaskQueue;
import com.google.android.libraries.feed.common.concurrent.TaskQueue.TaskType;
import com.google.android.libraries.feed.common.functional.Consumer;
+import com.google.android.libraries.feed.common.time.Clock;
import com.google.android.libraries.feed.host.logging.Task;
import com.google.android.libraries.feed.internalapi.actionmanager.ActionManager;
import com.google.android.libraries.feed.internalapi.store.LocalActionMutation;
@@ -34,6 +35,7 @@
import com.google.search.now.wire.feed.ActionPayloadProto.ActionPayload;
import java.util.HashSet;
import java.util.List;
+import java.util.concurrent.TimeUnit;
/** Default implementation of {@link ActionManager} */
public class FeedActionManagerImpl implements ActionManager {
@@ -43,18 +45,21 @@
private final ThreadUtils threadUtils;
private final TaskQueue taskQueue;
private final MainThreadRunner mainThreadRunner;
+ private final Clock clock;
public FeedActionManagerImpl(
SessionManager sessionManager,
Store store,
ThreadUtils threadUtils,
TaskQueue taskQueue,
- MainThreadRunner mainThreadRunner) {
+ MainThreadRunner mainThreadRunner,
+ Clock clock) {
this.sessionManager = sessionManager;
this.store = store;
this.threadUtils = threadUtils;
this.taskQueue = taskQueue;
this.mainThreadRunner = mainThreadRunner;
+ this.clock = clock;
}
@Override
@@ -88,10 +93,12 @@
TaskType.BACKGROUND,
() -> {
HashSet<StreamUploadableAction> actionSet = new HashSet<>();
+ long currentTime = TimeUnit.MILLISECONDS.toSeconds(clock.currentTimeMillis());
actionSet.add(
StreamUploadableAction.newBuilder()
.setFeatureContentId(contentId)
.setPayload(payload)
+ .setTimestampSeconds(currentTime)
.build());
sessionManager.triggerUploadActions(actionSet);
});
diff --git a/src/test/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImplTest.java b/src/test/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImplTest.java
index eca1f6e..535d376 100644
--- a/src/test/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImplTest.java
+++ b/src/test/java/com/google/android/libraries/feed/feedactionmanager/FeedActionManagerImplTest.java
@@ -40,6 +40,7 @@
import com.google.search.now.feed.client.StreamDataProto.StreamUploadableAction;
import com.google.search.now.wire.feed.ActionPayloadProto.ActionPayload;
import com.google.search.now.wire.feed.ConsistencyTokenProto.ConsistencyToken;
+import java.time.Duration;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -57,6 +58,8 @@
private static final String CONTENT_ID_STRING = "contentIdString";
private static final String SESSION_ID = "session";
+ private static final long DEFAULT_TIME = Duration.ofDays(42).toMillis();
+ private static final long DEFAULT_TIME_SECONDS = Duration.ofDays(42).getSeconds();
private final FakeClock fakeClock = new FakeClock();
private final FakeMainThreadRunner fakeMainThreadRunner =
@@ -81,7 +84,12 @@
initMocks(this);
actionManager =
new FeedActionManagerImpl(
- sessionManager, store, fakeThreadUtils, getTaskQueue(), fakeMainThreadRunner);
+ sessionManager,
+ store,
+ fakeThreadUtils,
+ getTaskQueue(),
+ fakeMainThreadRunner,
+ fakeClock);
}
@Test
@@ -175,10 +183,12 @@
@Test
public void triggerCreateAndUploadAction() throws Exception {
ActionPayload payload = ActionPayload.getDefaultInstance();
+ fakeClock.set(DEFAULT_TIME);
actionManager.createAndUploadAction(CONTENT_ID_STRING, payload);
verify(sessionManager).triggerUploadActions(actionCaptor.capture());
StreamUploadableAction action = (StreamUploadableAction) actionCaptor.getValue().toArray()[0];
assertThat(action.getFeatureContentId()).isEqualTo(CONTENT_ID_STRING);
+ assertThat(action.getTimestampSeconds()).isEqualTo(DEFAULT_TIME_SECONDS);
assertThat(action.getPayload()).isEqualTo(payload);
}