Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 43d9b5a

Browse files
author
Chris Yang
authored
[in_app_purchase] Android: fix potential crash when casting in v1 embedding. (#2585)
1 parent 4d91c96 commit 43d9b5a

File tree

5 files changed

+47
-10
lines changed

5 files changed

+47
-10
lines changed

packages/in_app_purchase/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.3.1+2
2+
3+
* Fix potential casting crash on Android v1 embedding when registering life cycle callbacks.
4+
* Remove hard-coded legacy xcode build setting.
5+
16
## 0.3.1+1
27

38
* Add `pedantic` to dev_dependency.

packages/in_app_purchase/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ static final class MethodNames {
5050
public static void registerWith(Registrar registrar) {
5151
InAppPurchasePlugin plugin = new InAppPurchasePlugin();
5252
plugin.setupMethodChannel(registrar.activity(), registrar.messenger(), registrar.context());
53-
((Application) registrar.context())
53+
((Application) registrar.context().getApplicationContext())
5454
.registerActivityLifecycleCallbacks(plugin.methodCallHandler);
5555
}
5656

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright 2019 The Chromium Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
package io.flutter.plugins.inapppurchase;
6+
7+
import static org.mockito.Mockito.when;
8+
9+
import android.app.Activity;
10+
import android.app.Application;
11+
import android.content.Context;
12+
import io.flutter.plugin.common.BinaryMessenger;
13+
import io.flutter.plugin.common.PluginRegistry;
14+
import org.junit.Before;
15+
import org.junit.Test;
16+
import org.mockito.Mock;
17+
import org.mockito.MockitoAnnotations;
18+
19+
public class InAppPurchasePluginTest {
20+
@Mock Activity activity;
21+
@Mock Context context;
22+
@Mock PluginRegistry.Registrar mockRegistrar; // For v1 embedding
23+
@Mock BinaryMessenger mockMessenger;
24+
@Mock Application mockApplication;
25+
26+
@Before
27+
public void setUp() {
28+
MockitoAnnotations.initMocks(this);
29+
when(mockRegistrar.activity()).thenReturn(activity);
30+
when(mockRegistrar.messenger()).thenReturn(mockMessenger);
31+
when(mockRegistrar.context()).thenReturn(context);
32+
}
33+
34+
@Test
35+
public void registerWith_doNotCrashWhenRegisterContextIsActivity_V1Embedding() {
36+
when(mockRegistrar.context()).thenReturn(activity);
37+
when(activity.getApplicationContext()).thenReturn(mockApplication);
38+
InAppPurchasePlugin.registerWith(mockRegistrar);
39+
}
40+
}

packages/in_app_purchase/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/in_app_purchase/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: in_app_purchase
22
description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
33
homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase
4-
version: 0.3.1+1
4+
version: 0.3.1+2
55

66

77
dependencies:

0 commit comments

Comments
 (0)