Update HelperAccessor's prefix to be set only once.
Bug: 126372895
Test: manual
Change-Id: I580d4461bd0d1423d20454522e1dbfeec7838a5a
(cherry picked from commit 74f9e52655b46cfe0a484577686089783da09d6c)
diff --git a/libraries/app-helpers/core/src/android/platform/helpers/HelperAccessor.java b/libraries/app-helpers/core/src/android/platform/helpers/HelperAccessor.java
index b95baa9..c1f0c88 100644
--- a/libraries/app-helpers/core/src/android/platform/helpers/HelperAccessor.java
+++ b/libraries/app-helpers/core/src/android/platform/helpers/HelperAccessor.java
@@ -20,38 +20,47 @@
/**
* A {@code HelperAccessor} can be included in any test to access an App Helper implementation.
*
- * <p>For example:
- * <code>
+ * <p>For example: <code>
* HelperAccessor<IXHelper> accessor = new HelperAccessor(IXHelper.class);
* accessor.get().performSomeAction();
- * </code>
+ * </code> To target a specific helper implementation by prefix, build this object and call, <code>
+ * withPrefix</code> on it.
*/
public class HelperAccessor<T extends IAppHelper> {
private final Class<T> mInterfaceClass;
+
private T mHelper;
+ private String mPrefix;
public HelperAccessor(Class<T> klass) {
mInterfaceClass = klass;
}
+ /** Selects only helpers that begin with the prefix, {@code prefix}. */
+ public HelperAccessor<T> withPrefix(String prefix) {
+ mPrefix = prefix;
+ // Unset the helper, in case this was changed after first use.
+ mHelper = null;
+ // Return self to follow a pseudo-builder initialization pattern.
+ return this;
+ }
+
public T get() {
if (mHelper == null) {
- mHelper = HelperManager.getInstance(
- InstrumentationRegistry.getContext(),
- InstrumentationRegistry.getInstrumentation())
- .get(mInterfaceClass);
+ if (mPrefix == null || mPrefix.isEmpty()) {
+ mHelper =
+ HelperManager.getInstance(
+ InstrumentationRegistry.getContext(),
+ InstrumentationRegistry.getInstrumentation())
+ .get(mInterfaceClass);
+ } else {
+ mHelper =
+ HelperManager.getInstance(
+ InstrumentationRegistry.getContext(),
+ InstrumentationRegistry.getInstrumentation())
+ .get(mInterfaceClass, mPrefix);
+ }
}
return mHelper;
}
-
- public T get(String prefix) {
- if (mHelper == null) {
- mHelper = HelperManager.getInstance(
- InstrumentationRegistry.getContext(),
- InstrumentationRegistry.getInstrumentation())
- .get(mInterfaceClass, prefix);
- }
- return mHelper;
- }
-
}