Merge "Graduate experimental adaptive:adaptive APIs" into androidx-main
diff --git a/compose/material3/adaptive/adaptive/api/current.txt b/compose/material3/adaptive/adaptive/api/current.txt
index b7dcb35..6fe8f2a 100644
--- a/compose/material3/adaptive/adaptive/api/current.txt
+++ b/compose/material3/adaptive/adaptive/api/current.txt
@@ -6,15 +6,15 @@
   }
 
   public final class AndroidWindowAdaptiveInfo_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.util.List<androidx.window.layout.FoldingFeature>> collectFoldingFeaturesAsState();
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.WindowAdaptiveInfo currentWindowAdaptiveInfo();
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static long currentWindowSize();
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.util.List<androidx.window.layout.FoldingFeature>> collectFoldingFeaturesAsState();
+    method @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.WindowAdaptiveInfo currentWindowAdaptiveInfo();
+    method @androidx.compose.runtime.Composable public static long currentWindowSize();
   }
 
   @SuppressCompatibility @kotlin.RequiresOptIn(message="This material3 adaptive API is experimental and is likely to change or to be" + "removed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalMaterial3AdaptiveApi {
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Immutable public final class HingeInfo {
+  @androidx.compose.runtime.Immutable public final class HingeInfo {
     ctor public HingeInfo(androidx.compose.ui.geometry.Rect bounds, boolean isVertical, boolean isSeparating, boolean isOccluding);
     method public androidx.compose.ui.geometry.Rect getBounds();
     method public boolean isOccluding();
@@ -26,7 +26,7 @@
     property public final boolean isVertical;
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Immutable public final class Posture {
+  @androidx.compose.runtime.Immutable public final class Posture {
     ctor public Posture(optional boolean isTabletop, optional java.util.List<androidx.compose.material3.adaptive.HingeInfo> hingeList);
     method public java.util.List<androidx.compose.material3.adaptive.HingeInfo> getHingeList();
     method public boolean isTabletop();
@@ -43,7 +43,7 @@
     method public static java.util.List<androidx.compose.ui.geometry.Rect> getSeparatingVerticalHingeBounds(androidx.compose.material3.adaptive.Posture);
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Immutable public final class WindowAdaptiveInfo {
+  @androidx.compose.runtime.Immutable public final class WindowAdaptiveInfo {
     ctor public WindowAdaptiveInfo(androidx.window.core.layout.WindowSizeClass windowSizeClass, androidx.compose.material3.adaptive.Posture windowPosture);
     method public androidx.compose.material3.adaptive.Posture getWindowPosture();
     method public androidx.window.core.layout.WindowSizeClass getWindowSizeClass();
diff --git a/compose/material3/adaptive/adaptive/api/restricted_current.txt b/compose/material3/adaptive/adaptive/api/restricted_current.txt
index b7dcb35..6fe8f2a 100644
--- a/compose/material3/adaptive/adaptive/api/restricted_current.txt
+++ b/compose/material3/adaptive/adaptive/api/restricted_current.txt
@@ -6,15 +6,15 @@
   }
 
   public final class AndroidWindowAdaptiveInfo_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.util.List<androidx.window.layout.FoldingFeature>> collectFoldingFeaturesAsState();
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.WindowAdaptiveInfo currentWindowAdaptiveInfo();
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static long currentWindowSize();
+    method @androidx.compose.runtime.Composable public static androidx.compose.runtime.State<java.util.List<androidx.window.layout.FoldingFeature>> collectFoldingFeaturesAsState();
+    method @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.WindowAdaptiveInfo currentWindowAdaptiveInfo();
+    method @androidx.compose.runtime.Composable public static long currentWindowSize();
   }
 
   @SuppressCompatibility @kotlin.RequiresOptIn(message="This material3 adaptive API is experimental and is likely to change or to be" + "removed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention.BINARY) public @interface ExperimentalMaterial3AdaptiveApi {
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Immutable public final class HingeInfo {
+  @androidx.compose.runtime.Immutable public final class HingeInfo {
     ctor public HingeInfo(androidx.compose.ui.geometry.Rect bounds, boolean isVertical, boolean isSeparating, boolean isOccluding);
     method public androidx.compose.ui.geometry.Rect getBounds();
     method public boolean isOccluding();
@@ -26,7 +26,7 @@
     property public final boolean isVertical;
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Immutable public final class Posture {
+  @androidx.compose.runtime.Immutable public final class Posture {
     ctor public Posture(optional boolean isTabletop, optional java.util.List<androidx.compose.material3.adaptive.HingeInfo> hingeList);
     method public java.util.List<androidx.compose.material3.adaptive.HingeInfo> getHingeList();
     method public boolean isTabletop();
@@ -43,7 +43,7 @@
     method public static java.util.List<androidx.compose.ui.geometry.Rect> getSeparatingVerticalHingeBounds(androidx.compose.material3.adaptive.Posture);
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Immutable public final class WindowAdaptiveInfo {
+  @androidx.compose.runtime.Immutable public final class WindowAdaptiveInfo {
     ctor public WindowAdaptiveInfo(androidx.window.core.layout.WindowSizeClass windowSizeClass, androidx.compose.material3.adaptive.Posture windowPosture);
     method public androidx.compose.material3.adaptive.Posture getWindowPosture();
     method public androidx.window.core.layout.WindowSizeClass getWindowSizeClass();
diff --git a/compose/material3/adaptive/adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/AndroidWindowAdaptiveInfo.android.kt b/compose/material3/adaptive/adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/AndroidWindowAdaptiveInfo.android.kt
index c3f3b7f..1e9ca7c 100644
--- a/compose/material3/adaptive/adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/AndroidWindowAdaptiveInfo.android.kt
+++ b/compose/material3/adaptive/adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/AndroidWindowAdaptiveInfo.android.kt
@@ -32,7 +32,7 @@
 import androidx.window.layout.WindowMetricsCalculator
 import kotlinx.coroutines.flow.map
 
-@ExperimentalMaterial3AdaptiveApi
+@OptIn(ExperimentalMaterial3AdaptiveApi::class)
 @Composable
 actual fun currentWindowAdaptiveInfo(): WindowAdaptiveInfo {
     val windowSize = with(LocalDensity.current) {
@@ -49,7 +49,6 @@
  *
  * @return an [IntSize] that represents the current window size.
  */
-@ExperimentalMaterial3AdaptiveApi
 @Composable
 fun currentWindowSize(): IntSize {
     // Observe view configuration changes and recalculate the size class on each change. We can't
@@ -70,7 +69,6 @@
  *
  * @return a [State] of a [FoldingFeature] list.
  */
-@ExperimentalMaterial3AdaptiveApi
 @Composable
 fun collectFoldingFeaturesAsState(): State<List<FoldingFeature>> {
     val context = LocalContext.current
diff --git a/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/Posture.kt b/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/Posture.kt
index efbd340..1510287 100644
--- a/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/Posture.kt
+++ b/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/Posture.kt
@@ -37,7 +37,6 @@
  *           show software keyboard or other controls in the bottom half of the window.
  * @property hingeList a list of all hinges that are relevant to the posture.
  */
-@ExperimentalMaterial3AdaptiveApi
 @Immutable
 class Posture(
     val isTabletop: Boolean = false,
@@ -67,39 +66,33 @@
 /**
  * Returns the list of vertical hinge bounds that are separating.
  */
-@ExperimentalMaterial3AdaptiveApi
 val Posture.separatingVerticalHingeBounds get() = hingeList.getBounds { isVertical && isSeparating }
 
 /**
  *  Returns the list of vertical hinge bounds that are occluding.
  */
-@ExperimentalMaterial3AdaptiveApi
 val Posture.occludingVerticalHingeBounds get() = hingeList.getBounds { isVertical && isOccluding }
 
 /**
  *  Returns the list of all vertical hinge bounds.
  */
-@ExperimentalMaterial3AdaptiveApi
 val Posture.allVerticalHingeBounds get() = hingeList.getBounds { isVertical }
 
 /**
  * Returns the list of horizontal hinge bounds that are separating.
  */
-@ExperimentalMaterial3AdaptiveApi
 val Posture.separatingHorizontalHingeBounds
     get() = hingeList.getBounds { !isVertical && isSeparating }
 
 /**
  * Returns the list of horizontal hinge bounds that are occluding.
  */
-@ExperimentalMaterial3AdaptiveApi
 val Posture.occludingHorizontalHingeBounds
     get() = hingeList.getBounds { !isVertical && isOccluding }
 
 /**
  *  Returns the list of all horizontal hinge bounds.
  */
-@ExperimentalMaterial3AdaptiveApi
 val Posture.allHorizontalHingeBounds
     get() = hingeList.getBounds { !isVertical }
 
@@ -113,7 +106,6 @@
  * @param isSeparating `true` if the hinge creates two logical display areas.
  * @param isOccluding `true` if the hinge conceals part of the display.
  */
-@ExperimentalMaterial3AdaptiveApi
 @Immutable
 class HingeInfo(
     val bounds: Rect,
@@ -147,7 +139,6 @@
     }
 }
 
-@ExperimentalMaterial3AdaptiveApi
 private inline fun List<HingeInfo>.getBounds(predicate: HingeInfo.() -> Boolean): List<Rect> =
     @Suppress("ListIterator")
     mapNotNull { if (it.predicate()) it.bounds else null }
diff --git a/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.kt b/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.kt
index 57b2015..348d9ea 100644
--- a/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.kt
+++ b/compose/material3/adaptive/adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/WindowAdaptiveInfo.kt
@@ -27,7 +27,6 @@
  *
  * @return [WindowAdaptiveInfo] of the provided context
  */
-@ExperimentalMaterial3AdaptiveApi
 @Composable
 expect fun currentWindowAdaptiveInfo(): WindowAdaptiveInfo
 
@@ -39,7 +38,6 @@
  * @param windowSizeClass [WindowSizeClass] of the current window.
  * @param windowPosture [Posture] of the current window.
  */
-@ExperimentalMaterial3AdaptiveApi
 @Immutable
 class WindowAdaptiveInfo(
     val windowSizeClass: WindowSizeClass,
diff --git a/compose/material3/adaptive/adaptive/src/desktopMain/kotlin/androidx/compose/material3/adaptive/DesktopWindowInfo.desktop.kt b/compose/material3/adaptive/adaptive/src/desktopMain/kotlin/androidx/compose/material3/adaptive/DesktopWindowInfo.desktop.kt
index 4e76db0..a32d0d4 100644
--- a/compose/material3/adaptive/adaptive/src/desktopMain/kotlin/androidx/compose/material3/adaptive/DesktopWindowInfo.desktop.kt
+++ b/compose/material3/adaptive/adaptive/src/desktopMain/kotlin/androidx/compose/material3/adaptive/DesktopWindowInfo.desktop.kt
@@ -19,7 +19,6 @@
 import androidx.compose.runtime.Composable
 
 @Composable
-@ExperimentalMaterial3AdaptiveApi
 actual fun currentWindowAdaptiveInfo(): WindowAdaptiveInfo {
     TODO("Not yet implemented")
 }