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

Commit 99e31b4

Browse files
committed
update test
1 parent d9033d8 commit 99e31b4

File tree

2 files changed

+70
-31
lines changed

2 files changed

+70
-31
lines changed

shell/platform/android/io/flutter/embedding/android/FlutterActivity.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,9 +681,14 @@ public void unregisterOnBackInvokedCallback() {
681681
}
682682
}
683683

684-
final OnBackInvokedCallback onBackInvokedCallback =
684+
private final OnBackInvokedCallback onBackInvokedCallback =
685685
Build.VERSION.SDK_INT < 33 ? null : createOnBackInvokedCallback();
686686

687+
@VisibleForTesting
688+
protected OnBackInvokedCallback getOnBackInvokedCallback() {
689+
return onBackInvokedCallback;
690+
}
691+
687692
@NonNull
688693
@TargetApi(33)
689694
@RequiresApi(33)

shell/platform/android/test/io/flutter/embedding/android/FlutterActivityTest.java

Lines changed: 64 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import android.window.OnBackInvokedCallback;
2828
import androidx.annotation.NonNull;
2929
import androidx.annotation.Nullable;
30+
import androidx.annotation.RequiresApi;
3031
import androidx.lifecycle.DefaultLifecycleObserver;
3132
import androidx.lifecycle.LifecycleOwner;
3233
import androidx.test.core.app.ApplicationProvider;
@@ -126,69 +127,68 @@ public void itUnregistersOnBackInvokedCallbackOnRelease() {
126127
}
127128

128129
@Test
129-
@Config(maxSdk = Build.VERSION_CODES.S_V2)
130+
@Config(sdk = Build.VERSION_CODES.S_V2)
130131
public void onBackInvokedCallbackIsNullForSdk32OrLower() {
131132
Intent intent = FlutterActivity.createDefaultIntent(ctx);
132133
ActivityController<FlutterActivity> activityController =
133134
Robolectric.buildActivity(FlutterActivity.class, intent);
134135
FlutterActivity flutterActivity = activityController.get();
135136

136-
flutterActivity.onCreate(null);
137-
138137
assertNull(
139138
"onBackInvokedCallback should be null for SDK 32 or lower",
140-
flutterActivity.onBackInvokedCallback);
139+
flutterActivity.getOnBackInvokedCallback());
141140
}
142141

143142
@Test
144143
@Config(sdk = Build.VERSION_CODES.TIRAMISU)
145144
@TargetApi(Build.VERSION_CODES.TIRAMISU)
146145
public void onBackInvokedCallbackCallsOnBackPressedForSdk33() {
147-
Intent intent = FlutterActivityWithReportFullyDrawn.createDefaultIntent(ctx);
148-
ActivityController<FlutterActivityWithReportFullyDrawn> activityController =
149-
Robolectric.buildActivity(FlutterActivityWithReportFullyDrawn.class, intent);
150-
FlutterActivityWithReportFullyDrawn activity = spy(activityController.get());
151-
152-
activity.onCreate(null);
153-
154-
assertNotNull(
155-
"onBackInvokedCallback should not be null for SDK 33", activity.onBackInvokedCallback);
146+
Intent intent = FlutterActivityWithMockBackInvokedHandling.createDefaultIntent(ctx);
147+
ActivityController<FlutterActivityWithMockBackInvokedHandling> activityController =
148+
Robolectric.buildActivity(FlutterActivityWithMockBackInvokedHandling.class, intent);
149+
FlutterActivityWithMockBackInvokedHandling activity = activityController.get();
156150

157-
OnBackInvokedCallback callback = activity.onBackInvokedCallback;
151+
OnBackInvokedCallback callback = activity.getOnBackInvokedCallback();
152+
assertNotNull("onBackInvokedCallback should not be null for SDK 33", callback);
158153

159154
callback.onBackInvoked();
160-
verify(activity, times(1)).onBackPressed();
155+
assertEquals("Expected onBackPressed to be called 1 times", 1, activity.onBackPressedCounter);
161156
}
162157

163158
@Test
164159
@Config(sdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
165160
@TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
166161
public void itHandlesOnBackAnimationCallbackAsExpectedForSdk34OrHigher() {
167-
Intent intent = FlutterActivityWithReportFullyDrawn.createDefaultIntent(ctx);
168-
ActivityController<FlutterActivityWithReportFullyDrawn> activityController =
169-
Robolectric.buildActivity(FlutterActivityWithReportFullyDrawn.class, intent);
170-
FlutterActivityWithReportFullyDrawn activity = spy(activityController.get());
171-
172-
activity.onCreate(null);
162+
Intent intent = FlutterActivityWithMockBackInvokedHandling.createDefaultIntent(ctx);
163+
ActivityController<FlutterActivityWithMockBackInvokedHandling> activityController =
164+
Robolectric.buildActivity(FlutterActivityWithMockBackInvokedHandling.class, intent);
165+
FlutterActivityWithMockBackInvokedHandling activity = activityController.get();
173166

174167
assertTrue(
175168
"onBackInvokedCallback should be an instance of OnBackAnimationCallback for SDK 34 or higher",
176-
activity.onBackInvokedCallback instanceof OnBackAnimationCallback);
169+
activity.getOnBackInvokedCallback() instanceof OnBackAnimationCallback);
177170

178-
OnBackAnimationCallback callback = (OnBackAnimationCallback) activity.onBackInvokedCallback;
171+
OnBackAnimationCallback callback =
172+
(OnBackAnimationCallback) activity.getOnBackInvokedCallback();
179173

180174
BackEvent mockBackEvent = mock(BackEvent.class);
181175
callback.onBackStarted(mockBackEvent);
182-
verify(activity, times(1)).startBackGesture(mockBackEvent);
176+
assertEquals(
177+
"Expected startBackGesture to be called 1 times", 1, activity.startBackGestureCounter);
183178

184179
callback.onBackProgressed(mockBackEvent);
185-
verify(activity, times(1)).updateBackGestureProgress(mockBackEvent);
180+
assertEquals(
181+
"Expected updateBackGestureProgress to be called 1 times",
182+
1,
183+
activity.updateBackGestureProgressCounter);
186184

187185
callback.onBackInvoked();
188-
verify(activity, times(1)).commitBackGesture();
186+
assertEquals(
187+
"Expected commitBackGesture to be called 1 times", 1, activity.commitBackGestureCounter);
189188

190189
callback.onBackCancelled();
191-
verify(activity, times(1)).cancelBackGesture();
190+
assertEquals(
191+
"Expected cancelBackGesture to be called 1 times", 1, activity.cancelBackGestureCounter);
192192
}
193193

194194
@Test
@@ -637,12 +637,46 @@ public void resetFullyDrawn() {
637637
}
638638
}
639639

640-
private class FlutterActivityWithMockBackInvokedHandling extends FlutterActivity {
640+
private static class FlutterActivityWithMockBackInvokedHandling extends FlutterActivity {
641+
642+
int onBackPressedCounter = 0;
643+
int startBackGestureCounter = 0;
644+
int updateBackGestureProgressCounter = 0;
645+
int commitBackGestureCounter = 0;
646+
int cancelBackGestureCounter = 0;
647+
648+
@Override
649+
public void onBackPressed() {
650+
onBackPressedCounter++;
651+
}
652+
653+
@TargetApi(34)
654+
@RequiresApi(34)
655+
@Override
656+
public void startBackGesture(@NonNull BackEvent backEvent) {
657+
startBackGestureCounter++;
658+
}
659+
660+
@TargetApi(34)
661+
@RequiresApi(34)
641662
@Override
642-
public void registerOnBackInvokedCallback() {}
663+
public void updateBackGestureProgress(@NonNull BackEvent backEvent) {
664+
updateBackGestureProgressCounter++;
665+
}
643666

667+
@TargetApi(34)
668+
@RequiresApi(34)
644669
@Override
645-
public void unregisterOnBackInvokedCallback() {}
670+
public void commitBackGesture() {
671+
commitBackGestureCounter++;
672+
}
673+
674+
@TargetApi(34)
675+
@RequiresApi(34)
676+
@Override
677+
public void cancelBackGesture() {
678+
cancelBackGestureCounter++;
679+
}
646680
}
647681

648682
private static final class FakeFlutterPlugin

0 commit comments

Comments
 (0)