Expose ComposeNavigator internal APIs publically

We want to enable implementations of ComposeNavigator by exposing backstack and #onTransitionComplete APIs publically.

Test: n/a
Bug: 257519195
Relnote: "You can now access the backstack associated with ComposeNavigator by calling ComposeNavigator.backStack. onTransitionComplete() callback is also now a public API to mark a NavBackStackEntry as transition complete after a navigate/popBackStack operation."
Change-Id: I718dbcf2549d755b283292002cdfd9df9dc4bf26
diff --git a/navigation/navigation-compose/api/current.txt b/navigation/navigation-compose/api/current.txt
index d46757e..73c5c5d 100644
--- a/navigation/navigation-compose/api/current.txt
+++ b/navigation/navigation-compose/api/current.txt
@@ -4,6 +4,9 @@
   @androidx.navigation.Navigator.Name("composable") public final class ComposeNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.ComposeNavigator.Destination> {
     ctor public ComposeNavigator();
     method public androidx.navigation.compose.ComposeNavigator.Destination createDestination();
+    method public kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public void onTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
   }
 
   @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
diff --git a/navigation/navigation-compose/api/public_plus_experimental_current.txt b/navigation/navigation-compose/api/public_plus_experimental_current.txt
index d46757e..73c5c5d 100644
--- a/navigation/navigation-compose/api/public_plus_experimental_current.txt
+++ b/navigation/navigation-compose/api/public_plus_experimental_current.txt
@@ -4,6 +4,9 @@
   @androidx.navigation.Navigator.Name("composable") public final class ComposeNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.ComposeNavigator.Destination> {
     ctor public ComposeNavigator();
     method public androidx.navigation.compose.ComposeNavigator.Destination createDestination();
+    method public kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public void onTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
   }
 
   @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
diff --git a/navigation/navigation-compose/api/restricted_current.txt b/navigation/navigation-compose/api/restricted_current.txt
index d46757e..73c5c5d 100644
--- a/navigation/navigation-compose/api/restricted_current.txt
+++ b/navigation/navigation-compose/api/restricted_current.txt
@@ -4,6 +4,9 @@
   @androidx.navigation.Navigator.Name("composable") public final class ComposeNavigator extends androidx.navigation.Navigator<androidx.navigation.compose.ComposeNavigator.Destination> {
     ctor public ComposeNavigator();
     method public androidx.navigation.compose.ComposeNavigator.Destination createDestination();
+    method public kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> getBackStack();
+    method public void onTransitionComplete(androidx.navigation.NavBackStackEntry entry);
+    property public final kotlinx.coroutines.flow.StateFlow<java.util.List<androidx.navigation.NavBackStackEntry>> backStack;
   }
 
   @androidx.navigation.NavDestination.ClassType(Composable::class) public static final class ComposeNavigator.Destination extends androidx.navigation.NavDestination {
diff --git a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt
index 84a8da4..34f9dcf 100644
--- a/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt
+++ b/navigation/navigation-compose/src/main/java/androidx/navigation/compose/ComposeNavigator.kt
@@ -39,7 +39,7 @@
     /**
      * Get the back stack from the [state].
      */
-    internal val backStack get() = state.backStack
+    public val backStack get() = state.backStack
 
     override fun navigate(
         entries: List<NavBackStackEntry>,
@@ -60,14 +60,16 @@
     }
 
     /**
-     * Callback that removes the given [NavBackStackEntry] from the [map of the transitions in
-     * progress][transitionsInProgress]. This should be called in conjunction with [navigate] and
-     * [popBackStack] as those call are responsible for adding entries to [transitionsInProgress].
+     * Callback to mark a navigation in transition as complete.
+     *
+     * This should be called in conjunction with [navigate] and [popBackStack] as those
+     * calls merely start a transition to the target destination, and requires manually marking
+     * the transition as complete by calling this method.
      *
      * Failing to call this method could result in entries being prevented from reaching their
-     * final [Lifecycle.State]}.
+     * final [Lifecycle.State].
      */
-    internal fun onTransitionComplete(entry: NavBackStackEntry) {
+    public fun onTransitionComplete(entry: NavBackStackEntry) {
         state.markTransitionComplete(entry)
     }