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.