diff options
| author | 2017-12-18 10:02:35 -0800 | |
|---|---|---|
| committer | 2017-12-18 11:35:56 -0800 | |
| commit | 02ff50b0fa5d8d5a48900eb253a55eb264cb16fb (patch) | |
| tree | d875931dde0c538ecbb7688b360fb7db8c7c9351 | |
| parent | b5c1fe39c06bcba345df6c637a46fa9b370f25ce (diff) | |
Implements onNanoAppAborted callback
Bug: 67734082
Bug: 31049861
Test: Fake a handleAppAbort callback at the HAL implementation for
walleye, run a test app that registers a client callback, and verify
client receives the onNanoAppAborted callback.
Change-Id: Ic1ab3a1ef0f903a9aad04f732dac1a04f3fc5169
3 files changed, 35 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/location/ContextHubClientBroker.java b/services/core/java/com/android/server/location/ContextHubClientBroker.java index 41d9feb97c4e..9640e042fe6a 100644 --- a/services/core/java/com/android/server/location/ContextHubClientBroker.java +++ b/services/core/java/com/android/server/location/ContextHubClientBroker.java @@ -179,7 +179,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub } /** - * Handles a nanoapp load event. + * Notifies the client of a nanoapp load event if the connection is open. * * @param nanoAppId the ID of the nanoapp that was loaded. */ @@ -195,7 +195,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub } /** - * Handles a nanoapp unload event. + * Notifies the client of a nanoapp unload event if the connection is open. * * @param nanoAppId the ID of the nanoapp that was unloaded. */ @@ -211,7 +211,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub } /** - * Handles a hub reset for this client. + * Notifies the client of a hub reset event if the connection is open. */ /* package */ void onHubReset() { if (mConnectionOpen.get()) { @@ -223,4 +223,21 @@ public class ContextHubClientBroker extends IContextHubClient.Stub } } } + + /** + * Notifies the client of a nanoapp abort event if the connection is open. + * + * @param nanoAppId the ID of the nanoapp that aborted + * @param abortCode the nanoapp specific abort code + */ + /* package */ void onNanoAppAborted(long nanoAppId, int abortCode) { + if (mConnectionOpen.get()) { + try { + mCallbackInterface.onNanoAppAborted(nanoAppId, abortCode); + } catch (RemoteException e) { + Log.e(TAG, "RemoteException while calling onNanoAppAborted on client" + + " (host endpoint ID = " + mHostEndPointId + ")", e); + } + } + } } diff --git a/services/core/java/com/android/server/location/ContextHubClientManager.java b/services/core/java/com/android/server/location/ContextHubClientManager.java index d58a7460b23f..60b5b1f06c42 100644 --- a/services/core/java/com/android/server/location/ContextHubClientManager.java +++ b/services/core/java/com/android/server/location/ContextHubClientManager.java @@ -149,35 +149,38 @@ import java.util.function.Consumer; } /** - * Handles a nanoapp load event. - * - * @param contextHubId the ID of the hub where the nanoapp was loaded. - * @param nanoAppId the ID of the nanoapp that was loaded. + * @param contextHubId the ID of the hub where the nanoapp was loaded + * @param nanoAppId the ID of the nanoapp that was loaded */ /* package */ void onNanoAppLoaded(int contextHubId, long nanoAppId) { forEachClientOfHub(contextHubId, client -> client.onNanoAppLoaded(nanoAppId)); } /** - * Handles a nanoapp unload event. - * - * @param contextHubId the ID of the hub where the nanoapp was unloaded. - * @param nanoAppId the ID of the nanoapp that was unloaded. + * @param contextHubId the ID of the hub where the nanoapp was unloaded + * @param nanoAppId the ID of the nanoapp that was unloaded */ /* package */ void onNanoAppUnloaded(int contextHubId, long nanoAppId) { forEachClientOfHub(contextHubId, client -> client.onNanoAppUnloaded(nanoAppId)); } /** - * Handles a hub reset. - * - * @param contextHubId the ID of the hub that has reset. + * @param contextHubId the ID of the hub that has reset */ /* package */ void onHubReset(int contextHubId) { forEachClientOfHub(contextHubId, client -> client.onHubReset()); } /** + * @param contextHubId the ID of the hub that contained the nanoapp that aborted + * @param nanoAppId the ID of the nanoapp that aborted + * @param abortCode the nanoapp specific abort code + */ + /* package */ void onNanoAppAborted(int contextHubId, long nanoAppId, int abortCode) { + forEachClientOfHub(contextHubId, client -> client.onNanoAppAborted(nanoAppId, abortCode)); + } + + /** * Creates a new ContextHubClientBroker object for a client and registers it with the client * manager. * diff --git a/services/core/java/com/android/server/location/ContextHubService.java b/services/core/java/com/android/server/location/ContextHubService.java index 1ad0cf931165..56bc19d9eb7c 100644 --- a/services/core/java/com/android/server/location/ContextHubService.java +++ b/services/core/java/com/android/server/location/ContextHubService.java @@ -583,7 +583,7 @@ public class ContextHubService extends IContextHubService.Stub { * @param abortCode the nanoapp-specific abort code */ private void handleAppAbortCallback(int contextHubId, long nanoAppId, int abortCode) { - // TODO(b/31049861): Implement this + mClientManager.onNanoAppAborted(contextHubId, nanoAppId, abortCode); } /** |