Use ComponentName as owner in query, event and related tables.
Bug: 315006058
Test: atest, manually tested ODP and FCP CUJ
Change-Id: I0e65a604ea51e1b43f1d4da09a7638b5094d8974
diff --git a/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImpl.java b/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImpl.java
index f6a3d0f..2f3a3e9 100644
--- a/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImpl.java
+++ b/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImpl.java
@@ -366,8 +366,8 @@
private void getRequests(long startTimeMillis, long endTimeMillis,
@NonNull IDataAccessServiceCallback callback) {
try {
- List<Query> queries = mEventsDao.readAllQueries(startTimeMillis, endTimeMillis,
- mService.getPackageName());
+ List<Query> queries = mEventsDao.readAllQueries(
+ startTimeMillis, endTimeMillis, mService);
List<RequestLogRecord> requestLogRecords = new ArrayList<>();
for (Query query : queries) {
RequestLogRecord record = new RequestLogRecord.Builder()
@@ -390,9 +390,8 @@
private void getJoinedEvents(long startTimeMillis, long endTimeMillis,
@NonNull IDataAccessServiceCallback callback) {
try {
- List<JoinedEvent> joinedEvents = mEventsDao.readJoinedTableRows(startTimeMillis,
- endTimeMillis,
- mService.getPackageName());
+ List<JoinedEvent> joinedEvents = mEventsDao.readJoinedTableRows(
+ startTimeMillis, endTimeMillis, mService);
List<EventLogRecord> joinedLogRecords = new ArrayList<>();
for (JoinedEvent joinedEvent : joinedEvents) {
RequestLogRecord requestLogRecord = new RequestLogRecord.Builder()
diff --git a/src/com/android/ondevicepersonalization/services/data/vendor/DbUtils.java b/src/com/android/ondevicepersonalization/services/data/DbUtils.java
similarity index 91%
rename from src/com/android/ondevicepersonalization/services/data/vendor/DbUtils.java
rename to src/com/android/ondevicepersonalization/services/data/DbUtils.java
index 0400c97..da1e772 100644
--- a/src/com/android/ondevicepersonalization/services/data/vendor/DbUtils.java
+++ b/src/com/android/ondevicepersonalization/services/data/DbUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.ondevicepersonalization.services.data.vendor;
+package com.android.ondevicepersonalization.services.data;
import android.annotation.NonNull;
import android.content.ComponentName;
@@ -23,7 +23,8 @@
/** Database utilities */
public class DbUtils {
- static String getTableName(
+ /** Returns the table name for a service */
+ public static String getTableName(
@NonNull String prefix, @NonNull ComponentName owner, @NonNull String certDigest) {
String ownerStr = owner.getPackageName() + "__" + owner.getShortClassName();
ownerStr = ownerStr.replace(".", "_");
diff --git a/src/com/android/ondevicepersonalization/services/data/events/Event.java b/src/com/android/ondevicepersonalization/services/data/events/Event.java
index e9b1d88..6bcb9f7 100644
--- a/src/com/android/ondevicepersonalization/services/data/events/Event.java
+++ b/src/com/android/ondevicepersonalization/services/data/events/Event.java
@@ -18,9 +18,11 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.ComponentName;
import com.android.ondevicepersonalization.internal.util.AnnotationValidations;
import com.android.ondevicepersonalization.internal.util.DataClass;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import java.io.Serializable;
@@ -43,7 +45,7 @@
/** Name of the service for this event */
@NonNull
- private final String mServiceName;
+ private final ComponentName mService;
/** The service assigned type of the event. */
private final int mType;
@@ -55,6 +57,11 @@
@Nullable
private final byte[] mEventData;
+ /** The name of the service */
+ public String getServiceName() {
+ return DbUtils.toTableValue(mService);
+ }
+
// Code below generated by codegen v1.0.23.
@@ -75,16 +82,16 @@
long eventId,
long queryId,
int rowIndex,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
int type,
long timeMillis,
@Nullable byte[] eventData) {
this.mEventId = eventId;
this.mQueryId = queryId;
this.mRowIndex = rowIndex;
- this.mServiceName = serviceName;
+ this.mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
this.mType = type;
this.mTimeMillis = timeMillis;
this.mEventData = eventData;
@@ -120,8 +127,8 @@
* Name of the service for this event
*/
@DataClass.Generated.Member
- public @NonNull String getServiceName() {
- return mServiceName;
+ public @NonNull ComponentName getService() {
+ return mService;
}
/**
@@ -164,7 +171,7 @@
&& mEventId == that.mEventId
&& mQueryId == that.mQueryId
&& mRowIndex == that.mRowIndex
- && java.util.Objects.equals(mServiceName, that.mServiceName)
+ && java.util.Objects.equals(mService, that.mService)
&& mType == that.mType
&& mTimeMillis == that.mTimeMillis
&& java.util.Arrays.equals(mEventData, that.mEventData);
@@ -180,7 +187,7 @@
_hash = 31 * _hash + Long.hashCode(mEventId);
_hash = 31 * _hash + Long.hashCode(mQueryId);
_hash = 31 * _hash + mRowIndex;
- _hash = 31 * _hash + java.util.Objects.hashCode(mServiceName);
+ _hash = 31 * _hash + java.util.Objects.hashCode(mService);
_hash = 31 * _hash + mType;
_hash = 31 * _hash + Long.hashCode(mTimeMillis);
_hash = 31 * _hash + java.util.Arrays.hashCode(mEventData);
@@ -197,7 +204,7 @@
private long mEventId;
private long mQueryId;
private int mRowIndex;
- private @NonNull String mServiceName;
+ private @NonNull ComponentName mService;
private int mType;
private long mTimeMillis;
private @Nullable byte[] mEventData;
@@ -216,7 +223,7 @@
* The id of the query.
* @param rowIndex
* Index of the associated entry in the request log for this event.
- * @param serviceName
+ * @param service
* Name of the service for this event
* @param type
* The service assigned type of the event.
@@ -229,16 +236,16 @@
long eventId,
long queryId,
int rowIndex,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
int type,
long timeMillis,
@Nullable byte[] eventData) {
mEventId = eventId;
mQueryId = queryId;
mRowIndex = rowIndex;
- mServiceName = serviceName;
+ mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
mType = type;
mTimeMillis = timeMillis;
mEventData = eventData;
@@ -281,10 +288,10 @@
* Name of the service for this event
*/
@DataClass.Generated.Member
- public @NonNull Builder setServiceName(@NonNull String value) {
+ public @NonNull Builder setService(@NonNull ComponentName value) {
checkNotUsed();
mBuilderFieldsSet |= 0x8;
- mServiceName = value;
+ mService = value;
return this;
}
@@ -330,7 +337,7 @@
mEventId,
mQueryId,
mRowIndex,
- mServiceName,
+ mService,
mType,
mTimeMillis,
mEventData);
@@ -346,10 +353,10 @@
}
@DataClass.Generated(
- time = 1706637135336L,
+ time = 1708721537301L,
codegenVersion = "1.0.23",
sourceFile = "packages/modules/OnDevicePersonalization/src/com/android/ondevicepersonalization/services/data/events/Event.java",
- inputSignatures = "private final long mEventId\nprivate final long mQueryId\nprivate final int mRowIndex\nprivate final @android.annotation.NonNull java.lang.String mServiceName\nprivate final int mType\nprivate final long mTimeMillis\nprivate final @android.annotation.Nullable byte[] mEventData\nclass Event extends java.lang.Object implements [java.io.Serializable]\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
+ inputSignatures = "private final long mEventId\nprivate final long mQueryId\nprivate final int mRowIndex\nprivate final @android.annotation.NonNull android.content.ComponentName mService\nprivate final int mType\nprivate final long mTimeMillis\nprivate final @android.annotation.Nullable byte[] mEventData\npublic java.lang.String getServiceName()\nclass Event extends java.lang.Object implements [java.io.Serializable]\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
@Deprecated
private void __metadata() {}
diff --git a/src/com/android/ondevicepersonalization/services/data/events/EventState.java b/src/com/android/ondevicepersonalization/services/data/events/EventState.java
index e0ecac7..9d4069c 100644
--- a/src/com/android/ondevicepersonalization/services/data/events/EventState.java
+++ b/src/com/android/ondevicepersonalization/services/data/events/EventState.java
@@ -17,9 +17,11 @@
package com.android.ondevicepersonalization.services.data.events;
import android.annotation.NonNull;
+import android.content.ComponentName;
import com.android.ondevicepersonalization.internal.util.AnnotationValidations;
import com.android.ondevicepersonalization.internal.util.DataClass;
+import com.android.ondevicepersonalization.services.data.DbUtils;
/**
* EventState object for the EventState table
@@ -35,12 +37,17 @@
/** Name of the service package for this event */
@NonNull
- private final String mServiceName;
+ private final ComponentName mService;
/** Unique identifier of the task for processing this event */
@NonNull
private final String mTaskIdentifier;
+ /** The name of the service */
+ public String getServiceName() {
+ return DbUtils.toTableValue(mService);
+ }
+
// Code below generated by codegen v1.0.23.
@@ -59,14 +66,14 @@
@DataClass.Generated.Member
/* package-private */ EventState(
@NonNull byte[] token,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
@NonNull String taskIdentifier) {
this.mToken = token;
AnnotationValidations.validate(
NonNull.class, null, mToken);
- this.mServiceName = serviceName;
+ this.mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
this.mTaskIdentifier = taskIdentifier;
AnnotationValidations.validate(
NonNull.class, null, mTaskIdentifier);
@@ -86,8 +93,8 @@
* Name of the service package for this event
*/
@DataClass.Generated.Member
- public @NonNull String getServiceName() {
- return mServiceName;
+ public @NonNull ComponentName getService() {
+ return mService;
}
/**
@@ -112,7 +119,7 @@
//noinspection PointlessBooleanExpression
return true
&& java.util.Arrays.equals(mToken, that.mToken)
- && java.util.Objects.equals(mServiceName, that.mServiceName)
+ && java.util.Objects.equals(mService, that.mService)
&& java.util.Objects.equals(mTaskIdentifier, that.mTaskIdentifier);
}
@@ -124,7 +131,7 @@
int _hash = 1;
_hash = 31 * _hash + java.util.Arrays.hashCode(mToken);
- _hash = 31 * _hash + java.util.Objects.hashCode(mServiceName);
+ _hash = 31 * _hash + java.util.Objects.hashCode(mService);
_hash = 31 * _hash + java.util.Objects.hashCode(mTaskIdentifier);
return _hash;
}
@@ -137,7 +144,7 @@
public static class Builder {
private @NonNull byte[] mToken;
- private @NonNull String mServiceName;
+ private @NonNull ComponentName mService;
private @NonNull String mTaskIdentifier;
private long mBuilderFieldsSet = 0L;
@@ -150,21 +157,21 @@
*
* @param token
* Token representing the event state.
- * @param serviceName
+ * @param service
* Name of the service package for this event
* @param taskIdentifier
* Unique identifier of the task for processing this event
*/
public Builder(
@NonNull byte[] token,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
@NonNull String taskIdentifier) {
mToken = token;
AnnotationValidations.validate(
NonNull.class, null, mToken);
- mServiceName = serviceName;
+ mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
mTaskIdentifier = taskIdentifier;
AnnotationValidations.validate(
NonNull.class, null, mTaskIdentifier);
@@ -185,10 +192,10 @@
* Name of the service package for this event
*/
@DataClass.Generated.Member
- public @NonNull Builder setServiceName(@NonNull String value) {
+ public @NonNull Builder setService(@NonNull ComponentName value) {
checkNotUsed();
mBuilderFieldsSet |= 0x2;
- mServiceName = value;
+ mService = value;
return this;
}
@@ -210,7 +217,7 @@
EventState o = new EventState(
mToken,
- mServiceName,
+ mService,
mTaskIdentifier);
return o;
}
@@ -224,10 +231,10 @@
}
@DataClass.Generated(
- time = 1706637187027L,
+ time = 1708721665919L,
codegenVersion = "1.0.23",
sourceFile = "packages/modules/OnDevicePersonalization/src/com/android/ondevicepersonalization/services/data/events/EventState.java",
- inputSignatures = "private final @android.annotation.NonNull byte[] mToken\nprivate final @android.annotation.NonNull java.lang.String mServiceName\nprivate final @android.annotation.NonNull java.lang.String mTaskIdentifier\nclass EventState extends java.lang.Object implements []\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
+ inputSignatures = "private final @android.annotation.NonNull byte[] mToken\nprivate final @android.annotation.NonNull android.content.ComponentName mService\nprivate final @android.annotation.NonNull java.lang.String mTaskIdentifier\npublic java.lang.String getServiceName()\nclass EventState extends java.lang.Object implements []\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
@Deprecated
private void __metadata() {}
diff --git a/src/com/android/ondevicepersonalization/services/data/events/EventsDao.java b/src/com/android/ondevicepersonalization/services/data/events/EventsDao.java
index 99c1ec4..ee9a6e8 100644
--- a/src/com/android/ondevicepersonalization/services/data/events/EventsDao.java
+++ b/src/com/android/ondevicepersonalization/services/data/events/EventsDao.java
@@ -17,6 +17,7 @@
package com.android.ondevicepersonalization.services.data.events;
import android.annotation.NonNull;
+import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
@@ -25,6 +26,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.ondevicepersonalization.internal.util.LoggerFactory;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import java.util.ArrayList;
@@ -199,11 +201,11 @@
*
* @return eventState if found, null otherwise
*/
- public EventState getEventState(String taskIdentifier, String packageName) {
+ public EventState getEventState(String taskIdentifier, ComponentName service) {
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String selection = EventStateContract.EventStateEntry.TASK_IDENTIFIER + " = ? AND "
+ EventStateContract.EventStateEntry.SERVICE_NAME + " = ?";
- String[] selectionArgs = {taskIdentifier, packageName};
+ String[] selectionArgs = {taskIdentifier, DbUtils.toTableValue(service)};
String[] projection = {EventStateContract.EventStateEntry.TOKEN};
try (Cursor cursor = db.query(
EventStateContract.EventStateEntry.TABLE_NAME,
@@ -220,7 +222,7 @@
return new EventState.Builder()
.setToken(token)
- .setServiceName(packageName)
+ .setService(service)
.setTaskIdentifier(taskIdentifier)
.build();
}
@@ -234,13 +236,14 @@
* Queries the events and queries table to return all new rows from given ids for the given
* package
*
- * @param serviceName Name of the service to read rows for
+ * @param service Name of the service to read rows for
* @param fromEventId EventId to find all new rows from
* @param fromQueryId QueryId to find all new rows from
* @return List of JoinedEvents.
*/
- public List<JoinedEvent> readAllNewRowsForPackage(String serviceName,
+ public List<JoinedEvent> readAllNewRowsForPackage(ComponentName service,
long fromEventId, long fromQueryId) {
+ String serviceName = DbUtils.toTableValue(service);
// Query on the joined query & event table
String joinedSelection = EventsContract.EventsEntry.EVENT_ID + " > ?"
+ " AND " + EventsContract.EventsEntry.TABLE_NAME + "."
@@ -259,7 +262,7 @@
.setQueryId(query.getQueryId())
.setQueryData(query.getQueryData())
.setQueryTimeMillis(query.getTimeMillis())
- .setServiceName(query.getServiceName())
+ .setService(query.getService())
.build());
}
return joinedEventList;
@@ -288,7 +291,7 @@
.setQueryId(query.getQueryId())
.setQueryData(query.getQueryData())
.setQueryTimeMillis(query.getTimeMillis())
- .setServiceName(query.getServiceName())
+ .setService(query.getService())
.build());
}
return joinedEventList;
@@ -321,7 +324,7 @@
.setQueryId(queryId)
.setQueryData(queryData)
.setTimeMillis(timeMillis)
- .setServiceName(serviceName)
+ .setService(DbUtils.fromTableValue(serviceName))
.build()
);
}
@@ -389,7 +392,7 @@
.setQueryId(queryId)
.setQueryData(queryData)
.setQueryTimeMillis(queryTimeMillis)
- .setServiceName(serviceName)
+ .setService(DbUtils.fromTableValue(serviceName))
.build()
);
}
@@ -405,15 +408,15 @@
*
* @return true if the delete executed successfully, false otherwise.
*/
- public boolean deleteEventState(String packageName) {
+ public boolean deleteEventState(ComponentName service) {
SQLiteDatabase db = mDbHelper.getWritableDatabase();
try {
String selection = EventStateContract.EventStateEntry.SERVICE_NAME + " = ?";
- String[] selectionArgs = {packageName};
+ String[] selectionArgs = {DbUtils.toTableValue(service)};
db.delete(EventStateContract.EventStateEntry.TABLE_NAME, selection,
selectionArgs);
} catch (Exception e) {
- sLogger.e(e, TAG + ": Failed to delete eventState for: " + packageName);
+ sLogger.e(e, TAG + ": Failed to delete eventState for: " + service.toString());
return false;
}
return true;
@@ -459,12 +462,12 @@
* @return List of Query in the query table.
*/
public List<Query> readAllQueries(long startTimeMillis, long endTimeMillis,
- String packageName) {
+ ComponentName service) {
String selection = QueriesContract.QueriesEntry.TIME_MILLIS + " > ?"
+ " AND " + QueriesContract.QueriesEntry.TIME_MILLIS + " < ?"
+ " AND " + QueriesContract.QueriesEntry.SERVICE_NAME + " = ?";
String[] selectionArgs = {String.valueOf(startTimeMillis), String.valueOf(
- endTimeMillis), packageName};
+ endTimeMillis), DbUtils.toTableValue(service)};
return readQueryRows(selection, selectionArgs);
}
@@ -474,7 +477,7 @@
* @return List of ids in the event table.
*/
public List<Long> readAllEventIds(long startTimeMillis, long endTimeMillis,
- String packageName) {
+ ComponentName service) {
List<Long> idList = new ArrayList<>();
try {
SQLiteDatabase db = mDbHelper.getReadableDatabase();
@@ -483,7 +486,7 @@
+ " AND " + EventsContract.EventsEntry.TIME_MILLIS + " < ?"
+ " AND " + EventsContract.EventsEntry.SERVICE_NAME + " = ?";
String[] selectionArgs = {String.valueOf(startTimeMillis), String.valueOf(
- endTimeMillis), packageName};
+ endTimeMillis), DbUtils.toTableValue(service)};
String orderBy = EventsContract.EventsEntry.EVENT_ID;
try (Cursor cursor = db.query(
EventsContract.EventsEntry.TABLE_NAME,
@@ -514,14 +517,14 @@
*
* @return List of ids in the event table.
*/
- public List<Long> readAllEventIdsForQuery(long queryId, String packageName) {
+ public List<Long> readAllEventIdsForQuery(long queryId, ComponentName service) {
List<Long> idList = new ArrayList<>();
try {
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String[] projection = {EventsContract.EventsEntry.EVENT_ID};
String selection = EventsContract.EventsEntry.QUERY_ID + " = ?"
+ " AND " + EventsContract.EventsEntry.SERVICE_NAME + " = ?";
- String[] selectionArgs = {String.valueOf(queryId), packageName};
+ String[] selectionArgs = {String.valueOf(queryId), DbUtils.toTableValue(service)};
String orderBy = EventsContract.EventsEntry.EVENT_ID;
try (Cursor cursor = db.query(
EventsContract.EventsEntry.TABLE_NAME,
@@ -551,12 +554,12 @@
*
* @return Query object for the single row requested
*/
- public Query readSingleQueryRow(long queryId, String packageName) {
+ public Query readSingleQueryRow(long queryId, ComponentName service) {
try {
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String selection = QueriesContract.QueriesEntry.QUERY_ID + " = ?"
+ " AND " + QueriesContract.QueriesEntry.SERVICE_NAME + " = ?";
- String[] selectionArgs = {String.valueOf(queryId), packageName};
+ String[] selectionArgs = {String.valueOf(queryId), DbUtils.toTableValue(service)};
try (Cursor cursor = db.query(
QueriesContract.QueriesEntry.TABLE_NAME,
/* projection= */ null,
@@ -584,7 +587,7 @@
.setQueryId(id)
.setQueryData(queryData)
.setTimeMillis(timeMillis)
- .setServiceName(serviceName)
+ .setService(service)
.build();
}
} catch (SQLiteException e) {
@@ -598,11 +601,11 @@
*
* @return JoinedEvent representing the event joined with its query
*/
- public JoinedEvent readSingleJoinedTableRow(long eventId, String packageName) {
+ public JoinedEvent readSingleJoinedTableRow(long eventId, ComponentName service) {
String selection = EventsContract.EventsEntry.EVENT_ID + " = ?"
+ " AND " + EventsContract.EventsEntry.TABLE_NAME + "."
+ EventsContract.EventsEntry.SERVICE_NAME + " = ?";
- String[] selectionArgs = {String.valueOf(eventId), packageName};
+ String[] selectionArgs = {String.valueOf(eventId), DbUtils.toTableValue(service)};
List<JoinedEvent> joinedEventList = readJoinedTableRows(selection, selectionArgs);
if (joinedEventList.size() < 1) {
sLogger.d(TAG + ": Failed to find requested id: " + eventId);
@@ -618,13 +621,13 @@
* @return List of JoinedEvents representing the event joined with its query
*/
public List<JoinedEvent> readJoinedTableRows(long startTimeMillis, long endTimeMillis,
- String packageName) {
+ ComponentName service) {
String selection = JOINED_EVENT_TIME_MILLIS + " > ?"
+ " AND " + JOINED_EVENT_TIME_MILLIS + " < ?"
+ " AND " + EventsContract.EventsEntry.TABLE_NAME + "."
+ EventsContract.EventsEntry.SERVICE_NAME + " = ?";
String[] selectionArgs = {String.valueOf(startTimeMillis), String.valueOf(
- endTimeMillis), packageName};
+ endTimeMillis), DbUtils.toTableValue(service)};
return readJoinedTableRows(selection, selectionArgs);
}
}
diff --git a/src/com/android/ondevicepersonalization/services/data/events/JoinedEvent.java b/src/com/android/ondevicepersonalization/services/data/events/JoinedEvent.java
index e5d74e5..843f865 100644
--- a/src/com/android/ondevicepersonalization/services/data/events/JoinedEvent.java
+++ b/src/com/android/ondevicepersonalization/services/data/events/JoinedEvent.java
@@ -18,9 +18,11 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.ComponentName;
import com.android.ondevicepersonalization.internal.util.AnnotationValidations;
import com.android.ondevicepersonalization.internal.util.DataClass;
+import com.android.ondevicepersonalization.services.data.DbUtils;
/**
* JoinedRow object representing a single row in the joined Events and queries table
@@ -41,7 +43,7 @@
/** Name of the service that owns this event */
@NonNull
- private final String mServiceName;
+ private final ComponentName mService;
/** The service assigned type of the event. */
private final int mType;
@@ -60,6 +62,11 @@
@Nullable
private final byte[] mQueryData;
+ @NonNull
+ public String getServiceName() {
+ return DbUtils.toTableValue(mService);
+ }
+
// Code below generated by codegen v1.0.23.
@@ -80,7 +87,7 @@
long eventId,
long queryId,
int rowIndex,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
int type,
long eventTimeMillis,
@Nullable byte[] eventData,
@@ -89,9 +96,9 @@
this.mEventId = eventId;
this.mQueryId = queryId;
this.mRowIndex = rowIndex;
- this.mServiceName = serviceName;
+ this.mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
this.mType = type;
this.mEventTimeMillis = eventTimeMillis;
this.mEventData = eventData;
@@ -129,8 +136,8 @@
* Name of the service that owns this event
*/
@DataClass.Generated.Member
- public @NonNull String getServiceName() {
- return mServiceName;
+ public @NonNull ComponentName getService() {
+ return mService;
}
/**
@@ -189,7 +196,7 @@
&& mEventId == that.mEventId
&& mQueryId == that.mQueryId
&& mRowIndex == that.mRowIndex
- && java.util.Objects.equals(mServiceName, that.mServiceName)
+ && java.util.Objects.equals(mService, that.mService)
&& mType == that.mType
&& mEventTimeMillis == that.mEventTimeMillis
&& java.util.Arrays.equals(mEventData, that.mEventData)
@@ -207,7 +214,7 @@
_hash = 31 * _hash + Long.hashCode(mEventId);
_hash = 31 * _hash + Long.hashCode(mQueryId);
_hash = 31 * _hash + mRowIndex;
- _hash = 31 * _hash + java.util.Objects.hashCode(mServiceName);
+ _hash = 31 * _hash + java.util.Objects.hashCode(mService);
_hash = 31 * _hash + mType;
_hash = 31 * _hash + Long.hashCode(mEventTimeMillis);
_hash = 31 * _hash + java.util.Arrays.hashCode(mEventData);
@@ -226,7 +233,7 @@
private long mEventId;
private long mQueryId;
private int mRowIndex;
- private @NonNull String mServiceName;
+ private @NonNull ComponentName mService;
private int mType;
private long mEventTimeMillis;
private @Nullable byte[] mEventData;
@@ -247,7 +254,7 @@
* The id of the query.
* @param rowIndex
* Index of the associated entry in the request log for this event.
- * @param serviceName
+ * @param service
* Name of the service that owns this event
* @param type
* The service assigned type of the event.
@@ -264,7 +271,7 @@
long eventId,
long queryId,
int rowIndex,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
int type,
long eventTimeMillis,
@Nullable byte[] eventData,
@@ -273,9 +280,9 @@
mEventId = eventId;
mQueryId = queryId;
mRowIndex = rowIndex;
- mServiceName = serviceName;
+ mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
mType = type;
mEventTimeMillis = eventTimeMillis;
mEventData = eventData;
@@ -320,10 +327,10 @@
* Name of the service that owns this event
*/
@DataClass.Generated.Member
- public @NonNull Builder setServiceName(@NonNull String value) {
+ public @NonNull Builder setService(@NonNull ComponentName value) {
checkNotUsed();
mBuilderFieldsSet |= 0x8;
- mServiceName = value;
+ mService = value;
return this;
}
@@ -391,7 +398,7 @@
mEventId,
mQueryId,
mRowIndex,
- mServiceName,
+ mService,
mType,
mEventTimeMillis,
mEventData,
@@ -409,10 +416,10 @@
}
@DataClass.Generated(
- time = 1706637252089L,
+ time = 1708722682206L,
codegenVersion = "1.0.23",
sourceFile = "packages/modules/OnDevicePersonalization/src/com/android/ondevicepersonalization/services/data/events/JoinedEvent.java",
- inputSignatures = "private final long mEventId\nprivate final long mQueryId\nprivate final int mRowIndex\nprivate final @android.annotation.NonNull java.lang.String mServiceName\nprivate final int mType\nprivate final long mEventTimeMillis\nprivate final @android.annotation.Nullable byte[] mEventData\nprivate final long mQueryTimeMillis\nprivate final @android.annotation.Nullable byte[] mQueryData\nclass JoinedEvent extends java.lang.Object implements []\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
+ inputSignatures = "private final long mEventId\nprivate final long mQueryId\nprivate final int mRowIndex\nprivate final @android.annotation.NonNull android.content.ComponentName mService\nprivate final int mType\nprivate final long mEventTimeMillis\nprivate final @android.annotation.Nullable byte[] mEventData\nprivate final long mQueryTimeMillis\nprivate final @android.annotation.Nullable byte[] mQueryData\npublic @android.annotation.NonNull java.lang.String getServiceName()\nclass JoinedEvent extends java.lang.Object implements []\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
@Deprecated
private void __metadata() {}
diff --git a/src/com/android/ondevicepersonalization/services/data/events/Query.java b/src/com/android/ondevicepersonalization/services/data/events/Query.java
index 5d19286..c58e16c 100644
--- a/src/com/android/ondevicepersonalization/services/data/events/Query.java
+++ b/src/com/android/ondevicepersonalization/services/data/events/Query.java
@@ -18,9 +18,11 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.ComponentName;
import com.android.ondevicepersonalization.internal.util.AnnotationValidations;
import com.android.ondevicepersonalization.internal.util.DataClass;
+import com.android.ondevicepersonalization.services.data.DbUtils;
/**
* Query object for the Query table
@@ -38,12 +40,17 @@
/** Name of the service that handled the request */
@NonNull
- private final String mServiceName;
+ private final ComponentName mService;
/** Blob representing the query. */
@NonNull
private final byte[] mQueryData;
+ /** The name of the service */
+ public String getServiceName() {
+ return DbUtils.toTableValue(mService);
+ }
+
// Code below generated by codegen v1.0.23.
@@ -63,13 +70,13 @@
/* package-private */ Query(
long queryId,
long timeMillis,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
@NonNull byte[] queryData) {
this.mQueryId = queryId;
this.mTimeMillis = timeMillis;
- this.mServiceName = serviceName;
+ this.mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
this.mQueryData = queryData;
AnnotationValidations.validate(
NonNull.class, null, mQueryData);
@@ -97,8 +104,8 @@
* Name of the service that handled the request
*/
@DataClass.Generated.Member
- public @NonNull String getServiceName() {
- return mServiceName;
+ public @NonNull ComponentName getService() {
+ return mService;
}
/**
@@ -124,7 +131,7 @@
return true
&& mQueryId == that.mQueryId
&& mTimeMillis == that.mTimeMillis
- && java.util.Objects.equals(mServiceName, that.mServiceName)
+ && java.util.Objects.equals(mService, that.mService)
&& java.util.Arrays.equals(mQueryData, that.mQueryData);
}
@@ -137,7 +144,7 @@
int _hash = 1;
_hash = 31 * _hash + Long.hashCode(mQueryId);
_hash = 31 * _hash + Long.hashCode(mTimeMillis);
- _hash = 31 * _hash + java.util.Objects.hashCode(mServiceName);
+ _hash = 31 * _hash + java.util.Objects.hashCode(mService);
_hash = 31 * _hash + java.util.Arrays.hashCode(mQueryData);
return _hash;
}
@@ -151,7 +158,7 @@
private long mQueryId;
private long mTimeMillis;
- private @NonNull String mServiceName;
+ private @NonNull ComponentName mService;
private @NonNull byte[] mQueryData;
private long mBuilderFieldsSet = 0L;
@@ -166,7 +173,7 @@
* The id of the query.
* @param timeMillis
* Time of the query in milliseconds.
- * @param serviceName
+ * @param service
* Name of the service that handled the request
* @param queryData
* Blob representing the query.
@@ -174,13 +181,13 @@
public Builder(
long queryId,
long timeMillis,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
@NonNull byte[] queryData) {
mQueryId = queryId;
mTimeMillis = timeMillis;
- mServiceName = serviceName;
+ mService = service;
AnnotationValidations.validate(
- NonNull.class, null, mServiceName);
+ NonNull.class, null, mService);
mQueryData = queryData;
AnnotationValidations.validate(
NonNull.class, null, mQueryData);
@@ -212,10 +219,10 @@
* Name of the service that handled the request
*/
@DataClass.Generated.Member
- public @NonNull Builder setServiceName(@NonNull String value) {
+ public @NonNull Builder setService(@NonNull ComponentName value) {
checkNotUsed();
mBuilderFieldsSet |= 0x4;
- mServiceName = value;
+ mService = value;
return this;
}
@@ -238,7 +245,7 @@
Query o = new Query(
mQueryId,
mTimeMillis,
- mServiceName,
+ mService,
mQueryData);
return o;
}
@@ -252,10 +259,10 @@
}
@DataClass.Generated(
- time = 1706637243750L,
+ time = 1708721575103L,
codegenVersion = "1.0.23",
sourceFile = "packages/modules/OnDevicePersonalization/src/com/android/ondevicepersonalization/services/data/events/Query.java",
- inputSignatures = "private final long mQueryId\nprivate final long mTimeMillis\nprivate final @android.annotation.NonNull java.lang.String mServiceName\nprivate final @android.annotation.NonNull byte[] mQueryData\nclass Query extends java.lang.Object implements []\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
+ inputSignatures = "private final long mQueryId\nprivate final long mTimeMillis\nprivate final @android.annotation.NonNull android.content.ComponentName mService\nprivate final @android.annotation.NonNull byte[] mQueryData\npublic java.lang.String getServiceName()\nclass Query extends java.lang.Object implements []\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)")
@Deprecated
private void __metadata() {}
diff --git a/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationLocalDataDao.java b/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationLocalDataDao.java
index 1a26e0a..ad80adc 100644
--- a/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationLocalDataDao.java
+++ b/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationLocalDataDao.java
@@ -28,6 +28,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.ondevicepersonalization.internal.util.LoggerFactory;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import java.io.File;
diff --git a/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDao.java b/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDao.java
index b76a224..918cdf0 100644
--- a/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDao.java
+++ b/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDao.java
@@ -26,6 +26,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.ondevicepersonalization.internal.util.LoggerFactory;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import java.io.File;
diff --git a/src/com/android/ondevicepersonalization/services/display/WebViewFlow.java b/src/com/android/ondevicepersonalization/services/display/WebViewFlow.java
index 790106c..13e06e1 100644
--- a/src/com/android/ondevicepersonalization/services/display/WebViewFlow.java
+++ b/src/com/android/ondevicepersonalization/services/display/WebViewFlow.java
@@ -242,7 +242,7 @@
Event event = new Event.Builder()
.setType(eventData.getType())
.setQueryId(mQueryId)
- .setServiceName(mService.getPackageName())
+ .setService(mService)
.setTimeMillis(mInjector.getClock().currentTimeMillis())
.setRowIndex(eventData.getRowIndex())
.setEventData(data)
diff --git a/src/com/android/ondevicepersonalization/services/federatedcompute/ContextData.java b/src/com/android/ondevicepersonalization/services/federatedcompute/ContextData.java
index 2ef4895..7b97128 100644
--- a/src/com/android/ondevicepersonalization/services/federatedcompute/ContextData.java
+++ b/src/com/android/ondevicepersonalization/services/federatedcompute/ContextData.java
@@ -17,7 +17,6 @@
package com.android.ondevicepersonalization.services.federatedcompute;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -34,13 +33,9 @@
@NonNull
String mPackageName;
- @Nullable
+ @NonNull
String mClassName;
- public ContextData(@NonNull String packageName) {
- mPackageName = packageName;
- }
-
public ContextData(@NonNull String packageName, @NonNull String className) {
this.mPackageName = packageName;
this.mClassName = className;
@@ -73,7 +68,7 @@
return mPackageName;
}
- @Nullable
+ @NonNull
public String getClassName() {
return mClassName;
}
diff --git a/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImpl.java b/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImpl.java
index 773fb56..2e77396 100644
--- a/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImpl.java
+++ b/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImpl.java
@@ -154,7 +154,7 @@
public void onResult(Object result) {
mInjector.getEventsDao(mApplicationContext).updateOrInsertEventState(
new EventState.Builder()
- .setServiceName(mCallingService.getPackageName())
+ .setService(mCallingService)
.setTaskIdentifier(trainingOptions.getPopulationName())
.setToken(new byte[]{})
.build());
@@ -177,7 +177,7 @@
public void cancel(String populationName,
IFederatedComputeCallback callback) {
EventState eventState = mInjector.getEventsDao(mApplicationContext).getEventState(
- populationName, mCallingService.getPackageName());
+ populationName, mCallingService);
if (eventState == null) {
sLogger.d("No population registered for package: " + mCallingService.getPackageName());
sendSuccess(callback);
diff --git a/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreService.java b/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreService.java
index 72ff488..dc4b913 100644
--- a/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreService.java
+++ b/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreService.java
@@ -111,7 +111,8 @@
// Cancel job if on longer valid. This is written to the table during scheduling
// via {@link FederatedComputeServiceImpl} and deleted either during cancel or
// during maintenance for uninstalled packages.
- EventState eventStatePopulation = eventDao.getEventState(populationName, packageName);
+ ComponentName owner = ComponentName.createRelative(packageName, ownerClassName);
+ EventState eventStatePopulation = eventDao.getEventState(populationName, owner);
if (eventStatePopulation == null) {
sLogger.w("Job was either cancelled or package was uninstalled");
// Cancel job.
@@ -123,7 +124,7 @@
return;
}
FCManager.cancel(
- ComponentName.createRelative(packageName, ownerClassName),
+ owner,
populationName,
OnDevicePersonalizationExecutors.getBackgroundExecutor(),
new OutcomeReceiver<Object, Exception>() {
@@ -146,7 +147,7 @@
// Get resumptionToken
EventState eventState =
eventDao.getEventState(
- getTaskIdentifier(populationName, taskName), packageName);
+ getTaskIdentifier(populationName, taskName), owner);
byte[] resumptionToken = null;
if (eventState != null) {
resumptionToken = eventState.getToken();
diff --git a/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingService.java b/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingService.java
index af4a072..df59d8c 100644
--- a/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingService.java
+++ b/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingService.java
@@ -18,6 +18,7 @@
import static android.federatedcompute.common.ClientConstants.STATUS_SUCCESS;
+import android.content.ComponentName;
import android.federatedcompute.ResultHandlingService;
import android.federatedcompute.common.ClientConstants;
import android.federatedcompute.common.ExampleConsumption;
@@ -49,7 +50,8 @@
ContextData.fromByteArray(
Objects.requireNonNull(
params.getByteArray(ClientConstants.EXTRA_CONTEXT_DATA)));
- String packageName = contextData.getPackageName();
+ ComponentName service = ComponentName.createRelative(
+ contextData.getPackageName(), contextData.getClassName());
String populationName =
Objects.requireNonNull(params.getString(ClientConstants.EXTRA_POPULATION_NAME));
String taskName =
@@ -71,7 +73,7 @@
Futures.submit(
() ->
processExampleConsumptions(
- consumptionList, populationName, taskName, packageName),
+ consumptionList, populationName, taskName, service),
OnDevicePersonalizationExecutors.getBackgroundExecutor());
Futures.addCallback(
result,
@@ -103,7 +105,7 @@
List<ExampleConsumption> exampleConsumptions,
String populationName,
String taskName,
- String packageName) {
+ ComponentName service) {
List<EventState> eventStates = new ArrayList<>();
for (ExampleConsumption consumption : exampleConsumptions) {
String taskIdentifier =
@@ -112,7 +114,7 @@
if (resumptionToken != null) {
eventStates.add(
new EventState.Builder()
- .setServiceName(packageName)
+ .setService(service)
.setTaskIdentifier(taskIdentifier)
.setToken(resumptionToken)
.build());
diff --git a/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobService.java b/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobService.java
index ec44927..3b34fa4 100644
--- a/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobService.java
+++ b/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobService.java
@@ -36,9 +36,9 @@
import com.android.ondevicepersonalization.internal.util.LoggerFactory;
import com.android.ondevicepersonalization.services.FlagsFactory;
import com.android.ondevicepersonalization.services.OnDevicePersonalizationExecutors;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.events.EventsDao;
import com.android.ondevicepersonalization.services.data.user.UserPrivacyStatus;
-import com.android.ondevicepersonalization.services.data.vendor.DbUtils;
import com.android.ondevicepersonalization.services.data.vendor.FileUtils;
import com.android.ondevicepersonalization.services.data.vendor.OnDevicePersonalizationLocalDataDao;
import com.android.ondevicepersonalization.services.data.vendor.OnDevicePersonalizationVendorDataDao;
@@ -151,7 +151,7 @@
ComponentName service = DbUtils.fromTableValue(serviceNameStr);
String certDigest = entry.getValue();
OnDevicePersonalizationVendorDataDao.deleteVendorData(context, service, certDigest);
- eventsDao.deleteEventState(service.getPackageName());
+ eventsDao.deleteEventState(service);
}
// Cleanup event and queries table.
diff --git a/src/com/android/ondevicepersonalization/services/request/AppRequestFlow.java b/src/com/android/ondevicepersonalization/services/request/AppRequestFlow.java
index 0e0e3a9..29aff7a 100644
--- a/src/com/android/ondevicepersonalization/services/request/AppRequestFlow.java
+++ b/src/com/android/ondevicepersonalization/services/request/AppRequestFlow.java
@@ -334,7 +334,7 @@
sLogger.d(TAG + ": logQuery() started.");
return LogUtils.writeLogRecords(
mContext,
- mService.getPackageName(),
+ mService,
result.getRequestLogRecord(),
result.getEventLogRecords());
}
diff --git a/src/com/android/ondevicepersonalization/services/util/LogUtils.java b/src/com/android/ondevicepersonalization/services/util/LogUtils.java
index 8ef1c80..1d473f1 100644
--- a/src/com/android/ondevicepersonalization/services/util/LogUtils.java
+++ b/src/com/android/ondevicepersonalization/services/util/LogUtils.java
@@ -20,10 +20,12 @@
import android.adservices.ondevicepersonalization.RequestLogRecord;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import com.android.ondevicepersonalization.internal.util.LoggerFactory;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.events.Event;
import com.android.ondevicepersonalization.services.data.events.EventsDao;
import com.android.ondevicepersonalization.services.data.events.Query;
@@ -42,10 +44,11 @@
/** Writes the provided records to the REQUESTS and EVENTS tables. */
public static ListenableFuture<Long> writeLogRecords(
@NonNull Context context,
- @NonNull String serviceName,
+ @NonNull ComponentName service,
@Nullable RequestLogRecord requestLogRecord,
@NonNull List<EventLogRecord> eventLogRecords) {
sLogger.d(TAG + ": writeLogRecords() started.");
+ String serviceName = DbUtils.toTableValue(service);
EventsDao eventsDao = EventsDao.getInstance(context);
// Insert query
long queryId = -1;
@@ -54,7 +57,7 @@
byte[] queryData = OnDevicePersonalizationFlatbufferUtils.createQueryData(
serviceName, null, rows);
Query query = new Query.Builder()
- .setServiceName(serviceName)
+ .setService(service)
.setQueryData(queryData)
.setTimeMillis(System.currentTimeMillis())
.build();
@@ -74,8 +77,7 @@
continue;
}
// Make sure query exists for package in QUERY table
- Query queryRow = eventsDao.readSingleQueryRow(parent.getRequestId(),
- serviceName);
+ Query queryRow = eventsDao.readSingleQueryRow(parent.getRequestId(), service);
if (queryRow == null || eventLogRecord.getRowIndex()
>= OnDevicePersonalizationFlatbufferUtils.getContentValuesLengthFromQueryData(
queryRow.getQueryData())) {
@@ -86,7 +88,7 @@
eventLogRecord.getData()))
.setQueryId(parent.getRequestId())
.setRowIndex(eventLogRecord.getRowIndex())
- .setServiceName(serviceName)
+ .setService(service)
.setTimeMillis(System.currentTimeMillis())
.setType(eventLogRecord.getType())
.build();
diff --git a/src/com/android/ondevicepersonalization/services/webtrigger/WebTriggerFlow.java b/src/com/android/ondevicepersonalization/services/webtrigger/WebTriggerFlow.java
index aaac7be..88f24ed 100644
--- a/src/com/android/ondevicepersonalization/services/webtrigger/WebTriggerFlow.java
+++ b/src/com/android/ondevicepersonalization/services/webtrigger/WebTriggerFlow.java
@@ -262,7 +262,7 @@
var unused = FluentFuture.from(
LogUtils.writeLogRecords(
mContext,
- wtparams.getIsolatedService().getPackageName(),
+ wtparams.getIsolatedService(),
result.getRequestLogRecord(),
result.getEventLogRecords()))
.transform(v -> null, MoreExecutors.newDirectExecutorService());
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImplTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImplTest.java
index 521fa5d..4fdf18c 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImplTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/DataAccessServiceImplTest.java
@@ -79,6 +79,7 @@
private static final double DELTA = 0.001;
private static final byte[] RESPONSE_BYTES = {'A', 'B'};
private static final int EVENT_TYPE_B2D = 1;
+ private static final String SERVICE_CLASS = "TestClass";
private final Context mApplicationContext = ApplicationProvider.getApplicationContext();
private long mTimeMillis = 1000;
private EventUrlPayload mEventUrlPayload;
@@ -559,25 +560,25 @@
Query query1 = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mService)
.setQueryData(queryDataBytes)
.build();
long queryId1 = mEventsDao.insertQuery(query1);
Query query2 = new Query.Builder()
.setTimeMillis(10L)
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mService)
.setQueryData(queryDataBytes)
.build();
long queryId2 = mEventsDao.insertQuery(query2);
Query query3 = new Query.Builder()
.setTimeMillis(100L)
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mService)
.setQueryData(queryDataBytes)
.build();
long queryId3 = mEventsDao.insertQuery(query3);
Query query4 = new Query.Builder()
.setTimeMillis(100L)
- .setServiceName("packageA")
+ .setService(new ComponentName("packageA", "classA"))
.setQueryData(queryDataBytes)
.build();
mEventsDao.insertQuery(query4);
@@ -589,7 +590,7 @@
Event event1 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData(eventData)
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId1)
.setTimeMillis(2L)
.setRowIndex(0)
@@ -598,7 +599,7 @@
Event event2 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData(eventData)
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId2)
.setTimeMillis(11L)
.setRowIndex(0)
@@ -607,7 +608,7 @@
Event event3 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData(eventData)
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId3)
.setTimeMillis(101L)
.setRowIndex(0)
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventStateTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventStateTest.java
index 2c97780..6194051 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventStateTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventStateTest.java
@@ -20,6 +20,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
+import android.content.ComponentName;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -28,22 +30,22 @@
public class EventStateTest {
@Test
public void testBuilderAndEquals() {
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
String taskIdentifier = "taskIdentifier";
byte[] token = new byte[] {1};
EventState eventState1 = new EventState.Builder()
.setTaskIdentifier(taskIdentifier)
- .setServiceName(servicePackageName)
+ .setService(service)
.setToken(token)
.build();
assertEquals(eventState1.getTaskIdentifier(), taskIdentifier);
- assertEquals(eventState1.getServiceName(), servicePackageName);
+ assertEquals(eventState1.getService(), service);
assertArrayEquals(eventState1.getToken(), token);
EventState eventState2 = new EventState.Builder(
- token, servicePackageName, taskIdentifier)
+ token, service, taskIdentifier)
.build();
assertEquals(eventState1, eventState2);
assertEquals(eventState1.hashCode(), eventState2.hashCode());
@@ -51,12 +53,12 @@
@Test
public void testBuildTwiceThrows() {
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
String taskIdentifier = "taskIdentifier";
byte[] token = new byte[] {1};
EventState.Builder builder = new EventState.Builder()
.setTaskIdentifier(taskIdentifier)
- .setServiceName(servicePackageName)
+ .setService(service)
.setToken(token);
builder.build();
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventTest.java
index d42f5e2..2c3bda6 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventTest.java
@@ -20,6 +20,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
+import android.content.ComponentName;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -31,7 +33,7 @@
@Test
public void testBuilderAndEquals() {
byte[] eventData = "data".getBytes();
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
long queryId = 1;
long timeMillis = 1;
long eventId = 1;
@@ -39,7 +41,7 @@
Event event1 = new Event.Builder()
.setType(EVENT_TYPE)
.setEventData(eventData)
- .setServiceName(servicePackageName)
+ .setService(service)
.setQueryId(queryId)
.setTimeMillis(timeMillis)
.setRowIndex(rowIndex)
@@ -48,14 +50,14 @@
assertEquals(event1.getType(), EVENT_TYPE);
assertArrayEquals(event1.getEventData(), eventData);
- assertEquals(event1.getServiceName(), servicePackageName);
+ assertEquals(event1.getService(), service);
assertEquals(event1.getQueryId(), queryId);
assertEquals(event1.getTimeMillis(), timeMillis);
assertEquals(event1.getRowIndex(), rowIndex);
assertEquals(event1.getEventId(), eventId);
Event event2 = new Event.Builder(
- eventId, queryId, rowIndex, servicePackageName, EVENT_TYPE, timeMillis, eventData)
+ eventId, queryId, rowIndex, service, EVENT_TYPE, timeMillis, eventData)
.build();
assertEquals(event1, event2);
assertEquals(event1.hashCode(), event2.hashCode());
@@ -64,7 +66,7 @@
@Test
public void testBuildTwiceThrows() {
byte[] eventData = "data".getBytes();
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
long queryId = 1;
long timeMillis = 1;
long eventId = 1;
@@ -72,7 +74,7 @@
Event.Builder builder = new Event.Builder()
.setType(EVENT_TYPE)
.setEventData(eventData)
- .setServiceName(servicePackageName)
+ .setService(service)
.setQueryId(queryId)
.setTimeMillis(timeMillis)
.setRowIndex(rowIndex)
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventsDaoTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventsDaoTest.java
index 0d99fc3..c606375 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventsDaoTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/EventsDaoTest.java
@@ -21,6 +21,7 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import android.content.ComponentName;
import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
@@ -42,23 +43,26 @@
private static final int EVENT_TYPE_B2D = 1;
private static final int EVENT_TYPE_CLICK = 2;
private static final String TASK_IDENTIFIER = "taskIdentifier";
+ private static final String SERVICE_CLASS = "TestClass";
private final Context mContext = ApplicationProvider.getApplicationContext();
+ private final ComponentName mService =
+ new ComponentName(mContext.getPackageName(), SERVICE_CLASS);
private final Event mTestEvent = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(1L)
.setTimeMillis(1L)
.setRowIndex(0)
.build();
private final Query mTestQuery = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
private final EventState mEventState = new EventState.Builder()
.setTaskIdentifier(TASK_IDENTIFIER)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setToken(new byte[]{1})
.build();
private EventsDao mDao;
@@ -84,7 +88,7 @@
Event testEvent = new Event.Builder()
.setType(EVENT_TYPE_CLICK)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(1L)
.setTimeMillis(1L)
.setRowIndex(0)
@@ -98,7 +102,7 @@
Event testEvent = new Event.Builder()
.setType(EVENT_TYPE_CLICK)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(1L)
.setTimeMillis(1L)
.setRowIndex(0)
@@ -119,15 +123,15 @@
@Test
public void testInsertAndReadEventState() {
assertTrue(mDao.updateOrInsertEventState(mEventState));
- assertEquals(mEventState, mDao.getEventState(TASK_IDENTIFIER, mContext.getPackageName()));
+ assertEquals(mEventState, mDao.getEventState(TASK_IDENTIFIER, mService));
EventState testEventState = new EventState.Builder()
.setTaskIdentifier(TASK_IDENTIFIER)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setToken(new byte[]{100})
.build();
assertTrue(mDao.updateOrInsertEventState(testEventState));
assertEquals(testEventState,
- mDao.getEventState(TASK_IDENTIFIER, mContext.getPackageName()));
+ mDao.getEventState(TASK_IDENTIFIER, mService));
}
@@ -135,7 +139,7 @@
public void testInsertAndReadEventStatesTransaction() {
EventState testEventState = new EventState.Builder()
.setTaskIdentifier(TASK_IDENTIFIER)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setToken(new byte[]{100})
.build();
List<EventState> eventStates = new ArrayList<>();
@@ -143,24 +147,25 @@
eventStates.add(testEventState);
assertTrue(mDao.updateOrInsertEventStatesTransaction(eventStates));
assertEquals(testEventState,
- mDao.getEventState(TASK_IDENTIFIER, mContext.getPackageName()));
+ mDao.getEventState(TASK_IDENTIFIER, mService));
}
@Test
public void testDeleteEventState() {
+ ComponentName serviceA = new ComponentName("packageA", "clsA");
mDao.updateOrInsertEventState(mEventState);
EventState testEventState = new EventState.Builder()
.setTaskIdentifier(TASK_IDENTIFIER)
- .setServiceName("packageA")
+ .setService(serviceA)
.setToken(new byte[]{100})
.build();
mDao.updateOrInsertEventState(testEventState);
- mDao.deleteEventState(mContext.getPackageName());
+ mDao.deleteEventState(mService);
assertEquals(testEventState,
- mDao.getEventState(TASK_IDENTIFIER, "packageA"));
- assertNull(mDao.getEventState(TASK_IDENTIFIER, mContext.getPackageName()));
+ mDao.getEventState(TASK_IDENTIFIER, serviceA));
+ assertNull(mDao.getEventState(TASK_IDENTIFIER, mService));
- mDao.deleteEventState("packageA");
- assertNull(mDao.getEventState(TASK_IDENTIFIER, "packageA"));
+ mDao.deleteEventState(serviceA);
+ assertNull(mDao.getEventState(TASK_IDENTIFIER, serviceA));
}
@Test
@@ -171,7 +176,7 @@
Event testEvent = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId2)
.setTimeMillis(3L)
.setRowIndex(0)
@@ -180,7 +185,7 @@
Query testQuery = new Query.Builder()
.setTimeMillis(5L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId3 = mDao.insertQuery(testQuery);
@@ -213,7 +218,7 @@
@Test
public void testReadAllNewRowsForPackageEmptyTable() {
- List<JoinedEvent> joinedEventList = mDao.readAllNewRowsForPackage(mContext.getPackageName(),
+ List<JoinedEvent> joinedEventList = mDao.readAllNewRowsForPackage(mService,
0, 0);
assertTrue(joinedEventList.isEmpty());
}
@@ -223,10 +228,11 @@
long queryId1 = mDao.insertQuery(mTestQuery);
long eventId1 = mDao.insertEvent(mTestEvent);
long queryId2 = mDao.insertQuery(mTestQuery);
+ ComponentName serviceA = new ComponentName("packageA", "clsA");
Query packageAQuery = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName("packageA")
+ .setService(serviceA)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId3 = mDao.insertQuery(packageAQuery);
@@ -234,14 +240,14 @@
Event packageAEvent = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName("packageA")
+ .setService(serviceA)
.setQueryId(queryId3)
.setTimeMillis(1L)
.setRowIndex(0)
.build();
long eventId2 = mDao.insertEvent(packageAEvent);
- List<JoinedEvent> joinedEventList = mDao.readAllNewRowsForPackage(mContext.getPackageName(),
+ List<JoinedEvent> joinedEventList = mDao.readAllNewRowsForPackage(mService,
0, 0);
assertEquals(3, joinedEventList.size());
assertEquals(createExpectedJoinedEvent(mTestEvent, mTestQuery, eventId1, queryId1),
@@ -251,11 +257,11 @@
assertEquals(createExpectedJoinedEvent(null, mTestQuery, 0, queryId2),
joinedEventList.get(2));
- joinedEventList = mDao.readAllNewRowsForPackage(mContext.getPackageName(), eventId1,
+ joinedEventList = mDao.readAllNewRowsForPackage(mService, eventId1,
queryId2);
assertTrue(joinedEventList.isEmpty());
- joinedEventList = mDao.readAllNewRowsForPackage(mContext.getPackageName(), eventId1,
+ joinedEventList = mDao.readAllNewRowsForPackage(mService, eventId1,
queryId1);
assertEquals(1, joinedEventList.size());
assertEquals(createExpectedJoinedEvent(null, mTestQuery, 0, queryId2),
@@ -267,10 +273,11 @@
long queryId1 = mDao.insertQuery(mTestQuery);
long eventId1 = mDao.insertEvent(mTestEvent);
long queryId2 = mDao.insertQuery(mTestQuery);
+ ComponentName serviceA = new ComponentName("packageA", "clsA");
Query packageAQuery = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName("packageA")
+ .setService(serviceA)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId3 = mDao.insertQuery(packageAQuery);
@@ -278,7 +285,7 @@
Event packageAEvent = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName("packageA")
+ .setService(serviceA)
.setQueryId(queryId3)
.setTimeMillis(1L)
.setRowIndex(0)
@@ -309,45 +316,46 @@
@Test
public void testReadAllQueries() {
+ ComponentName otherService = new ComponentName("package", "cls");
Query query1 = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId1 = mDao.insertQuery(query1);
Query query2 = new Query.Builder()
.setTimeMillis(10L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId2 = mDao.insertQuery(query2);
Query query3 = new Query.Builder()
.setTimeMillis(100L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId3 = mDao.insertQuery(query3);
Query query4 = new Query.Builder()
.setTimeMillis(100L)
- .setServiceName("package")
+ .setService(otherService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId4 = mDao.insertQuery(query4);
- List<Query> result = mDao.readAllQueries(0, 1000, mContext.getPackageName());
+ List<Query> result = mDao.readAllQueries(0, 1000, mService);
assertEquals(3, result.size());
assertEquals(queryId1, (long) result.get(0).getQueryId());
assertEquals(queryId2, (long) result.get(1).getQueryId());
assertEquals(queryId3, (long) result.get(2).getQueryId());
- result = mDao.readAllQueries(0, 1000, "package");
+ result = mDao.readAllQueries(0, 1000, otherService);
assertEquals(1, result.size());
assertEquals(queryId4, (long) result.get(0).getQueryId());
- result = mDao.readAllQueries(500, 1000, mContext.getPackageName());
+ result = mDao.readAllQueries(500, 1000, mService);
assertEquals(0, result.size());
- result = mDao.readAllQueries(5, 1000, mContext.getPackageName());
+ result = mDao.readAllQueries(5, 1000, mService);
assertEquals(2, result.size());
assertEquals(queryId2, (long) result.get(0).getQueryId());
assertEquals(queryId3, (long) result.get(1).getQueryId());
@@ -357,19 +365,19 @@
public void testReadAllEventIds() {
Query query1 = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId1 = mDao.insertQuery(query1);
Query query2 = new Query.Builder()
.setTimeMillis(10L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId2 = mDao.insertQuery(query2);
Query query3 = new Query.Builder()
.setTimeMillis(100L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId3 = mDao.insertQuery(query3);
@@ -377,7 +385,7 @@
Event event1 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId1)
.setTimeMillis(2L)
.setRowIndex(0)
@@ -386,7 +394,7 @@
Event event2 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId2)
.setTimeMillis(11L)
.setRowIndex(0)
@@ -395,26 +403,26 @@
Event event3 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId3)
.setTimeMillis(101L)
.setRowIndex(0)
.build();
long eventId3 = mDao.insertEvent(event3);
- List<Long> result = mDao.readAllEventIds(0, 1000, mContext.getPackageName());
+ List<Long> result = mDao.readAllEventIds(0, 1000, mService);
assertEquals(3, result.size());
assertEquals(eventId1, (long) result.get(0));
assertEquals(eventId2, (long) result.get(1));
assertEquals(eventId3, (long) result.get(2));
- result = mDao.readAllEventIds(0, 1000, "package");
+ result = mDao.readAllEventIds(0, 1000, new ComponentName("pkg", "cls"));
assertEquals(0, result.size());
- result = mDao.readAllEventIds(500, 1000, mContext.getPackageName());
+ result = mDao.readAllEventIds(500, 1000, mService);
assertEquals(0, result.size());
- result = mDao.readAllEventIds(5, 1000, mContext.getPackageName());
+ result = mDao.readAllEventIds(5, 1000, mService);
assertEquals(2, result.size());
assertEquals(eventId2, (long) result.get(0));
assertEquals(eventId3, (long) result.get(1));
@@ -424,13 +432,13 @@
public void testReadEventIdsForRequest() {
Query query1 = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId1 = mDao.insertQuery(query1);
Query query2 = new Query.Builder()
.setTimeMillis(10L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId2 = mDao.insertQuery(query2);
@@ -438,7 +446,7 @@
Event event1 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId1)
.setTimeMillis(2L)
.setRowIndex(0)
@@ -447,7 +455,7 @@
Event event2 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId2)
.setTimeMillis(11L)
.setRowIndex(0)
@@ -456,26 +464,26 @@
Event event3 = new Event.Builder()
.setType(EVENT_TYPE_CLICK)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId2)
.setTimeMillis(101L)
.setRowIndex(0)
.build();
long eventId3 = mDao.insertEvent(event3);
- List<Long> result = mDao.readAllEventIdsForQuery(queryId1, mContext.getPackageName());
+ List<Long> result = mDao.readAllEventIdsForQuery(queryId1, mService);
assertEquals(1, result.size());
assertEquals(eventId1, (long) result.get(0));
- result = mDao.readAllEventIdsForQuery(queryId2, mContext.getPackageName());
+ result = mDao.readAllEventIdsForQuery(queryId2, mService);
assertEquals(2, result.size());
assertEquals(eventId2, (long) result.get(0));
assertEquals(eventId3, (long) result.get(1));
- result = mDao.readAllEventIdsForQuery(1000, mContext.getPackageName());
+ result = mDao.readAllEventIdsForQuery(1000, mService);
assertEquals(0, result.size());
- result = mDao.readAllEventIdsForQuery(queryId1, "package");
+ result = mDao.readAllEventIdsForQuery(queryId1, new ComponentName("pkg", "cls"));
assertEquals(0, result.size());
}
@@ -483,19 +491,19 @@
public void testReadJoinedEvents() {
Query query1 = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId1 = mDao.insertQuery(query1);
Query query2 = new Query.Builder()
.setTimeMillis(10L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId2 = mDao.insertQuery(query2);
Query query3 = new Query.Builder()
.setTimeMillis(100L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId3 = mDao.insertQuery(query3);
@@ -503,7 +511,7 @@
Event event1 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId1)
.setTimeMillis(2L)
.setRowIndex(0)
@@ -512,7 +520,7 @@
Event event2 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId2)
.setTimeMillis(11L)
.setRowIndex(0)
@@ -521,26 +529,26 @@
Event event3 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId3)
.setTimeMillis(101L)
.setRowIndex(0)
.build();
long eventId3 = mDao.insertEvent(event3);
- List<JoinedEvent> result = mDao.readJoinedTableRows(0, 1000, mContext.getPackageName());
+ List<JoinedEvent> result = mDao.readJoinedTableRows(0, 1000, mService);
assertEquals(3, result.size());
assertEquals(createExpectedJoinedEvent(event1, query1, eventId1, queryId1), result.get(0));
assertEquals(createExpectedJoinedEvent(event2, query2, eventId2, queryId2), result.get(1));
assertEquals(createExpectedJoinedEvent(event3, query3, eventId3, queryId3), result.get(2));
- result = mDao.readJoinedTableRows(0, 1000, "package");
+ result = mDao.readJoinedTableRows(0, 1000, new ComponentName("pkg", "cls"));
assertEquals(0, result.size());
- result = mDao.readJoinedTableRows(500, 1000, mContext.getPackageName());
+ result = mDao.readJoinedTableRows(500, 1000, mService);
assertEquals(0, result.size());
- result = mDao.readJoinedTableRows(5, 1000, mContext.getPackageName());
+ result = mDao.readJoinedTableRows(5, 1000, mService);
assertEquals(2, result.size());
assertEquals(createExpectedJoinedEvent(event2, query2, eventId2, queryId2), result.get(0));
assertEquals(createExpectedJoinedEvent(event3, query3, eventId3, queryId3), result.get(1));
@@ -551,13 +559,13 @@
Query query1 = new Query.Builder()
.setQueryId(1)
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
mDao.insertQuery(query1);
- assertEquals(query1, mDao.readSingleQueryRow(1, mContext.getPackageName()));
- assertNull(mDao.readSingleQueryRow(100, mContext.getPackageName()));
- assertNull(mDao.readSingleQueryRow(1, "package"));
+ assertEquals(query1, mDao.readSingleQueryRow(1, mService));
+ assertNull(mDao.readSingleQueryRow(100, mService));
+ assertNull(mDao.readSingleQueryRow(1, new ComponentName("pkg", "cls")));
}
@Test
@@ -565,14 +573,14 @@
mDao.insertQuery(mTestQuery);
mDao.insertEvent(mTestEvent);
assertEquals(createExpectedJoinedEvent(mTestEvent, mTestQuery, 1, 1),
- mDao.readSingleJoinedTableRow(1, mContext.getPackageName()));
- assertNull(mDao.readSingleJoinedTableRow(100, mContext.getPackageName()));
- assertNull(mDao.readSingleJoinedTableRow(1, "package"));
+ mDao.readSingleJoinedTableRow(1, mService));
+ assertNull(mDao.readSingleJoinedTableRow(100, mService));
+ assertNull(mDao.readSingleJoinedTableRow(1, new ComponentName("pkg", "cls")));
}
@Test
public void testReadEventStateNoEventState() {
- assertNull(mDao.getEventState(TASK_IDENTIFIER, mContext.getPackageName()));
+ assertNull(mDao.getEventState(TASK_IDENTIFIER, mService));
}
@@ -599,14 +607,14 @@
long queryId) {
if (event == null) {
return new JoinedEvent.Builder()
- .setServiceName(query.getServiceName())
+ .setService(query.getService())
.setQueryData(query.getQueryData())
.setQueryId(queryId)
.setQueryTimeMillis(query.getTimeMillis())
.build();
}
return new JoinedEvent.Builder()
- .setServiceName(event.getServiceName())
+ .setService(event.getService())
.setQueryId(queryId)
.setEventId(eventId)
.setRowIndex(event.getRowIndex())
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedEventTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedEventTest.java
index 332287b..967a9eb 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedEventTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedEventTest.java
@@ -20,6 +20,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
+import android.content.ComponentName;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -28,7 +30,7 @@
public class JoinedEventTest {
@Test
public void testBuilderAndEquals() {
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
long queryId = 1;
long eventId = 1;
int rowIndex = 1;
@@ -39,7 +41,7 @@
byte[] queryData = "queryData".getBytes();
JoinedEvent joinedEvent1 = new JoinedEvent.Builder()
- .setServiceName(servicePackageName)
+ .setService(service)
.setQueryId(queryId)
.setEventId(eventId)
.setRowIndex(rowIndex)
@@ -58,10 +60,10 @@
assertEquals(joinedEvent1.getQueryTimeMillis(), queryTimeMillis);
assertArrayEquals(joinedEvent1.getEventData(), eventData);
assertArrayEquals(joinedEvent1.getQueryData(), queryData);
- assertEquals(joinedEvent1.getServiceName(), servicePackageName);
+ assertEquals(joinedEvent1.getService(), service);
JoinedEvent joinedEvent2 = new JoinedEvent.Builder(
- eventId, queryId, rowIndex, servicePackageName, type, eventTimeMillis, eventData,
+ eventId, queryId, rowIndex, service, type, eventTimeMillis, eventData,
queryTimeMillis, queryData)
.build();
assertEquals(joinedEvent1, joinedEvent2);
@@ -70,7 +72,7 @@
@Test
public void testBuildTwiceThrows() {
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
long queryId = 1;
long eventId = 1;
int rowIndex = 1;
@@ -81,7 +83,7 @@
byte[] queryData = "queryData".getBytes();
JoinedEvent.Builder builder = new JoinedEvent.Builder()
- .setServiceName(servicePackageName)
+ .setService(service)
.setQueryId(queryId)
.setEventId(eventId)
.setRowIndex(rowIndex)
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedTableDaoTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedTableDaoTest.java
index a3c2903..78b6b4b 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedTableDaoTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/JoinedTableDaoTest.java
@@ -20,12 +20,14 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
+import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import androidx.test.core.app.ApplicationProvider;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import com.android.ondevicepersonalization.services.util.OnDevicePersonalizationFlatbufferUtils;
@@ -41,14 +43,17 @@
@RunWith(JUnit4.class)
public class JoinedTableDaoTest {
+ private static final String SERVICE_CLASS = "TestClass";
private static final int EVENT_TYPE_B2D = 1;
private static final int EVENT_TYPE_CLICK = 2;
private final Context mContext = ApplicationProvider.getApplicationContext();
private EventsDao mDao;
+ private ComponentName mService;
@Before
public void setup() {
mDao = EventsDao.getInstanceForTest(mContext);
+ mService = new ComponentName(mContext.getPackageName(), SERVICE_CLASS);
}
@After
@@ -110,7 +115,7 @@
assertEquals(4, cursor.getCount());
for (int i = 0; i < 4; i++) {
cursor.moveToNext();
- String servicePackageName = cursor.getString(
+ String serviceName = cursor.getString(
cursor.getColumnIndexOrThrow(JoinedTableDao.SERVICE_NAME_COL));
int type = cursor.getInt(cursor.getColumnIndexOrThrow(JoinedTableDao.TYPE_COL));
long eventTimeMillis = cursor.getLong(
@@ -127,8 +132,9 @@
() -> cursor.getColumnIndexOrThrow("random"));
assertThrows(IllegalArgumentException.class,
() -> cursor.getColumnIndexOrThrow("someCol"));
+ String expectedServiceName = DbUtils.toTableValue(mService);
if (i == 0) {
- assertEquals(mContext.getPackageName(), servicePackageName);
+ assertEquals(expectedServiceName, serviceName);
assertEquals(EVENT_TYPE_B2D, type);
assertEquals(1L, eventTimeMillis);
assertEquals(1L, queryTimeMillis);
@@ -137,7 +143,7 @@
assertEquals(0.0, eventCol4, 0.001);
assertEquals(1, queryCol1);
} else if (i == 1) {
- assertEquals(mContext.getPackageName(), servicePackageName);
+ assertEquals(expectedServiceName, serviceName);
assertEquals(EVENT_TYPE_CLICK, type);
assertEquals(2L, eventTimeMillis);
assertEquals(1L, queryTimeMillis);
@@ -146,7 +152,7 @@
assertEquals(2.0, eventCol4, 0.001);
assertEquals(2, queryCol1);
} else if (i == 2) {
- assertEquals(mContext.getPackageName(), servicePackageName);
+ assertEquals(expectedServiceName, serviceName);
assertEquals(0L, type);
assertEquals(0L, eventTimeMillis);
assertEquals(1L, queryTimeMillis);
@@ -155,7 +161,7 @@
assertEquals(0.0, eventCol4, 0.001);
assertEquals(1, queryCol1);
} else if (i == 3) {
- assertEquals(mContext.getPackageName(), servicePackageName);
+ assertEquals(expectedServiceName, serviceName);
assertEquals(0L, type);
assertEquals(0L, eventTimeMillis);
assertEquals(1L, queryTimeMillis);
@@ -178,9 +184,9 @@
rows.add(row);
Query query = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryData(OnDevicePersonalizationFlatbufferUtils.createQueryData(
- mContext.getPackageName(), "AABBCCDD", rows))
+ DbUtils.toTableValue(mService), "AABBCCDD", rows))
.build();
long queryId = mDao.insertQuery(query);
@@ -193,7 +199,7 @@
Event event1 = new Event.Builder()
.setType(EVENT_TYPE_B2D)
.setEventData(OnDevicePersonalizationFlatbufferUtils.createEventData(eventData))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId)
.setTimeMillis(1L)
.setRowIndex(0)
@@ -209,7 +215,7 @@
Event event2 = new Event.Builder()
.setType(EVENT_TYPE_CLICK)
.setEventData(OnDevicePersonalizationFlatbufferUtils.createEventData(eventData2))
- .setServiceName(mContext.getPackageName())
+ .setService(mService)
.setQueryId(queryId)
.setTimeMillis(2L)
.setRowIndex(1)
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/QueryTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/QueryTest.java
index fc649d3..e0142ea 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/QueryTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/events/QueryTest.java
@@ -20,6 +20,8 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
+import android.content.ComponentName;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -30,21 +32,21 @@
public void testBuilderAndEquals() {
long queryId = 1;
byte[] queryData = "data".getBytes();
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
long timeMillis = 1;
Query query1 = new Query.Builder()
.setQueryId(queryId)
.setQueryData(queryData)
- .setServiceName(servicePackageName)
+ .setService(service)
.setTimeMillis(timeMillis)
.build();
assertEquals(query1.getQueryId(), queryId);
assertArrayEquals(query1.getQueryData(), queryData);
- assertEquals(query1.getServiceName(), servicePackageName);
+ assertEquals(query1.getService(), service);
assertEquals(query1.getTimeMillis(), timeMillis);
Query query2 = new Query.Builder(
- queryId, timeMillis, servicePackageName, queryData).build();
+ queryId, timeMillis, service, queryData).build();
assertEquals(query1, query2);
assertEquals(query1.hashCode(), query2.hashCode());
}
@@ -53,12 +55,12 @@
public void testBuildTwiceThrows() {
long queryId = 1;
byte[] queryData = "data".getBytes();
- String servicePackageName = "servicePackageName";
+ ComponentName service = new ComponentName("servicePkg", "cls");
long timeMillis = 1;
Query.Builder builder = new Query.Builder()
.setQueryId(queryId)
.setQueryData(queryData)
- .setServiceName(servicePackageName)
+ .setService(service)
.setTimeMillis(timeMillis);
builder.build();
assertThrows(IllegalStateException.class, () -> builder.build());
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDaoTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDaoTest.java
index d626bd6..c4218ec 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDaoTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/data/vendor/OnDevicePersonalizationVendorDataDaoTest.java
@@ -29,6 +29,7 @@
import androidx.test.core.app.ApplicationProvider;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import org.junit.After;
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/display/OdpWebViewClientTests.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/display/OdpWebViewClientTests.java
index 4a23c63..431575a 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/display/OdpWebViewClientTests.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/display/OdpWebViewClientTests.java
@@ -82,7 +82,7 @@
private EventUrlPayload mTestEventPayload;
private final Query mTestQuery = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName("servicePackageName")
+ .setService(ComponentName.createRelative(mContext.getPackageName(), SERVICE_CLASS))
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
private EventsDao mDao;
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImplTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImplTest.java
index f0d5ac7..16a1c56 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImplTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/FederatedComputeServiceImplTest.java
@@ -63,6 +63,7 @@
@RunWith(JUnit4.class)
public class FederatedComputeServiceImplTest {
private static final String FC_SERVER_URL = "https://google.com";
+ private static final String SERVICE_CLASS = "com.test.TestPersonalizationService";
private final Context mApplicationContext = ApplicationProvider.getApplicationContext();
ArgumentCaptor<OutcomeReceiver<Object, Exception>> mCallbackCapture;
ArgumentCaptor<ScheduleFederatedComputeRequest> mRequestCapture;
@@ -74,12 +75,15 @@
private FederatedComputeServiceImpl mServiceImpl;
private IFederatedComputeService mServiceProxy;
private FederatedComputeManager mMockManager;
+ private ComponentName mIsolatedService;
+
@Rule
public final TestableDeviceConfig.TestableDeviceConfigRule mDeviceConfigRule =
new TestableDeviceConfig.TestableDeviceConfigRule();
@Before
public void setup() throws Exception {
+ mIsolatedService = new ComponentName(mApplicationContext.getPackageName(), SERVICE_CLASS);
mInjector = new TestInjector();
mMockManager = Mockito.mock(FederatedComputeManager.class);
mCallbackCapture = ArgumentCaptor.forClass(OutcomeReceiver.class);
@@ -205,7 +209,7 @@
EventsDao.getInstanceForTest(mApplicationContext)
.updateOrInsertEventState(
new EventState.Builder()
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mIsolatedService)
.setTaskIdentifier("population")
.setToken(new byte[] {})
.build());
@@ -228,7 +232,7 @@
EventsDao.getInstanceForTest(mApplicationContext)
.updateOrInsertEventState(
new EventState.Builder()
- .setServiceName(mApplicationContext.getPackageName())
+ .setService(mIsolatedService)
.setTaskIdentifier("population")
.setToken(new byte[] {})
.build());
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreServiceTests.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreServiceTests.java
index 552138b..27bc0ee 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreServiceTests.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpExampleStoreServiceTests.java
@@ -29,6 +29,7 @@
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -64,10 +65,13 @@
@RunWith(Parameterized.class)
public class OdpExampleStoreServiceTests {
+ private static final String SERVICE_CLASS = "com.test.TestPersonalizationService";
private final Context mContext = ApplicationProvider.getApplicationContext();
@Mock Context mMockContext;
@InjectMocks OdpExampleStoreService mService;
private CountDownLatch mLatch;
+ private ComponentName mIsolatedService;
+
private boolean mIteratorCallbackOnSuccessCalled = false;
private boolean mIteratorCallbackOnFailureCalled = false;
@@ -95,7 +99,7 @@
mQueryCallbackOnSuccessCalled = false;
mQueryCallbackOnFailureCalled = false;
mLatch = new CountDownLatch(1);
-
+ mIsolatedService = new ComponentName(mContext.getPackageName(), SERVICE_CLASS);
PhFlagsTestUtil.setUpDeviceConfigPermissions();
ShellUtils.runShellCommand("settings put global hidden_api_policy 1");
ShellUtils.runShellCommand(
@@ -109,7 +113,7 @@
mEventsDao.updateOrInsertEventState(
new EventState.Builder()
.setTaskIdentifier("PopulationName")
- .setServiceName(mContext.getPackageName())
+ .setService(mIsolatedService)
.setToken()
.build());
mService.onCreate();
@@ -120,7 +124,8 @@
assertNotNull(binder);
TestQueryCallback callback = new TestQueryCallback();
Bundle input = new Bundle();
- ContextData contextData = new ContextData(mContext.getPackageName());
+ ContextData contextData = new ContextData(
+ mIsolatedService.getPackageName(), mIsolatedService.getClassName());
input.putByteArray(
ClientConstants.EXTRA_CONTEXT_DATA, ContextData.toByteArray(contextData));
input.putString(ClientConstants.EXTRA_POPULATION_NAME, "PopulationName");
@@ -166,7 +171,8 @@
assertNotNull(binder);
TestQueryCallback callback = new TestQueryCallback();
Bundle input = new Bundle();
- ContextData contextData = new ContextData(mContext.getPackageName());
+ ContextData contextData = new ContextData(
+ mIsolatedService.getPackageName(), mIsolatedService.getClassName());
input.putByteArray(
ClientConstants.EXTRA_CONTEXT_DATA, ContextData.toByteArray(contextData));
input.putString(ClientConstants.EXTRA_POPULATION_NAME, "PopulationName");
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingServiceTests.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingServiceTests.java
index 2db657e..57f55da 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingServiceTests.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/federatedcompute/OdpResultHandlingServiceTests.java
@@ -25,6 +25,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.federatedcompute.aidl.IFederatedComputeCallback;
@@ -58,7 +59,7 @@
@Rule public final ServiceTestRule serviceRule = new ServiceTestRule();
private final Context mContext = ApplicationProvider.getApplicationContext();
private final CountDownLatch mLatch = new CountDownLatch(1);
-
+ private static final String SERVICE_CLASS = "com.test.TestPersonalizationService";
private boolean mCallbackOnSuccessCalled = false;
private boolean mCallbackOnFailureCalled = false;
@@ -86,7 +87,8 @@
assertNotNull(binder);
Bundle input = new Bundle();
- ContextData contextData = new ContextData(mContext.getPackageName());
+ ContextData contextData = new ContextData(
+ mContext.getPackageName(), SERVICE_CLASS);
input.putByteArray(
ClientConstants.EXTRA_CONTEXT_DATA, ContextData.toByteArray(contextData));
input.putString(ClientConstants.EXTRA_POPULATION_NAME, "population");
@@ -111,7 +113,7 @@
EventState state1 =
mEventsDao.getEventState(
OdpExampleStoreService.getTaskIdentifier("population", "task_name"),
- mContext.getPackageName());
+ new ComponentName(mContext.getPackageName(), SERVICE_CLASS));
assertArrayEquals(new byte[] {10, 0, 1}, state1.getToken());
}
@@ -123,7 +125,7 @@
assertNotNull(binder);
Bundle input = new Bundle();
- ContextData contextData = new ContextData(mContext.getPackageName());
+ ContextData contextData = new ContextData(mContext.getPackageName(), SERVICE_CLASS);
input.putByteArray(
ClientConstants.EXTRA_CONTEXT_DATA, ContextData.toByteArray(contextData));
input.putString(ClientConstants.EXTRA_POPULATION_NAME, "population");
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobServiceTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobServiceTest.java
index 5251c10..221cd7e 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobServiceTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/maintenance/OnDevicePersonalizationMaintenanceJobServiceTest.java
@@ -45,13 +45,13 @@
import com.android.ondevicepersonalization.services.OnDevicePersonalizationConfig;
import com.android.ondevicepersonalization.services.OnDevicePersonalizationExecutors;
import com.android.ondevicepersonalization.services.PhFlagsTestUtil;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import com.android.ondevicepersonalization.services.data.events.Event;
import com.android.ondevicepersonalization.services.data.events.EventState;
import com.android.ondevicepersonalization.services.data.events.EventsDao;
import com.android.ondevicepersonalization.services.data.events.Query;
import com.android.ondevicepersonalization.services.data.user.UserPrivacyStatus;
-import com.android.ondevicepersonalization.services.data.vendor.DbUtils;
import com.android.ondevicepersonalization.services.data.vendor.FileUtils;
import com.android.ondevicepersonalization.services.data.vendor.LocalData;
import com.android.ondevicepersonalization.services.data.vendor.OnDevicePersonalizationLocalDataDao;
@@ -115,10 +115,10 @@
timestamp));
}
- private void addEventData(String packageName, long timestamp) {
+ private void addEventData(ComponentName service, long timestamp) {
Query query = new Query.Builder()
.setTimeMillis(timestamp)
- .setServiceName(packageName)
+ .setService(service)
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
long queryId = mEventsDao.insertQuery(query);
@@ -126,7 +126,7 @@
Event event = new Event.Builder()
.setType(1)
.setEventData("event".getBytes(StandardCharsets.UTF_8))
- .setServiceName(packageName)
+ .setService(service)
.setQueryId(queryId)
.setTimeMillis(timestamp)
.setRowIndex(0)
@@ -135,7 +135,7 @@
EventState eventState = new EventState.Builder()
.setTaskIdentifier(TASK_IDENTIFIER)
- .setServiceName(packageName)
+ .setService(service)
.setToken(new byte[]{1})
.build();
mEventsDao.updateOrInsertEventState(eventState);
@@ -216,9 +216,9 @@
long timestamp = System.currentTimeMillis();
addTestData(timestamp, mTestDao);
addTestData(timestamp, mDao);
- addEventData(mContext.getPackageName(), timestamp);
- addEventData(mContext.getPackageName(), 100L);
- addEventData(TEST_OWNER.getPackageName(), timestamp);
+ addEventData(mService, timestamp);
+ addEventData(mService, 100L);
+ addEventData(TEST_OWNER, timestamp);
var originalIsolatedServiceAllowList =
FlagsFactory.getFlags().getIsolatedServiceAllowList();
@@ -261,13 +261,13 @@
assertTrue(new File(dir, "large_" + (timestamp + 20)).exists());
assertTrue(new File(dir, "large2_" + (timestamp + 20)).exists());
- assertNull(mEventsDao.getEventState(TASK_IDENTIFIER, TEST_OWNER.getPackageName()));
- assertNotNull(mEventsDao.getEventState(TASK_IDENTIFIER, mContext.getPackageName()));
+ assertNull(mEventsDao.getEventState(TASK_IDENTIFIER, TEST_OWNER));
+ assertNotNull(mEventsDao.getEventState(TASK_IDENTIFIER, mService));
assertEquals(2,
- mEventsDao.readAllNewRowsForPackage(TEST_OWNER.getPackageName(), 0, 0).size());
+ mEventsDao.readAllNewRowsForPackage(TEST_OWNER, 0, 0).size());
assertEquals(2,
- mEventsDao.readAllNewRowsForPackage(mContext.getPackageName(), 0, 0).size());
+ mEventsDao.readAllNewRowsForPackage(mService, 0, 0).size());
}
@Test
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/AppRequestFlowTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/AppRequestFlowTest.java
index 2834abd..8291826 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/AppRequestFlowTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/AppRequestFlowTest.java
@@ -41,6 +41,7 @@
import com.android.ondevicepersonalization.internal.util.ByteArrayParceledSlice;
import com.android.ondevicepersonalization.internal.util.PersistableBundleUtils;
import com.android.ondevicepersonalization.services.PhFlagsTestUtil;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import com.android.ondevicepersonalization.services.data.events.EventsContract;
import com.android.ondevicepersonalization.services.data.events.EventsDao;
@@ -170,10 +171,12 @@
ContentValues row2 = new ContentValues();
row2.put("b", 2);
rows.add(row2);
+ ComponentName service = new ComponentName(
+ mContext.getPackageName(), "com.test.TestPersonalizationService");
byte[] queryDataBytes = OnDevicePersonalizationFlatbufferUtils.createQueryData(
- "com.example.test", "AABBCCDD", rows);
+ DbUtils.toTableValue(service), "AABBCCDD", rows);
EventsDao.getInstanceForTest(mContext).insertQuery(
- new Query.Builder().setServiceName(mContext.getPackageName()).setQueryData(
+ new Query.Builder().setService(service).setQueryData(
queryDataBytes).build());
EventsDao.getInstanceForTest(mContext);
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/RenderFlowTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/RenderFlowTest.java
index 034efec..2f3a667 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/RenderFlowTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/RenderFlowTest.java
@@ -24,6 +24,7 @@
import android.adservices.ondevicepersonalization.RenderingConfig;
import android.adservices.ondevicepersonalization.RequestLogRecord;
import android.adservices.ondevicepersonalization.aidl.IRequestSurfacePackageCallback;
+import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.os.Binder;
@@ -35,6 +36,7 @@
import com.android.compatibility.common.util.ShellUtils;
import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.ondevicepersonalization.services.PhFlagsTestUtil;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import com.android.ondevicepersonalization.services.data.events.EventsDao;
import com.android.ondevicepersonalization.services.data.events.Query;
@@ -175,10 +177,12 @@
ContentValues row2 = new ContentValues();
row2.put("b", 2);
rows.add(row2);
+ ComponentName service = new ComponentName(
+ mContext.getPackageName(), "com.test.TestPersonalizationService");
byte[] queryDataBytes = OnDevicePersonalizationFlatbufferUtils.createQueryData(
- "com.example.test", "AABBCCDD", rows);
+ DbUtils.toTableValue(service), "AABBCCDD", rows);
EventsDao.getInstanceForTest(mContext).insertQuery(
- new Query.Builder().setServiceName(mContext.getPackageName()).setQueryData(
+ new Query.Builder().setService(service).setQueryData(
queryDataBytes).build());
EventsDao.getInstanceForTest(mContext);
}
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebTriggerFlowTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebTriggerFlowTest.java
index 1423022..f98698e 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebTriggerFlowTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebTriggerFlowTest.java
@@ -40,6 +40,7 @@
import com.android.modules.utils.testing.ExtendedMockitoRule;
import com.android.modules.utils.testing.TestableDeviceConfig;
import com.android.ondevicepersonalization.services.PhFlagsTestUtil;
+import com.android.ondevicepersonalization.services.data.DbUtils;
import com.android.ondevicepersonalization.services.data.OnDevicePersonalizationDbHelper;
import com.android.ondevicepersonalization.services.data.events.EventsDao;
import com.android.ondevicepersonalization.services.data.events.Query;
@@ -241,10 +242,12 @@
ContentValues row2 = new ContentValues();
row2.put("b", 2);
rows.add(row2);
+ ComponentName service = new ComponentName("com.example.test", "cls");
byte[] queryDataBytes = OnDevicePersonalizationFlatbufferUtils.createQueryData(
- "com.example.test", "AABBCCDD", rows);
+ DbUtils.toTableValue(service),
+ "AABBCCDD", rows);
EventsDao.getInstanceForTest(mContext).insertQuery(
- new Query.Builder().setServiceName(mContext.getPackageName()).setQueryData(
+ new Query.Builder().setService(service).setQueryData(
queryDataBytes).build());
EventsDao.getInstanceForTest(mContext);
}
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebViewFlowTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebViewFlowTest.java
index d37e8ea..d56653f 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebViewFlowTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/serviceflow/WebViewFlowTest.java
@@ -77,7 +77,7 @@
mDao = EventsDao.getInstanceForTest(mContext);
Query mTestQuery = new Query.Builder()
.setTimeMillis(1L)
- .setServiceName("servicePackageName")
+ .setService(new ComponentName("pkg", "cls"))
.setQueryData("query".getBytes(StandardCharsets.UTF_8))
.build();
// Insert query for FK constraint