@@ -6,7 +6,7 @@ import io.sentry.util.ExceptionUtils
66import java.util.IdentityHashMap
77import org.jetbrains.annotations.TestOnly
88
9- /* * Translates app-defined back stack entries into a list of input-ordered [Route]s. */
9+ /* * Translates app-defined back stack entries into input-ordered [Route]s. */
1010internal class RouteTranslator <T : Any >(
1111 private val resolvers : () -> RouteResolvers <T >,
1212 private val logger : ILogger ,
@@ -16,7 +16,12 @@ internal class RouteTranslator<T : Any>(
1616 internal const val UNKNOWN_ROUTE_NAME = " /unknown"
1717 }
1818
19- /* * Translates the provided [backStackEntries] into [Route]s and returns them in input order. */
19+ /* *
20+ * Translates the provided [backStackEntries] into [Route]s and returns them in input order.
21+ *
22+ * Callers should provide entries newest first so the shared argument budget preserves data for
23+ * the destinations most relevant to the current navigation state.
24+ */
2025 fun translate (backStackEntries : List <T >): List <Route > {
2126 val warningState = WarningState ()
2227 val sanitizer = ArgumentSanitizer (logger, warningState)
@@ -49,6 +54,7 @@ internal class RouteTranslator<T : Any>(
4954 try {
5055 resolvers.invoke().getName(backStackEntry)
5156 } catch (t: Throwable ) {
57+ // Route name extractors are host app callbacks.
5258 ExceptionUtils .rethrowIfFatal(t)
5359 warningState.logNameExtractorFailureWarning(logger, t)
5460 return UNKNOWN_ROUTE_NAME
@@ -80,6 +86,7 @@ internal class RouteTranslator<T : Any>(
8086 try {
8187 resolvers.invoke().getArguments(backStackEntry) ? : return emptyMap()
8288 } catch (t: Throwable ) {
89+ // Route argument extractors are host app callbacks.
8390 ExceptionUtils .rethrowIfFatal(t)
8491 logger.log(
8592 WARNING ,
@@ -129,6 +136,7 @@ internal class RouteTranslator<T : Any>(
129136 logger.log(WARNING , drop.warning)
130137 emptyMap()
131138 } catch (t: Throwable ) {
139+ // Extracted maps may invoke host app code while iterating or stringifying values.
132140 ExceptionUtils .rethrowIfFatal(t)
133141 logger.log(WARNING , STRUCTURE_WARNING , t)
134142 emptyMap()
0 commit comments