diff --git a/core/java/android/companion/SystemDataTransferRequest.java b/core/java/android/companion/SystemDataTransferRequest.java
index 461b4f5f27e6e..ccc720edbe33a 100644
--- a/core/java/android/companion/SystemDataTransferRequest.java
+++ b/core/java/android/companion/SystemDataTransferRequest.java
@@ -66,8 +66,7 @@ public final class SystemDataTransferRequest implements Parcelable {
return mAssociationId;
}
- @NonNull
- public boolean isPermissionSyncAllPackages() {
+ public boolean getPermissionSyncAllPackages() {
return mPermissionSyncAllPackages;
}
@@ -103,6 +102,7 @@ public final class SystemDataTransferRequest implements Parcelable {
+ "associationId=" + mAssociationId
+ ", isPermissionSyncAllPackages=" + mPermissionSyncAllPackages
+ ", permissionSyncPackages=[" + String.join(",", mPermissionSyncPackages) + "]"
+ + ", userId=" + mUserId
+ ", isUserConsented=" + mUserConsented
+ ")";
}
@@ -192,10 +192,10 @@ public final class SystemDataTransferRequest implements Parcelable {
/**
* Check if two requests have the same data type.
*/
- public boolean hasSameDataType(SystemDataTransferRequest request) {
+ public boolean hasSameDataType(@NonNull SystemDataTransferRequest request) {
// Check if they are permission sync requests.
- if (this.isPermissionSyncAllPackages() || !this.getPermissionSyncPackages().isEmpty()) {
- return request.isPermissionSyncAllPackages() || !request.getPermissionSyncPackages()
+ if (this.getPermissionSyncAllPackages() || !this.getPermissionSyncPackages().isEmpty()) {
+ return request.getPermissionSyncAllPackages() || !request.getPermissionSyncPackages()
.isEmpty();
}
return false;
diff --git a/packages/CompanionDeviceManager/AndroidManifest.xml b/packages/CompanionDeviceManager/AndroidManifest.xml
index 8b5d214f7a105..c1fce7c3dd232 100644
--- a/packages/CompanionDeviceManager/AndroidManifest.xml
+++ b/packages/CompanionDeviceManager/AndroidManifest.xml
@@ -48,6 +48,14 @@
android:permission="android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE"
android:theme="@style/ChooserActivity"/>
+
+
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java
index 67efa03b645f4..036ea2e62aff2 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java
@@ -27,9 +27,7 @@ import android.os.Bundle;
import android.os.ResultReceiver;
import android.text.Html;
import android.util.Log;
-import android.view.View;
import android.widget.Button;
-import android.widget.ListView;
import android.widget.TextView;
/**
@@ -61,8 +59,6 @@ public class CompanionDeviceDataTransferActivity extends Activity {
TextView titleView = findViewById(R.id.title);
TextView summaryView = findViewById(R.id.summary);
- ListView listView = findViewById(R.id.device_list);
- listView.setVisibility(View.GONE);
Button allowButton = findViewById(R.id.btn_positive);
Button disallowButton = findViewById(R.id.btn_negative);
@@ -73,7 +69,7 @@ public class CompanionDeviceDataTransferActivity extends Activity {
requireNonNull(mRequest);
requireNonNull(mCdmServiceReceiver);
- if (mRequest.isPermissionSyncAllPackages()
+ if (mRequest.getPermissionSyncAllPackages()
|| !mRequest.getPermissionSyncPackages().isEmpty()) {
titleView.setText(Html.fromHtml(getString(
R.string.permission_sync_confirmation_title), 0));
diff --git a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
index a46b7857f6bc4..c3b8616895873 100644
--- a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
+++ b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java
@@ -37,6 +37,7 @@ import android.content.Intent;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
+import android.os.RemoteException;
import android.os.ResultReceiver;
import android.util.Slog;
@@ -68,7 +69,7 @@ public class SystemDataTransferProcessor {
private final AssociationStore mAssociationStore;
private final SystemDataTransferRequestStore mSystemDataTransferRequestStore;
- SystemDataTransferProcessor(CompanionDeviceManagerService service,
+ public SystemDataTransferProcessor(CompanionDeviceManagerService service,
AssociationStore associationStore,
SystemDataTransferRequestStore systemDataTransferRequestStore) {
mContext = service.getContext();
@@ -80,14 +81,14 @@ public class SystemDataTransferProcessor {
* Build a PendingIntent of user consent dialog
*/
public PendingIntent buildSystemDataTransferConfirmationIntent(@UserIdInt int userId,
- SystemDataTransferRequest request) throws DeviceNotAssociatedException {
+ SystemDataTransferRequest request) throws RemoteException {
// The association must exist and either belong to the calling package,
// or the calling package must hold REQUEST_SYSTEM_DATA_TRANSFER permission.
int associationId = request.getAssociationId();
AssociationInfo association = mAssociationStore.getAssociationById(associationId);
if (association == null) {
- throw new DeviceNotAssociatedException(
- "Association id: " + associationId + " doesn't exist.");
+ throw new RemoteException(new DeviceNotAssociatedException(
+ "Association id: " + associationId + " doesn't exist."));
} else {
// If the package is not the companion app which owns the association,
// it must hold REQUEST_SYSTEM_DATA_TRANSFER permission.
diff --git a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferRequestStore.java b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferRequestStore.java
index 1e29f56d190ec..204fb3df686fa 100644
--- a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferRequestStore.java
+++ b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferRequestStore.java
@@ -47,7 +47,6 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -103,7 +102,8 @@ public class SystemDataTransferRequestStore {
private final Object mLock = new Object();
@GuardedBy("mLock")
- private final SparseArray> mCachedPerUser = new SparseArray<>();
+ private final SparseArray> mCachedPerUser =
+ new SparseArray<>();
public SystemDataTransferRequestStore() {
mExecutor = Executors.newSingleThreadExecutor();
@@ -127,7 +127,7 @@ public class SystemDataTransferRequestStore {
}
void writeRequest(@UserIdInt int userId, SystemDataTransferRequest request) {
- List cachedRequests;
+ ArrayList cachedRequests;
synchronized (mLock) {
// Write to cache
cachedRequests = readRequestsFromCache(userId);
@@ -139,10 +139,10 @@ public class SystemDataTransferRequestStore {
}
@GuardedBy("mLock")
- private List readRequestsFromCache(@UserIdInt int userId) {
- List cachedRequests = mCachedPerUser.get(userId);
+ private ArrayList readRequestsFromCache(@UserIdInt int userId) {
+ ArrayList cachedRequests = mCachedPerUser.get(userId);
if (cachedRequests == null) {
- Future> future =
+ Future> future =
mExecutor.submit(() -> readRequestsFromStore(userId));
try {
cachedRequests = future.get(READ_FROM_DISK_TIMEOUT, TimeUnit.SECONDS);
@@ -167,7 +167,7 @@ public class SystemDataTransferRequestStore {
* @return a list of SystemDataTransferRequest
*/
@NonNull
- private List readRequestsFromStore(@UserIdInt int userId) {
+ private ArrayList readRequestsFromStore(@UserIdInt int userId) {
final AtomicFile file = getStorageFileForUser(userId);
Slog.i(LOG_TAG, "Reading SystemDataTransferRequests for user " + userId + " from "
+ "file=" + file.getBaseFile().getPath());
@@ -177,7 +177,7 @@ public class SystemDataTransferRequestStore {
synchronized (file) {
if (!file.getBaseFile().exists()) {
Slog.d(LOG_TAG, "File does not exist -> Abort");
- return Collections.emptyList();
+ return new ArrayList<>();
}
try (FileInputStream in = file.openRead()) {
final TypedXmlPullParser parser = Xml.resolvePullParser(in);
@@ -186,19 +186,19 @@ public class SystemDataTransferRequestStore {
return readRequestsFromXml(parser);
} catch (XmlPullParserException | IOException e) {
Slog.e(LOG_TAG, "Error while reading requests file", e);
- return Collections.emptyList();
+ return new ArrayList<>();
}
}
}
@NonNull
- private List readRequestsFromXml(@NonNull TypedXmlPullParser parser)
- throws XmlPullParserException, IOException {
+ private ArrayList readRequestsFromXml(
+ @NonNull TypedXmlPullParser parser) throws XmlPullParserException, IOException {
if (!isStartOfTag(parser, XML_TAG_REQUESTS)) {
throw new XmlPullParserException("The XML doesn't have start tag: " + XML_TAG_REQUESTS);
}
- List requests = new ArrayList<>();
+ ArrayList requests = new ArrayList<>();
while (true) {
parser.nextTag();
@@ -286,7 +286,7 @@ public class SystemDataTransferRequestStore {
writeIntAttribute(serializer, XML_ATTR_USER_ID, request.getUserId());
writeBooleanAttribute(serializer, XML_ATTR_IS_USER_CONSENTED, request.isUserConsented());
writeBooleanAttribute(serializer, XML_ATTR_IS_PERMISSION_SYNC_ALL_PACKAGES,
- request.isPermissionSyncAllPackages());
+ request.getPermissionSyncAllPackages());
try {
writeListXml(request.getPermissionSyncPackages(), XML_ATTR_PERMISSION_SYNC_PACKAGES,
serializer);