Skip to content

Commit 91a74cc

Browse files
authored
Add a kotlin method for recording an exception with custom keys (#6546)
1 parent 71ceb1b commit 91a74cc

File tree

4 files changed

+29
-9
lines changed

4 files changed

+29
-9
lines changed

firebase-crashlytics/api.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ package com.google.firebase.crashlytics {
3939

4040
public final class FirebaseCrashlyticsKt {
4141
method @NonNull public static com.google.firebase.crashlytics.FirebaseCrashlytics getCrashlytics(@NonNull com.google.firebase.Firebase);
42+
method public static void recordException(@NonNull com.google.firebase.crashlytics.FirebaseCrashlytics, @NonNull Throwable throwable, @NonNull kotlin.jvm.functions.Function1<? super com.google.firebase.crashlytics.KeyValueBuilder,kotlin.Unit> init);
4243
method public static void setCustomKeys(@NonNull com.google.firebase.crashlytics.FirebaseCrashlytics, @NonNull kotlin.jvm.functions.Function1<? super com.google.firebase.crashlytics.KeyValueBuilder,kotlin.Unit> init);
4344
}
4445

4546
public final class KeyValueBuilder {
46-
ctor public KeyValueBuilder(@NonNull com.google.firebase.crashlytics.FirebaseCrashlytics crashlytics);
47+
ctor @Deprecated public KeyValueBuilder(@NonNull com.google.firebase.crashlytics.FirebaseCrashlytics crashlytics);
4748
method public void key(@NonNull String key, boolean value);
4849
method public void key(@NonNull String key, double value);
4950
method public void key(@NonNull String key, float value);

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/CrashlyticsTests.kt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,36 @@ class CrashlyticsTests {
6262
@Test
6363
fun keyValueBuilder() {
6464
val keyValueBuilder = KeyValueBuilder()
65-
keyValueBuilder.key("hello", "world")
66-
keyValueBuilder.key("hello2", 23)
67-
keyValueBuilder.key("hello3", 0.1)
65+
keyValueBuilder.key("string", "world")
66+
keyValueBuilder.key("int", Int.MAX_VALUE)
67+
keyValueBuilder.key("float", Float.MAX_VALUE)
68+
keyValueBuilder.key("boolean", true)
69+
keyValueBuilder.key("double", Double.MAX_VALUE)
70+
keyValueBuilder.key("long", Long.MAX_VALUE)
6871

6972
val result: Map<String, String> = keyValueBuilder.build().keysAndValues
7073

71-
assertThat(result).containsExactly("hello", "world", "hello2", "23", "hello3", "0.1")
74+
val expectedKeys =
75+
mapOf(
76+
"string" to "world",
77+
"int" to "${Int.MAX_VALUE}",
78+
"float" to "${Float.MAX_VALUE}",
79+
"boolean" to "${true}",
80+
"double" to "${Double.MAX_VALUE}",
81+
"long" to "${Long.MAX_VALUE}"
82+
)
83+
assertThat(result).isEqualTo(expectedKeys)
7284
}
7385

7486
@Test
7587
fun keyValueBuilder_withCrashlyticsInstance() {
7688
@Suppress("DEPRECATION") val keyValueBuilder = KeyValueBuilder(Firebase.crashlytics)
77-
keyValueBuilder.key("hello", "world")
78-
keyValueBuilder.key("hello2", 23)
79-
keyValueBuilder.key("hello3", 0.1)
89+
keyValueBuilder.key("string", "world")
90+
keyValueBuilder.key("int", Int.MAX_VALUE)
91+
keyValueBuilder.key("float", Float.MAX_VALUE)
92+
keyValueBuilder.key("boolean", true)
93+
keyValueBuilder.key("double", Double.MAX_VALUE)
94+
keyValueBuilder.key("long", Long.MAX_VALUE)
8095

8196
val result: Map<String, String> = keyValueBuilder.build().keysAndValues
8297

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/FirebaseCrashlytics.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ val Firebase.crashlytics: FirebaseCrashlytics
3030
fun FirebaseCrashlytics.setCustomKeys(init: KeyValueBuilder.() -> Unit) =
3131
setCustomKeys(KeyValueBuilder().apply(init).build())
3232

33+
/** Records a non-fatal report to send to Crashlytics with additional custom keys */
34+
fun FirebaseCrashlytics.recordException(throwable: Throwable, init: KeyValueBuilder.() -> Unit) =
35+
recordException(throwable, KeyValueBuilder().apply(init).build())
36+
3337
/** @suppress */
3438
@Keep
3539
internal class FirebaseCrashlyticsKtxRegistrar : ComponentRegistrar {

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/KeyValueBuilder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package com.google.firebase.crashlytics
1818

19-
/** Helper class to enable convenient syntax in [setCustomKeys] */
19+
/** Helper class to enable convenient syntax in [setCustomKeys] and [recordException] */
2020
class KeyValueBuilder
2121
private constructor(
2222
private val crashlytics: FirebaseCrashlytics?,

0 commit comments

Comments
 (0)