Skip to content

Commit

Permalink
manual roll and fix (#3903)
Browse files Browse the repository at this point in the history
Manual roll with small fix to green tree

---------

Co-authored-by: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com>
  • Loading branch information
tarrinneal and bparrishMines committed May 5, 2023
1 parent 3ee170b commit 7501f63
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 77 deletions.
2 changes: 1 addition & 1 deletion .ci/flutter_master.version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
db6074ade4e4fde664e6258d671faf356e1b6e85
0b657236cae4c8f1c63cb3025aa9b92cf2795f74
5 changes: 0 additions & 5 deletions packages/camera/camera_android/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,3 @@ dev_dependencies:

flutter:
uses-material-design: true

# FOR TESTING ONLY. DO NOT MERGE.
dependency_overrides:
camera_android:
path: ../../../camera/camera_android
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,10 @@
package io.flutter.embedding.engine.plugins.lifecycle;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

import android.app.Activity;
import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.PluginRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
Expand All @@ -19,6 +17,7 @@

public class FlutterLifecycleAdapterTest {
@Mock Lifecycle lifecycle;
@Mock ActivityPluginBinding mockActivityPluginBinding;

AutoCloseable mockCloseable;

Expand All @@ -34,66 +33,14 @@ public void tearDown() throws Exception {

@Test
public void getActivityLifecycle() {
TestActivityPluginBinding binding = new TestActivityPluginBinding(lifecycle);
when(mockActivityPluginBinding.getLifecycle())
.thenReturn(new HiddenLifecycleReference(lifecycle));

Lifecycle parsedLifecycle = FlutterLifecycleAdapter.getActivityLifecycle(binding);
when(mockActivityPluginBinding.getActivity()).thenReturn(null);

assertEquals(lifecycle, parsedLifecycle);
}

private static final class TestActivityPluginBinding implements ActivityPluginBinding {
private final Lifecycle lifecycle;

TestActivityPluginBinding(Lifecycle lifecycle) {
this.lifecycle = lifecycle;
}

@NonNull
public Object getLifecycle() {
return new HiddenLifecycleReference(lifecycle);
}

@Override
public Activity getActivity() {
return null;
}

@Override
public void addRequestPermissionsResultListener(
@NonNull PluginRegistry.RequestPermissionsResultListener listener) {}

@Override
public void removeRequestPermissionsResultListener(
@NonNull PluginRegistry.RequestPermissionsResultListener listener) {}
Lifecycle parsedLifecycle =
FlutterLifecycleAdapter.getActivityLifecycle(mockActivityPluginBinding);

@Override
public void addActivityResultListener(
@NonNull PluginRegistry.ActivityResultListener listener) {}

@Override
public void removeActivityResultListener(
@NonNull PluginRegistry.ActivityResultListener listener) {}

@Override
public void addOnNewIntentListener(@NonNull PluginRegistry.NewIntentListener listener) {}

@Override
public void removeOnNewIntentListener(@NonNull PluginRegistry.NewIntentListener listener) {}

@Override
public void addOnUserLeaveHintListener(
@NonNull PluginRegistry.UserLeaveHintListener listener) {}

@Override
public void removeOnUserLeaveHintListener(
@NonNull PluginRegistry.UserLeaveHintListener listener) {}

@Override
public void addOnSaveStateListener(
@NonNull ActivityPluginBinding.OnSaveInstanceStateListener listener) {}

@Override
public void removeOnSaveStateListener(
@NonNull ActivityPluginBinding.OnSaveInstanceStateListener listener) {}
assertEquals(lifecycle, parsedLifecycle);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,25 +51,29 @@ void main() {
expect(stubPlatform.countPreviousCalls(startConnectionCall), equals(1));
});

test('waits for connection before executing the operations', () {
bool called1 = false;
bool called2 = false;
test('waits for connection before executing the operations', () async {
final Completer<void> calledCompleter1 = Completer<void>();
final Completer<void> calledCompleter2 = Completer<void>();
manager.runWithClient((BillingClient _) async {
called1 = true;
calledCompleter1.complete();
return const BillingResultWrapper(responseCode: BillingResponse.ok);
});
manager.runWithClientNonRetryable(
(BillingClient _) async => called2 = true,
(BillingClient _) async => calledCompleter2.complete(),
);
expect(called1, equals(false));
expect(called2, equals(false));
expect(calledCompleter1.isCompleted, equals(false));
expect(calledCompleter1.isCompleted, equals(false));
connectedCompleter.complete();
expect(called1, equals(true));
expect(called2, equals(true));
await expectLater(calledCompleter1.future, completes);
await expectLater(calledCompleter2.future, completes);
});

test('re-connects when client sends onBillingServiceDisconnected', () {
test('re-connects when client sends onBillingServiceDisconnected',
() async {
connectedCompleter.complete();
// Ensures all asynchronous connected code finishes.
await manager.runWithClientNonRetryable((_) async {});

manager.client.callHandler(
const MethodCall(onBillingServiceDisconnectedCallback,
<String, dynamic>{'handle': 0}),
Expand Down

0 comments on commit 7501f63

Please sign in to comment.