From cf8bc65bca82527d00cbe313455d05b296b9c0ce Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Mon, 2 Apr 2018 13:31:47 -0700 Subject: Add an Executor for the onConnectedListener Test: Run CtsOmapiTestCases Bug: 76448978 Change-Id: Ieb30b8935961db25bd058e1c41c127fa5a4437ff --- api/current.txt | 4 ++-- core/java/android/se/omapi/SEService.java | 29 ++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/api/current.txt b/api/current.txt index ea2cc0ecdfc9..fc53f456a1b8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -37030,7 +37030,7 @@ package android.se.omapi { } public final class SEService { - ctor public SEService(android.content.Context, android.se.omapi.SEService.OnConnectedListener); + ctor public SEService(android.content.Context, java.util.concurrent.Executor, android.se.omapi.SEService.OnConnectedListener); method public android.se.omapi.Reader[] getReaders(); method public java.lang.String getVersion(); method public boolean isConnected(); @@ -37038,7 +37038,7 @@ package android.se.omapi { } public static abstract interface SEService.OnConnectedListener { - method public abstract void onServiceConnected(); + method public abstract void onConnected(); } public final class Session { diff --git a/core/java/android/se/omapi/SEService.java b/core/java/android/se/omapi/SEService.java index 1f69df898d03..14727f027897 100644 --- a/core/java/android/se/omapi/SEService.java +++ b/core/java/android/se/omapi/SEService.java @@ -32,6 +32,7 @@ import android.os.RemoteException; import android.util.Log; import java.util.HashMap; +import java.util.concurrent.Executor; /** * The SEService realises the communication to available Secure Elements on the @@ -66,7 +67,7 @@ public final class SEService { /** * Called by the framework when the service is connected. */ - void onServiceConnected(); + void onConnected(); } /** @@ -75,15 +76,21 @@ public final class SEService { */ private class SEListener extends ISecureElementListener.Stub { public OnConnectedListener mListener = null; + public Executor mExecutor = null; @Override public IBinder asBinder() { return this; } - public void onServiceConnected() { - if (mListener != null) { - mListener.onServiceConnected(); + public void onConnected() { + if (mListener != null && mExecutor != null) { + mExecutor.execute(new Runnable() { + @Override + public void run() { + mListener.onConnected(); + } + }); } } } @@ -116,22 +123,26 @@ public final class SEService { * the specified listener is called or if isConnected() returns * true.
* The call-back object passed as a parameter will have its - * onServiceConnected() method called when the connection actually happen. + * onConnected() method called when the connection actually happen. * * @param context * the context of the calling application. Cannot be * null. * @param listener * a OnConnectedListener object. + * @param executor + * an Executor which will be used when invoking the callback. */ - public SEService(@NonNull Context context, @NonNull OnConnectedListener listener) { + public SEService(@NonNull Context context, @NonNull Executor executor, + @NonNull OnConnectedListener listener) { - if (context == null) { - throw new NullPointerException("context must not be null"); + if (context == null || listener == null || executor == null) { + throw new NullPointerException("Arguments must not be null"); } mContext = context; mSEListener.mListener = listener; + mSEListener.mExecutor = executor; mConnection = new ServiceConnection() { @@ -140,7 +151,7 @@ public final class SEService { mSecureElementService = ISecureElementService.Stub.asInterface(service); if (mSEListener != null) { - mSEListener.onServiceConnected(); + mSEListener.onConnected(); } Log.i(TAG, "Service onServiceConnected"); } -- cgit v1.2.3-59-g8ed1b