summaryrefslogtreecommitdiff
path: root/packages/CompanionDeviceManager/src
diff options
context:
space:
mode:
author Evan Chen <evanxinchen@google.com> 2024-05-07 20:19:17 +0000
committer Evan Chen <evanxinchen@google.com> 2024-06-20 17:47:14 +0000
commit11e9769834e292881e72ae2e8c396e2a3bec62cf (patch)
treef3a4c12d8e91178ad4b0c0611d9167fd7c731f61 /packages/CompanionDeviceManager/src
parenta96c939d3effc408310e7f85fe0a643ab6dc5c1b (diff)
[W] Introduce new onFailure callback with resultCode
Test: CTS Bug: 341993358 Flag: android.companion.association_failure_code Change-Id: I5f549c5663b4887b4e2dd694c5ffb84136764be7
Diffstat (limited to 'packages/CompanionDeviceManager/src')
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java55
1 files changed, 19 insertions, 36 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java
index 5770c5104dee..66ab81bf02b1 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java
@@ -16,10 +16,7 @@
package com.android.companiondevicemanager;
-import static android.companion.CompanionDeviceManager.REASON_CANCELED;
-import static android.companion.CompanionDeviceManager.REASON_DISCOVERY_TIMEOUT;
-import static android.companion.CompanionDeviceManager.REASON_INTERNAL_ERROR;
-import static android.companion.CompanionDeviceManager.REASON_USER_REJECTED;
+import static android.companion.CompanionDeviceManager.RESULT_CANCELED;
import static android.companion.CompanionDeviceManager.RESULT_DISCOVERY_TIMEOUT;
import static android.companion.CompanionDeviceManager.RESULT_INTERNAL_ERROR;
import static android.companion.CompanionDeviceManager.RESULT_USER_REJECTED;
@@ -234,8 +231,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
boolean forCancelDialog = intent.getBooleanExtra(EXTRA_FORCE_CANCEL_CONFIRMATION, false);
if (forCancelDialog) {
Slog.i(TAG, "Cancelling the user confirmation");
- cancel(/* discoveryTimeOut */ false, /* userRejected */ false,
- /* internalError */ false);
+ cancel(RESULT_CANCELED);
return;
}
@@ -243,8 +239,14 @@ public class CompanionAssociationActivity extends FragmentActivity implements
// yet). We can only "process" one request at a time.
final IAssociationRequestCallback appCallback = IAssociationRequestCallback.Stub
.asInterface(intent.getExtras().getBinder(EXTRA_APPLICATION_CALLBACK));
+
+ if (appCallback == null) {
+ return;
+ }
+ Slog.e(TAG, "More than one AssociationRequests are processing.");
+
try {
- requireNonNull(appCallback).onFailure("Busy.");
+ appCallback.onFailure(RESULT_INTERNAL_ERROR);
} catch (RemoteException ignore) {
}
}
@@ -255,8 +257,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
// TODO: handle config changes without cancelling.
if (!isDone()) {
- cancel(/* discoveryTimeOut */ false,
- /* userRejected */ false, /* internalError */ false); // will finish()
+ cancel(RESULT_CANCELED); // will finish()
}
}
@@ -330,8 +331,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
&& CompanionDeviceDiscoveryService.getScanResult().getValue().isEmpty()) {
synchronized (LOCK) {
if (sDiscoveryStarted) {
- cancel(/* discoveryTimeOut */ true,
- /* userRejected */ false, /* internalError */ false);
+ cancel(RESULT_DISCOVERY_TIMEOUT);
}
}
}
@@ -371,7 +371,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
mCdmServiceReceiver.send(RESULT_CODE_ASSOCIATION_APPROVED, data);
}
- private void cancel(boolean discoveryTimeout, boolean userRejected, boolean internalError) {
+ private void cancel(int failureCode) {
if (isDone()) {
Slog.w(TAG, "Already done: " + (mApproved ? "Approved" : "Cancelled"));
return;
@@ -379,35 +379,19 @@ public class CompanionAssociationActivity extends FragmentActivity implements
mCancelled = true;
// Stop discovery service if it was used.
- if (!mRequest.isSelfManaged() || discoveryTimeout) {
+ if (!mRequest.isSelfManaged()) {
CompanionDeviceDiscoveryService.stop(this);
}
- final String cancelReason;
- final int resultCode;
- if (userRejected) {
- cancelReason = REASON_USER_REJECTED;
- resultCode = RESULT_USER_REJECTED;
- } else if (discoveryTimeout) {
- cancelReason = REASON_DISCOVERY_TIMEOUT;
- resultCode = RESULT_DISCOVERY_TIMEOUT;
- } else if (internalError) {
- cancelReason = REASON_INTERNAL_ERROR;
- resultCode = RESULT_INTERNAL_ERROR;
- } else {
- cancelReason = REASON_CANCELED;
- resultCode = CompanionDeviceManager.RESULT_CANCELED;
- }
-
// First send callback to the app directly...
try {
- Slog.i(TAG, "Sending onFailure to app due to reason=" + cancelReason);
- mAppCallback.onFailure(cancelReason);
+ Slog.i(TAG, "Sending onFailure to app due to failureCode=" + failureCode);
+ mAppCallback.onFailure(failureCode);
} catch (RemoteException ignore) {
}
// ... then set result and finish ("sending" onActivityResult()).
- setResultAndFinish(null, resultCode);
+ setResultAndFinish(null, failureCode);
}
private void setResultAndFinish(@Nullable AssociationInfo association, int resultCode) {
@@ -452,8 +436,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
}
} catch (PackageManager.NameNotFoundException e) {
Slog.e(TAG, "Package u" + userId + "/" + packageName + " not found.");
- cancel(/* discoveryTimeout */ false,
- /* userRejected */ false, /* internalError */ true);
+ cancel(RESULT_INTERNAL_ERROR);
return;
}
@@ -637,7 +620,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
// Disable the button, to prevent more clicks.
v.setEnabled(false);
- cancel(/* discoveryTimeout */ false, /* userRejected */ true, /* internalError */ false);
+ cancel(RESULT_USER_REJECTED);
}
private void onShowHelperDialog(View view) {
@@ -763,7 +746,7 @@ public class CompanionAssociationActivity extends FragmentActivity implements
@Override
public void onShowHelperDialogFailed() {
- cancel(/* discoveryTimeout */ false, /* userRejected */ false, /* internalError */ true);
+ cancel(RESULT_INTERNAL_ERROR);
}
@Override