Skip to content

Commit fd1b46f

Browse files
committed
fix(crashlytics): ensure main thread execution for test event success callback
1 parent e7a95e5 commit fd1b46f

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

packages/firebase_crashlytics/firebase_crashlytics/android/src/main/java/io/flutter/plugins/firebase/crashlytics/FlutterFirebaseCrashlyticsPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ private Task<Map<String, Object>> didCrashOnPreviousExecution() {
150150

151151
private Task<Void> recordError(final Map<String, Object> arguments) {
152152
TaskCompletionSource<Void> taskCompletionSource = new TaskCompletionSource<>();
153+
Handler mainHandler = new Handler(Looper.getMainLooper());
153154

154155
cachedThreadPool.execute(
155156
() -> {
@@ -178,7 +179,7 @@ private Task<Void> recordError(final Map<String, Object> arguments) {
178179
if (reason != null) {
179180
final String crashlyticsErrorReason = "thrown" + reason;
180181
if (isRunningInCI() && testEventSink != null) {
181-
testEventSink.success(crashlyticsErrorReason);
182+
mainHandler.post(() -> testEventSink.success(crashlyticsErrorReason));
182183
}
183184
// Set a "reason" (to match iOS) to show where the exception was thrown.
184185
crashlytics.setCustomKey(Constants.FLUTTER_ERROR_REASON, crashlyticsErrorReason);

tests/integration_test/firebase_crashlytics/firebase_crashlytics_e2e_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ void main() {
117117
reason: 'foo reason',
118118
);
119119

120+
await Future.delayed(const Duration(seconds: 3));
121+
120122
expect(capturedEvents, ['thrown foooo reason']);
121123

122124
},

0 commit comments

Comments
 (0)