summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAnthony Stange <stange@google.com>2021-02-16 20:41:55 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-02-16 20:41:55 +0000
commit30780cf472ba2e45fe791c9cbccd3612df2c3f1a (patch)
tree0b34856e5a1157596c7f7fc25ab4a143df7ca05f /core/java
parentd3e7d8c0dca163e28aa1600adb362b38528f01db (diff)
parent2e6ebbc453ddd873c3ef9616de9537d856e55db6 (diff)
Merge "Add new ContextHubTransaction error code" into sc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/hardware/location/ContextHubClient.java14
-rw-r--r--core/java/android/hardware/location/ContextHubClientCallback.java9
-rw-r--r--core/java/android/hardware/location/ContextHubTransaction.java8
3 files changed, 26 insertions, 5 deletions
diff --git a/core/java/android/hardware/location/ContextHubClient.java b/core/java/android/hardware/location/ContextHubClient.java
index 43480ab9cc44..49beeb3a2e96 100644
--- a/core/java/android/hardware/location/ContextHubClient.java
+++ b/core/java/android/hardware/location/ContextHubClient.java
@@ -127,6 +127,20 @@ public class ContextHubClient implements Closeable {
* This function returns RESULT_SUCCESS if the message has reached the HAL, but
* does not guarantee delivery of the message to the target nanoapp.
*
+ * Before sending the first message to your nanoapp, it's recommended that the following
+ * operations should be performed:
+ * 1) Invoke {@link ContextHubManager#queryNanoApps(ContextHubInfo)} to verify the nanoapp is
+ * present.
+ * 2) Validate that you have the permissions to communicate with the nanoapp by looking at
+ * {@link NanoAppState#getNanoAppPermissions}.
+ * 3) If you don't have permissions, send an idempotent message to the nanoapp ensuring any
+ * work your app previously may have asked it to do is stopped. This is useful if your app
+ * restarts due to permission changes and no longer has the permissions when it is started
+ * again.
+ * 4) If you have valid permissions, send a message to your nanoapp to resubscribe so that it's
+ * aware you have restarted or so you can initially subscribe if this is the first time you
+ * have sent it a message.
+ *
* @param message the message object to send
*
* @return the result of sending the message defined as in ContextHubTransaction.Result
diff --git a/core/java/android/hardware/location/ContextHubClientCallback.java b/core/java/android/hardware/location/ContextHubClientCallback.java
index b31b85fdabf6..7e484dda283c 100644
--- a/core/java/android/hardware/location/ContextHubClientCallback.java
+++ b/core/java/android/hardware/location/ContextHubClientCallback.java
@@ -117,10 +117,11 @@ public class ContextHubClientCallback {
* 4) {@link ContextHubClient} performs any cleanup required with the nanoapp
* 5) Callback invoked with the nanoapp ID and {@link ContextHubManager#AUTHORIZATION_DENIED}.
* At this point, any further attempts of communication between the nanoapp and the
- * {@link ContextHubClient} will be dropped by the contexthub along with
- * {@link ContextHubManager#AUTHORIZATION_DENIED} being sent. The {@link ContextHubClient}
- * should assume no communciation can happen again until
- * {@link ContextHubManager#AUTHORIZATION_GRANTED} is received.
+ * {@link ContextHubClient} will be dropped by the contexthub and a return value of
+ * {@link ContextHubTransaction#RESULT_FAILED_PERMISSION_DENIED} will be used when calling
+ * {@link ContextHubClient#sendMessageToNanoApp}. The {@link ContextHubClient} should assume
+ * no communciation can happen again until {@link ContextHubManager#AUTHORIZATION_GRANTED} is
+ * received.
*
* @param client the client that is associated with this callback
* @param nanoAppId the ID of the nanoapp associated with the new
diff --git a/core/java/android/hardware/location/ContextHubTransaction.java b/core/java/android/hardware/location/ContextHubTransaction.java
index d11e0a9b6081..86f77c0bf138 100644
--- a/core/java/android/hardware/location/ContextHubTransaction.java
+++ b/core/java/android/hardware/location/ContextHubTransaction.java
@@ -81,7 +81,8 @@ public class ContextHubTransaction<T> {
RESULT_FAILED_AT_HUB,
RESULT_FAILED_TIMEOUT,
RESULT_FAILED_SERVICE_INTERNAL_FAILURE,
- RESULT_FAILED_HAL_UNAVAILABLE
+ RESULT_FAILED_HAL_UNAVAILABLE,
+ RESULT_FAILED_PERMISSION_DENIED
})
public @interface Result {}
public static final int RESULT_SUCCESS = 0;
@@ -117,6 +118,11 @@ public class ContextHubTransaction<T> {
* Failure mode when the Context Hub HAL was not available.
*/
public static final int RESULT_FAILED_HAL_UNAVAILABLE = 8;
+ /**
+ * Failure mode when the user of the API doesn't have the required permissions to perform the
+ * operation.
+ */
+ public static final int RESULT_FAILED_PERMISSION_DENIED = 9;
/**
* A class describing the response for a ContextHubTransaction.