Bug 1870642 - Fix Collection deleted snackbar that overlaps the toolbar r=android...
[gecko.git] / third_party / rust / uniffi_bindgen / src / bindings / kotlin / templates / ObjectCleanerHelperJvm.kt
blobc43bc167fca761eac2a739d2ea62b9f6fddd91ae
1 private fun UniffiCleaner.Companion.create(): UniffiCleaner =
2     try {
3         // For safety's sake: if the library hasn't been run in android_cleaner = true
4         // mode, but is being run on Android, then we still need to think about
5         // Android API versions.
6         // So we check if java.lang.ref.Cleaner is there, and use that…
7         java.lang.Class.forName("java.lang.ref.Cleaner")
8         JavaLangRefCleaner()
9     } catch (e: ClassNotFoundException) {
10         // … otherwise, fallback to the JNA cleaner.
11         UniffiJnaCleaner()
12     }
14 private class JavaLangRefCleaner : UniffiCleaner {
15     val cleaner = java.lang.ref.Cleaner.create()
17     override fun register(value: Any, cleanUpTask: Runnable): UniffiCleaner.Cleanable =
18         JavaLangRefCleanable(cleaner.register(value, cleanUpTask))
21 private class JavaLangRefCleanable(
22     val cleanable: java.lang.ref.Cleaner.Cleanable
23 ) : UniffiCleaner.Cleanable {
24     override fun clean() = cleanable.clean()