summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java14
-rw-r--r--core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/dagger/WalletModule.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java1
6 files changed, 31 insertions, 8 deletions
diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java
index 38659e12b1ce..091bf797e24b 100644
--- a/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java
+++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java
@@ -42,7 +42,19 @@ public interface QuickAccessWalletClient extends Closeable {
*/
@NonNull
static QuickAccessWalletClient create(@NonNull Context context) {
- return new QuickAccessWalletClientImpl(context);
+ return create(context, null /* bgExecutor */);
+ }
+
+ /**
+ * Create a client for accessing wallet cards from the {@link QuickAccessWalletService}. If the
+ * service is unavailable, {@link #isWalletServiceAvailable()} will return false.
+ * @param context Context.
+ * @param bgExecutor A background {@link Executor} for service registration.
+ * @hide
+ */
+ @NonNull
+ static QuickAccessWalletClient create(@NonNull Context context, @Nullable Executor bgExecutor) {
+ return new QuickAccessWalletClientImpl(context, bgExecutor);
}
/**
diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java
index 95b51ea4dece..a3304a9ca386 100644
--- a/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java
+++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java
@@ -67,6 +67,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
private final Context mContext;
private final Queue<ApiCaller> mRequestQueue;
private final Map<WalletServiceEventListener, String> mEventListeners;
+ private final Executor mLifecycleExecutor;
private boolean mIsConnected;
/** Timeout for active service connections (1 minute) */
private static final long SERVICE_CONNECTION_TIMEOUT_MS = 60 * 1000;
@@ -79,10 +80,11 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
private static final int MSG_TIMEOUT_SERVICE = 5;
- QuickAccessWalletClientImpl(@NonNull Context context) {
+ QuickAccessWalletClientImpl(@NonNull Context context, @Nullable Executor bgExecutor) {
mContext = context.getApplicationContext();
mServiceInfo = QuickAccessWalletServiceInfo.tryCreate(context);
mHandler = new Handler(Looper.getMainLooper());
+ mLifecycleExecutor = (bgExecutor == null) ? Runnable::run : bgExecutor;
mRequestQueue = new LinkedList<>();
mEventListeners = new HashMap<>(1);
}
@@ -369,7 +371,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
Intent intent = new Intent(SERVICE_INTERFACE);
intent.setComponent(mServiceInfo.getComponentName());
int flags = Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY;
- mContext.bindService(intent, this, flags);
+ mLifecycleExecutor.execute(() -> mContext.bindService(intent, this, flags));
resetServiceConnectionTimeout();
}
@@ -411,7 +413,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
return;
}
mIsConnected = false;
- mContext.unbindService(/*conn=*/ this);
+ mLifecycleExecutor.execute(() -> mContext.unbindService(/*conn=*/ this));
mService = null;
mEventListeners.clear();
mRequestQueue.clear();
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java
index 70728902f621..3c869e7ceb40 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java
@@ -33,6 +33,7 @@ import android.util.Log;
import com.android.systemui.R;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.util.settings.SecureSettings;
@@ -64,6 +65,7 @@ public class QuickAccessWalletController {
private final Context mContext;
private final Executor mExecutor;
private final Executor mCallbackExecutor;
+ private final Executor mBgExecutor;
private final SecureSettings mSecureSettings;
private final SystemClock mClock;
@@ -80,12 +82,14 @@ public class QuickAccessWalletController {
Context context,
@Main Executor executor,
@CallbackExecutor Executor callbackExecutor,
+ @Background Executor bgExecutor,
SecureSettings secureSettings,
QuickAccessWalletClient quickAccessWalletClient,
SystemClock clock) {
mContext = context;
mExecutor = executor;
mCallbackExecutor = callbackExecutor;
+ mBgExecutor = bgExecutor;
mSecureSettings = secureSettings;
mQuickAccessWalletClient = quickAccessWalletClient;
mClock = clock;
@@ -182,7 +186,7 @@ public class QuickAccessWalletController {
* Re-create the {@link QuickAccessWalletClient} of the controller.
*/
public void reCreateWalletClient() {
- mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext);
+ mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext, mBgExecutor);
mQawClientCreatedTimeMillis = mClock.elapsedRealtime();
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/dagger/WalletModule.java b/packages/SystemUI/src/com/android/systemui/wallet/dagger/WalletModule.java
index c1f5516f02bb..2c901d285939 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/dagger/WalletModule.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/dagger/WalletModule.java
@@ -21,8 +21,11 @@ import android.content.Context;
import android.service.quickaccesswallet.QuickAccessWalletClient;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.wallet.ui.WalletActivity;
+import java.util.concurrent.Executor;
+
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
@@ -45,7 +48,8 @@ public abstract class WalletModule {
/** */
@SysUISingleton
@Provides
- public static QuickAccessWalletClient provideQuickAccessWalletClient(Context context) {
- return QuickAccessWalletClient.create(context);
+ public static QuickAccessWalletClient provideQuickAccessWalletClient(Context context,
+ @Background Executor bgExecutor) {
+ return QuickAccessWalletClient.create(context, bgExecutor);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
index 92e7f2d7c76b..89c31009a58e 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
@@ -122,7 +122,7 @@ public class WalletActivity extends LifecycleActivity implements
getActionBar().setHomeActionContentDescription(R.string.accessibility_desc_close);
WalletView walletView = requireViewById(R.id.wallet_view);
- mWalletClient = QuickAccessWalletClient.create(this);
+ mWalletClient = QuickAccessWalletClient.create(this, mExecutor);
mWalletScreenController = new WalletScreenController(
this,
walletView,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java
index d8aef6668a27..68027450045b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java
@@ -100,6 +100,7 @@ public class QuickAccessWalletControllerTest extends SysuiTestCase {
mContext,
MoreExecutors.directExecutor(),
MoreExecutors.directExecutor(),
+ MoreExecutors.directExecutor(),
mSecureSettings,
mQuickAccessWalletClient,
mClock);