Add parameter check in Flexible and AspectRatio
Test: ui-layout and ui-material tests
Change-Id: Idb79729573f8ec22e12fc116101108db2be802da
diff --git a/ui/ui-layout/api/0.1.0-dev03.txt b/ui/ui-layout/api/0.1.0-dev03.txt
index 41cb8b8..a01fd6a 100644
--- a/ui/ui-layout/api/0.1.0-dev03.txt
+++ b/ui/ui-layout/api/0.1.0-dev03.txt
@@ -15,7 +15,7 @@
public final class AspectRatioKt {
ctor public AspectRatioKt();
- method public static androidx.ui.core.LayoutModifier AspectRatio(float value);
+ method public static androidx.ui.core.LayoutModifier AspectRatio(@FloatRange(from=0.0, fromInclusive=false) float value);
method @Deprecated public static void AspectRatio(float aspectRatio, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
@@ -133,7 +133,7 @@
}
@androidx.ui.layout.LayoutScopeMarker public abstract sealed class FlexScope {
- method public final androidx.ui.core.LayoutModifier Flexible(float flex, boolean tight = true);
+ method public final androidx.ui.core.LayoutModifier Flexible(@FloatRange(from=0.0, fromInclusive=false) float flex, boolean tight = true);
method public final androidx.ui.core.LayoutModifier RelativeToSiblings(androidx.ui.layout.Gravity, kotlin.jvm.functions.Function1<? super androidx.ui.core.Placeable,androidx.ui.core.IntPx> alignmentLineBlock);
method public final androidx.ui.core.LayoutModifier getInflexible();
property public final androidx.ui.core.LayoutModifier Inflexible;
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index 41cb8b8..a01fd6a 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -15,7 +15,7 @@
public final class AspectRatioKt {
ctor public AspectRatioKt();
- method public static androidx.ui.core.LayoutModifier AspectRatio(float value);
+ method public static androidx.ui.core.LayoutModifier AspectRatio(@FloatRange(from=0.0, fromInclusive=false) float value);
method @Deprecated public static void AspectRatio(float aspectRatio, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
@@ -133,7 +133,7 @@
}
@androidx.ui.layout.LayoutScopeMarker public abstract sealed class FlexScope {
- method public final androidx.ui.core.LayoutModifier Flexible(float flex, boolean tight = true);
+ method public final androidx.ui.core.LayoutModifier Flexible(@FloatRange(from=0.0, fromInclusive=false) float flex, boolean tight = true);
method public final androidx.ui.core.LayoutModifier RelativeToSiblings(androidx.ui.layout.Gravity, kotlin.jvm.functions.Function1<? super androidx.ui.core.Placeable,androidx.ui.core.IntPx> alignmentLineBlock);
method public final androidx.ui.core.LayoutModifier getInflexible();
property public final androidx.ui.core.LayoutModifier Inflexible;
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
index 41cb8b8..a01fd6a 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
@@ -15,7 +15,7 @@
public final class AspectRatioKt {
ctor public AspectRatioKt();
- method public static androidx.ui.core.LayoutModifier AspectRatio(float value);
+ method public static androidx.ui.core.LayoutModifier AspectRatio(@FloatRange(from=0.0, fromInclusive=false) float value);
method @Deprecated public static void AspectRatio(float aspectRatio, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
@@ -133,7 +133,7 @@
}
@androidx.ui.layout.LayoutScopeMarker public abstract sealed class FlexScope {
- method public final androidx.ui.core.LayoutModifier Flexible(float flex, boolean tight = true);
+ method public final androidx.ui.core.LayoutModifier Flexible(@FloatRange(from=0.0, fromInclusive=false) float flex, boolean tight = true);
method public final androidx.ui.core.LayoutModifier RelativeToSiblings(androidx.ui.layout.Gravity, kotlin.jvm.functions.Function1<? super androidx.ui.core.Placeable,androidx.ui.core.IntPx> alignmentLineBlock);
method public final androidx.ui.core.LayoutModifier getInflexible();
property public final androidx.ui.core.LayoutModifier Inflexible;
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index 41cb8b8..a01fd6a 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -15,7 +15,7 @@
public final class AspectRatioKt {
ctor public AspectRatioKt();
- method public static androidx.ui.core.LayoutModifier AspectRatio(float value);
+ method public static androidx.ui.core.LayoutModifier AspectRatio(@FloatRange(from=0.0, fromInclusive=false) float value);
method @Deprecated public static void AspectRatio(float aspectRatio, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
@@ -133,7 +133,7 @@
}
@androidx.ui.layout.LayoutScopeMarker public abstract sealed class FlexScope {
- method public final androidx.ui.core.LayoutModifier Flexible(float flex, boolean tight = true);
+ method public final androidx.ui.core.LayoutModifier Flexible(@FloatRange(from=0.0, fromInclusive=false) float flex, boolean tight = true);
method public final androidx.ui.core.LayoutModifier RelativeToSiblings(androidx.ui.layout.Gravity, kotlin.jvm.functions.Function1<? super androidx.ui.core.Placeable,androidx.ui.core.IntPx> alignmentLineBlock);
method public final androidx.ui.core.LayoutModifier getInflexible();
property public final androidx.ui.core.LayoutModifier Inflexible;
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev03.txt b/ui/ui-layout/api/restricted_0.1.0-dev03.txt
index 41cb8b8..a01fd6a 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev03.txt
@@ -15,7 +15,7 @@
public final class AspectRatioKt {
ctor public AspectRatioKt();
- method public static androidx.ui.core.LayoutModifier AspectRatio(float value);
+ method public static androidx.ui.core.LayoutModifier AspectRatio(@FloatRange(from=0.0, fromInclusive=false) float value);
method @Deprecated public static void AspectRatio(float aspectRatio, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
@@ -133,7 +133,7 @@
}
@androidx.ui.layout.LayoutScopeMarker public abstract sealed class FlexScope {
- method public final androidx.ui.core.LayoutModifier Flexible(float flex, boolean tight = true);
+ method public final androidx.ui.core.LayoutModifier Flexible(@FloatRange(from=0.0, fromInclusive=false) float flex, boolean tight = true);
method public final androidx.ui.core.LayoutModifier RelativeToSiblings(androidx.ui.layout.Gravity, kotlin.jvm.functions.Function1<? super androidx.ui.core.Placeable,androidx.ui.core.IntPx> alignmentLineBlock);
method public final androidx.ui.core.LayoutModifier getInflexible();
property public final androidx.ui.core.LayoutModifier Inflexible;
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index 41cb8b8..a01fd6a 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -15,7 +15,7 @@
public final class AspectRatioKt {
ctor public AspectRatioKt();
- method public static androidx.ui.core.LayoutModifier AspectRatio(float value);
+ method public static androidx.ui.core.LayoutModifier AspectRatio(@FloatRange(from=0.0, fromInclusive=false) float value);
method @Deprecated public static void AspectRatio(float aspectRatio, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
@@ -133,7 +133,7 @@
}
@androidx.ui.layout.LayoutScopeMarker public abstract sealed class FlexScope {
- method public final androidx.ui.core.LayoutModifier Flexible(float flex, boolean tight = true);
+ method public final androidx.ui.core.LayoutModifier Flexible(@FloatRange(from=0.0, fromInclusive=false) float flex, boolean tight = true);
method public final androidx.ui.core.LayoutModifier RelativeToSiblings(androidx.ui.layout.Gravity, kotlin.jvm.functions.Function1<? super androidx.ui.core.Placeable,androidx.ui.core.IntPx> alignmentLineBlock);
method public final androidx.ui.core.LayoutModifier getInflexible();
property public final androidx.ui.core.LayoutModifier Inflexible;
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/AspectRatio.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/AspectRatio.kt
index 48e1169..76529d1 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/AspectRatio.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/AspectRatio.kt
@@ -16,6 +16,7 @@
package androidx.ui.layout
+import androidx.annotation.FloatRange
import androidx.compose.Composable
import androidx.ui.core.Constraints
import androidx.ui.core.DensityScope
@@ -44,9 +45,11 @@
* Example usage:
* @sample androidx.ui.layout.samples.SimpleAspectRatio
*
- * @param value Must be positive non-zero Float.
+ * @param value A positive non-zero value representing the aspect ratio.
*/
-fun AspectRatio(value: Float): LayoutModifier = AspectRatioModifier(value)
+fun AspectRatio(
+ @FloatRange(from = 0.0, fromInclusive = false) value: Float
+): LayoutModifier = AspectRatioModifier(value)
/**
* A [LayoutModifier] that applies an aspect ratio to the wrapped UI element's size.
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
index a3d795e3..1e01c56 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
@@ -175,12 +175,17 @@
* [Inflexible] ones have been measured, in order to divide the unclaimed space between
* them.
*/
- fun Flexible(flex: Float, tight: Boolean = true): LayoutModifier =
- if (tight) {
+ fun Flexible(
+ @FloatRange(from = 0.0, fromInclusive = false) flex: Float,
+ tight: Boolean = true
+ ): LayoutModifier {
+ require(flex > 0.0) { "Flex value should be greater than zero." }
+ return if (tight) {
FlexModifier(FlexChildProperties(flex, FlexFit.Tight))
} else {
FlexModifier(FlexChildProperties(flex, FlexFit.Loose))
}
+ }
/**
* A layout modifier within a [Column] or [Row] that makes the target component inflexible.