diff --git a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
index cf62ad38ec96..f1b22d6a620b 100644
--- a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.0+3
+
+* Fixes Java lint issues.
+
## 0.3.0+2
* Removes obsolete null checks on non-nullable values.
@@ -7,6 +11,7 @@
* Fixes misaligned method signature strings.
## 0.3.0
+
* **BREAKING CHANGE**: Removes `launchPriceChangeConfirmationFlow` from `InAppPurchaseAndroidPlatform`. Price changes are now [handled by Google Play](https://developer.android.com/google/play/billing/subscriptions#price-change).
* Returns both base plans and offers when `queryProductDetailsAsync` is called.
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
index 94acf3a86551..a07a53a77d8f 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
+++ b/packages/in_app_purchase/in_app_purchase_android/android/build.gradle
@@ -36,7 +36,6 @@ android {
checkAllWarnings true
warningsAsErrors true
disable 'AndroidGradlePluginVersion', 'InvalidPackage', 'GradleDependency'
- baseline file("lint-baseline.xml")
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -59,7 +58,7 @@ android {
dependencies {
implementation 'androidx.annotation:annotation:1.6.0'
- // org.jetbrains.kotlin:kotlin-bom artifact purpose is to align kotlin stdlib and related code versions.
+ // org.jetbrains.kotlin:kotlin-bom artifact purpose is to align kotlin stdlib and related code versions.
// See: https://youtrack.jetbrains.com/issue/KT-55297/kotlin-stdlib-should-declare-constraints-on-kotlin-stdlib-jdk8-and-kotlin-stdlib-jdk7
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
implementation 'com.android.billingclient:billing:5.2.0'
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/lint-baseline.xml b/packages/in_app_purchase/in_app_purchase_android/android/lint-baseline.xml
deleted file mode 100644
index 1505288bdd3c..000000000000
--- a/packages/in_app_purchase/in_app_purchase_android/android/lint-baseline.xml
+++ /dev/null
@@ -1,246 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/BillingClientFactoryImpl.java b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/BillingClientFactoryImpl.java
index 6d2639840a74..201d57c7fa25 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/BillingClientFactoryImpl.java
+++ b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/BillingClientFactoryImpl.java
@@ -5,6 +5,7 @@
package io.flutter.plugins.inapppurchase;
import android.content.Context;
+import androidx.annotation.NonNull;
import com.android.billingclient.api.BillingClient;
import io.flutter.plugin.common.MethodChannel;
@@ -12,7 +13,8 @@
final class BillingClientFactoryImpl implements BillingClientFactory {
@Override
- public BillingClient createBillingClient(Context context, MethodChannel channel) {
+ public BillingClient createBillingClient(
+ @NonNull Context context, @NonNull MethodChannel channel) {
BillingClient.Builder builder = BillingClient.newBuilder(context).enablePendingPurchases();
return builder.setListener(new PluginPurchaseListener(channel)).build();
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java
index c02bc8e893b3..4db2ca5d79e5 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java
+++ b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java
@@ -4,9 +4,9 @@
package io.flutter.plugins.inapppurchase;
-import android.app.Activity;
import android.app.Application;
import android.content.Context;
+import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import com.android.billingclient.api.BillingClient;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
@@ -25,39 +25,13 @@ public class InAppPurchasePlugin implements FlutterPlugin, ActivityAware {
// code owner of this package.
static final String PROXY_VALUE = "io.flutter.plugins.inapppurchase";
- @VisibleForTesting
- static final class MethodNames {
- static final String IS_READY = "BillingClient#isReady()";
- static final String START_CONNECTION =
- "BillingClient#startConnection(BillingClientStateListener)";
- static final String END_CONNECTION = "BillingClient#endConnection()";
- static final String ON_DISCONNECT = "BillingClientStateListener#onBillingServiceDisconnected()";
- static final String QUERY_PRODUCT_DETAILS =
- "BillingClient#queryProductDetailsAsync(QueryProductDetailsParams, ProductDetailsResponseListener)";
- static final String LAUNCH_BILLING_FLOW =
- "BillingClient#launchBillingFlow(Activity, BillingFlowParams)";
- static final String ON_PURCHASES_UPDATED =
- "PurchasesUpdatedListener#onPurchasesUpdated(BillingResult, List)";
- static final String QUERY_PURCHASES_ASYNC =
- "BillingClient#queryPurchasesAsync(QueryPurchaseParams, PurchaseResponseListener)";
- static final String QUERY_PURCHASE_HISTORY_ASYNC =
- "BillingClient#queryPurchaseHistoryAsync(QueryPurchaseHistoryParams, PurchaseHistoryResponseListener)";
- static final String CONSUME_PURCHASE_ASYNC =
- "BillingClient#consumeAsync(ConsumeParams, ConsumeResponseListener)";
- static final String ACKNOWLEDGE_PURCHASE =
- "BillingClient#acknowledgePurchase(AcknowledgePurchaseParams, AcknowledgePurchaseResponseListener)";
- static final String IS_FEATURE_SUPPORTED = "BillingClient#isFeatureSupported(String)";
- static final String GET_CONNECTION_STATE = "BillingClient#getConnectionState()";
-
- private MethodNames() {};
- }
-
private MethodChannel methodChannel;
private MethodCallHandlerImpl methodCallHandler;
/** Plugin registration. */
@SuppressWarnings("deprecation")
- public static void registerWith(io.flutter.plugin.common.PluginRegistry.Registrar registrar) {
+ public static void registerWith(
+ @NonNull io.flutter.plugin.common.PluginRegistry.Registrar registrar) {
InAppPurchasePlugin plugin = new InAppPurchasePlugin();
registrar.activity().getIntent().putExtra(PROXY_PACKAGE_KEY, PROXY_VALUE);
((Application) registrar.context().getApplicationContext())
@@ -65,18 +39,17 @@ public static void registerWith(io.flutter.plugin.common.PluginRegistry.Registra
}
@Override
- public void onAttachedToEngine(FlutterPlugin.FlutterPluginBinding binding) {
- setupMethodChannel(
- /*activity=*/ null, binding.getBinaryMessenger(), binding.getApplicationContext());
+ public void onAttachedToEngine(@NonNull FlutterPlugin.FlutterPluginBinding binding) {
+ setUpMethodChannel(binding.getBinaryMessenger(), binding.getApplicationContext());
}
@Override
- public void onDetachedFromEngine(FlutterPlugin.FlutterPluginBinding binding) {
+ public void onDetachedFromEngine(@NonNull FlutterPlugin.FlutterPluginBinding binding) {
teardownMethodChannel();
}
@Override
- public void onAttachedToActivity(ActivityPluginBinding binding) {
+ public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
binding.getActivity().getIntent().putExtra(PROXY_PACKAGE_KEY, PROXY_VALUE);
methodCallHandler.setActivity(binding.getActivity());
}
@@ -88,7 +61,7 @@ public void onDetachedFromActivity() {
}
@Override
- public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
+ public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
onAttachedToActivity(binding);
}
@@ -97,10 +70,11 @@ public void onDetachedFromActivityForConfigChanges() {
methodCallHandler.setActivity(null);
}
- private void setupMethodChannel(Activity activity, BinaryMessenger messenger, Context context) {
+ private void setUpMethodChannel(BinaryMessenger messenger, Context context) {
methodChannel = new MethodChannel(messenger, "plugins.flutter.io/in_app_purchase");
methodCallHandler =
- new MethodCallHandlerImpl(activity, context, methodChannel, new BillingClientFactoryImpl());
+ new MethodCallHandlerImpl(
+ /*activity=*/ null, context, methodChannel, new BillingClientFactoryImpl());
methodChannel.setMethodCallHandler(methodCallHandler);
}
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/MethodCallHandlerImpl.java b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/MethodCallHandlerImpl.java
index c2ce590eecd2..e6c6e0ae7934 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/MethodCallHandlerImpl.java
+++ b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/MethodCallHandlerImpl.java
@@ -17,8 +17,8 @@
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import com.android.billingclient.api.AcknowledgePurchaseParams;
-import com.android.billingclient.api.AcknowledgePurchaseResponseListener;
import com.android.billingclient.api.BillingClient;
import com.android.billingclient.api.BillingClientStateListener;
import com.android.billingclient.api.BillingFlowParams;
@@ -27,11 +27,6 @@
import com.android.billingclient.api.ConsumeParams;
import com.android.billingclient.api.ConsumeResponseListener;
import com.android.billingclient.api.ProductDetails;
-import com.android.billingclient.api.ProductDetailsResponseListener;
-import com.android.billingclient.api.Purchase;
-import com.android.billingclient.api.PurchaseHistoryRecord;
-import com.android.billingclient.api.PurchaseHistoryResponseListener;
-import com.android.billingclient.api.PurchasesResponseListener;
import com.android.billingclient.api.QueryProductDetailsParams;
import com.android.billingclient.api.QueryProductDetailsParams.Product;
import com.android.billingclient.api.QueryPurchaseHistoryParams;
@@ -47,6 +42,31 @@
class MethodCallHandlerImpl
implements MethodChannel.MethodCallHandler, Application.ActivityLifecycleCallbacks {
+ @VisibleForTesting
+ static final class MethodNames {
+ static final String IS_READY = "BillingClient#isReady()";
+ static final String START_CONNECTION =
+ "BillingClient#startConnection(BillingClientStateListener)";
+ static final String END_CONNECTION = "BillingClient#endConnection()";
+ static final String ON_DISCONNECT = "BillingClientStateListener#onBillingServiceDisconnected()";
+ static final String QUERY_PRODUCT_DETAILS =
+ "BillingClient#queryProductDetailsAsync(QueryProductDetailsParams, ProductDetailsResponseListener)";
+ static final String LAUNCH_BILLING_FLOW =
+ "BillingClient#launchBillingFlow(Activity, BillingFlowParams)";
+ static final String QUERY_PURCHASES_ASYNC =
+ "BillingClient#queryPurchasesAsync(QueryPurchaseParams, PurchaseResponseListener)";
+ static final String QUERY_PURCHASE_HISTORY_ASYNC =
+ "BillingClient#queryPurchaseHistoryAsync(QueryPurchaseHistoryParams, PurchaseHistoryResponseListener)";
+ static final String CONSUME_PURCHASE_ASYNC =
+ "BillingClient#consumeAsync(ConsumeParams, ConsumeResponseListener)";
+ static final String ACKNOWLEDGE_PURCHASE =
+ "BillingClient#acknowledgePurchase(AcknowledgePurchaseParams, AcknowledgePurchaseResponseListener)";
+ static final String IS_FEATURE_SUPPORTED = "BillingClient#isFeatureSupported(String)";
+ static final String GET_CONNECTION_STATE = "BillingClient#getConnectionState()";
+
+ private MethodNames() {}
+ }
+
private static final String TAG = "InAppPurchasePlugin";
private static final String LOAD_PRODUCT_DOC_URL =
"https://github.com/flutter/packages/blob/main/packages/in_app_purchase/in_app_purchase/README.md#loading-products-for-sale";
@@ -56,7 +76,7 @@ class MethodCallHandlerImpl
@Nullable private Activity activity;
private final Context applicationContext;
- private final MethodChannel methodChannel;
+ final MethodChannel methodChannel;
private final HashMap cachedProducts = new HashMap<>();
@@ -111,22 +131,22 @@ void onDetachedFromActivity() {
}
@Override
- public void onMethodCall(MethodCall call, MethodChannel.Result result) {
+ public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
switch (call.method) {
- case InAppPurchasePlugin.MethodNames.IS_READY:
+ case MethodNames.IS_READY:
isReady(result);
break;
- case InAppPurchasePlugin.MethodNames.START_CONNECTION:
+ case MethodNames.START_CONNECTION:
startConnection((int) call.argument("handle"), result);
break;
- case InAppPurchasePlugin.MethodNames.END_CONNECTION:
+ case MethodNames.END_CONNECTION:
endConnection(result);
break;
- case InAppPurchasePlugin.MethodNames.QUERY_PRODUCT_DETAILS:
+ case MethodNames.QUERY_PRODUCT_DETAILS:
List productList = toProductList(call.argument("productList"));
queryProductDetailsAsync(productList, result);
break;
- case InAppPurchasePlugin.MethodNames.LAUNCH_BILLING_FLOW:
+ case MethodNames.LAUNCH_BILLING_FLOW:
launchBillingFlow(
(String) call.argument("product"),
(String) call.argument("offerToken"),
@@ -139,22 +159,22 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) {
: ProrationMode.UNKNOWN_SUBSCRIPTION_UPGRADE_DOWNGRADE_POLICY,
result);
break;
- case InAppPurchasePlugin.MethodNames.QUERY_PURCHASES_ASYNC:
+ case MethodNames.QUERY_PURCHASES_ASYNC:
queryPurchasesAsync((String) call.argument("productType"), result);
break;
- case InAppPurchasePlugin.MethodNames.QUERY_PURCHASE_HISTORY_ASYNC:
+ case MethodNames.QUERY_PURCHASE_HISTORY_ASYNC:
queryPurchaseHistoryAsync((String) call.argument("productType"), result);
break;
- case InAppPurchasePlugin.MethodNames.CONSUME_PURCHASE_ASYNC:
+ case MethodNames.CONSUME_PURCHASE_ASYNC:
consumeAsync((String) call.argument("purchaseToken"), result);
break;
- case InAppPurchasePlugin.MethodNames.ACKNOWLEDGE_PURCHASE:
+ case MethodNames.ACKNOWLEDGE_PURCHASE:
acknowledgePurchase((String) call.argument("purchaseToken"), result);
break;
- case InAppPurchasePlugin.MethodNames.IS_FEATURE_SUPPORTED:
+ case MethodNames.IS_FEATURE_SUPPORTED:
isFeatureSupported((String) call.argument("feature"), result);
break;
- case InAppPurchasePlugin.MethodNames.GET_CONNECTION_STATE:
+ case MethodNames.GET_CONNECTION_STATE:
getConnectionState(result);
break;
default:
@@ -192,18 +212,13 @@ private void queryProductDetailsAsync(
QueryProductDetailsParams.newBuilder().setProductList(productList).build();
billingClient.queryProductDetailsAsync(
params,
- new ProductDetailsResponseListener() {
- @Override
- public void onProductDetailsResponse(
- @NonNull BillingResult billingResult,
- @NonNull List productDetailsList) {
- updateCachedProducts(productDetailsList);
- final Map productDetailsResponse = new HashMap<>();
- productDetailsResponse.put("billingResult", fromBillingResult(billingResult));
- productDetailsResponse.put(
- "productDetailsList", fromProductDetailsList(productDetailsList));
- result.success(productDetailsResponse);
- }
+ (billingResult, productDetailsList) -> {
+ updateCachedProducts(productDetailsList);
+ final Map productDetailsResponse = new HashMap<>();
+ productDetailsResponse.put("billingResult", fromBillingResult(billingResult));
+ productDetailsResponse.put(
+ "productDetailsList", fromProductDetailsList(productDetailsList));
+ result.success(productDetailsResponse);
});
}
@@ -322,12 +337,7 @@ private void consumeAsync(String purchaseToken, final MethodChannel.Result resul
}
ConsumeResponseListener listener =
- new ConsumeResponseListener() {
- @Override
- public void onConsumeResponse(BillingResult billingResult, String outToken) {
- result.success(fromBillingResult(billingResult));
- }
- };
+ (billingResult, outToken) -> result.success(fromBillingResult(billingResult));
ConsumeParams.Builder paramsBuilder =
ConsumeParams.newBuilder().setPurchaseToken(purchaseToken);
@@ -347,18 +357,14 @@ private void queryPurchasesAsync(String productType, MethodChannel.Result result
paramsBuilder.setProductType(productType);
billingClient.queryPurchasesAsync(
paramsBuilder.build(),
- new PurchasesResponseListener() {
- @Override
- public void onQueryPurchasesResponse(
- BillingResult billingResult, List purchasesList) {
- final Map serialized = new HashMap<>();
- // The response code is no longer passed, as part of billing 4.0, so we pass OK here
- // as success is implied by calling this callback.
- serialized.put("responseCode", BillingClient.BillingResponseCode.OK);
- serialized.put("billingResult", fromBillingResult(billingResult));
- serialized.put("purchasesList", fromPurchasesList(purchasesList));
- result.success(serialized);
- }
+ (billingResult, purchasesList) -> {
+ final Map serialized = new HashMap<>();
+ // The response code is no longer passed, as part of billing 4.0, so we pass OK here
+ // as success is implied by calling this callback.
+ serialized.put("responseCode", BillingClient.BillingResponseCode.OK);
+ serialized.put("billingResult", fromBillingResult(billingResult));
+ serialized.put("purchasesList", fromPurchasesList(purchasesList));
+ result.success(serialized);
});
}
@@ -369,16 +375,11 @@ private void queryPurchaseHistoryAsync(String productType, final MethodChannel.R
billingClient.queryPurchaseHistoryAsync(
QueryPurchaseHistoryParams.newBuilder().setProductType(productType).build(),
- new PurchaseHistoryResponseListener() {
- @Override
- public void onPurchaseHistoryResponse(
- BillingResult billingResult, List purchasesList) {
- final Map serialized = new HashMap<>();
- serialized.put("billingResult", fromBillingResult(billingResult));
- serialized.put(
- "purchaseHistoryRecordList", fromPurchaseHistoryRecordList(purchasesList));
- result.success(serialized);
- }
+ (billingResult, purchasesList) -> {
+ final Map serialized = new HashMap<>();
+ serialized.put("billingResult", fromBillingResult(billingResult));
+ serialized.put("purchaseHistoryRecordList", fromPurchaseHistoryRecordList(purchasesList));
+ result.success(serialized);
});
}
@@ -401,7 +402,7 @@ private void startConnection(final int handle, final MethodChannel.Result result
private boolean alreadyFinished = false;
@Override
- public void onBillingSetupFinished(BillingResult billingResult) {
+ public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
if (alreadyFinished) {
Log.d(TAG, "Tried to call onBillingSetupFinished multiple times.");
return;
@@ -416,7 +417,7 @@ public void onBillingSetupFinished(BillingResult billingResult) {
public void onBillingServiceDisconnected() {
final Map arguments = new HashMap<>();
arguments.put("handle", handle);
- methodChannel.invokeMethod(InAppPurchasePlugin.MethodNames.ON_DISCONNECT, arguments);
+ methodChannel.invokeMethod(MethodNames.ON_DISCONNECT, arguments);
}
});
}
@@ -428,13 +429,7 @@ private void acknowledgePurchase(String purchaseToken, final MethodChannel.Resul
AcknowledgePurchaseParams params =
AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchaseToken).build();
billingClient.acknowledgePurchase(
- params,
- new AcknowledgePurchaseResponseListener() {
- @Override
- public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
- result.success(fromBillingResult(billingResult));
- }
- });
+ params, billingResult -> result.success(fromBillingResult(billingResult)));
}
protected void updateCachedProducts(@Nullable List productDetailsList) {
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/PluginPurchaseListener.java b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/PluginPurchaseListener.java
index 54c775d0ad0f..ce919f75d123 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/PluginPurchaseListener.java
+++ b/packages/in_app_purchase/in_app_purchase_android/android/src/main/java/io/flutter/plugins/inapppurchase/PluginPurchaseListener.java
@@ -7,7 +7,9 @@
import static io.flutter.plugins.inapppurchase.Translator.fromBillingResult;
import static io.flutter.plugins.inapppurchase.Translator.fromPurchasesList;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
import com.android.billingclient.api.BillingResult;
import com.android.billingclient.api.Purchase;
import com.android.billingclient.api.PurchasesUpdatedListener;
@@ -19,16 +21,21 @@
class PluginPurchaseListener implements PurchasesUpdatedListener {
private final MethodChannel channel;
+ @VisibleForTesting
+ static final String ON_PURCHASES_UPDATED =
+ "PurchasesUpdatedListener#onPurchasesUpdated(BillingResult, List)";
+
PluginPurchaseListener(MethodChannel channel) {
this.channel = channel;
}
@Override
- public void onPurchasesUpdated(BillingResult billingResult, @Nullable List purchases) {
+ public void onPurchasesUpdated(
+ @NonNull BillingResult billingResult, @Nullable List purchases) {
final Map callbackArgs = new HashMap<>();
callbackArgs.put("billingResult", fromBillingResult(billingResult));
callbackArgs.put("responseCode", billingResult.getResponseCode());
callbackArgs.put("purchasesList", fromPurchasesList(purchases));
- channel.invokeMethod(InAppPurchasePlugin.MethodNames.ON_PURCHASES_UPDATED, callbackArgs);
+ channel.invokeMethod(ON_PURCHASES_UPDATED, callbackArgs);
}
}
diff --git a/packages/in_app_purchase/in_app_purchase_android/android/src/test/java/io/flutter/plugins/inapppurchase/MethodCallHandlerTest.java b/packages/in_app_purchase/in_app_purchase_android/android/src/test/java/io/flutter/plugins/inapppurchase/MethodCallHandlerTest.java
index 585ed646b441..6f105112f1d1 100644
--- a/packages/in_app_purchase/in_app_purchase_android/android/src/test/java/io/flutter/plugins/inapppurchase/MethodCallHandlerTest.java
+++ b/packages/in_app_purchase/in_app_purchase_android/android/src/test/java/io/flutter/plugins/inapppurchase/MethodCallHandlerTest.java
@@ -4,18 +4,18 @@
package io.flutter.plugins.inapppurchase;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.ACKNOWLEDGE_PURCHASE;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.CONSUME_PURCHASE_ASYNC;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.END_CONNECTION;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.IS_FEATURE_SUPPORTED;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.IS_READY;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.LAUNCH_BILLING_FLOW;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.ON_DISCONNECT;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.ON_PURCHASES_UPDATED;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.QUERY_PRODUCT_DETAILS;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.QUERY_PURCHASES_ASYNC;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.QUERY_PURCHASE_HISTORY_ASYNC;
-import static io.flutter.plugins.inapppurchase.InAppPurchasePlugin.MethodNames.START_CONNECTION;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.ACKNOWLEDGE_PURCHASE;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.CONSUME_PURCHASE_ASYNC;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.END_CONNECTION;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.IS_FEATURE_SUPPORTED;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.IS_READY;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.LAUNCH_BILLING_FLOW;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.ON_DISCONNECT;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.QUERY_PRODUCT_DETAILS;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.QUERY_PURCHASES_ASYNC;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.QUERY_PURCHASE_HISTORY_ASYNC;
+import static io.flutter.plugins.inapppurchase.MethodCallHandlerImpl.MethodNames.START_CONNECTION;
+import static io.flutter.plugins.inapppurchase.PluginPurchaseListener.ON_PURCHASES_UPDATED;
import static io.flutter.plugins.inapppurchase.Translator.fromBillingResult;
import static io.flutter.plugins.inapppurchase.Translator.fromProductDetailsList;
import static io.flutter.plugins.inapppurchase.Translator.fromPurchaseHistoryRecordList;
@@ -77,7 +77,6 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
-import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
public class MethodCallHandlerTest {
@@ -604,30 +603,28 @@ public void queryPurchases_returns_success() throws Exception {
CountDownLatch lock = new CountDownLatch(1);
doAnswer(
- new Answer