[go: nahoru, domu]

Remove ParentData

Fixes: 156034691
Bug: 147516363

ParentData is no longer needed -- it is now set through
modifiers.

Test: ui-core:cC demo app
Change-Id: I07e0135060a9fb0989d6de12756950c1a34d3b03
diff --git a/ui/ui-core/api/0.1.0-dev12.txt b/ui/ui-core/api/0.1.0-dev12.txt
index 65cd94e..1259c7a 100644
--- a/ui/ui-core/api/0.1.0-dev12.txt
+++ b/ui/ui-core/api/0.1.0-dev12.txt
@@ -716,10 +716,6 @@
     method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
   }
 
-  public final class ParentDataKt {
-    method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-  }
-
   public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
     method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
   }
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index 65cd94e..1259c7a 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -716,10 +716,6 @@
     method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
   }
 
-  public final class ParentDataKt {
-    method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-  }
-
   public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
     method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
   }
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
index 312c643..4621211 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev12.txt
@@ -718,10 +718,6 @@
     method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
   }
 
-  public final class ParentDataKt {
-    method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-  }
-
   public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
     method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
   }
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index 312c643..4621211 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -718,10 +718,6 @@
     method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
   }
 
-  public final class ParentDataKt {
-    method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-  }
-
   public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
     method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
   }
diff --git a/ui/ui-core/api/restricted_0.1.0-dev12.txt b/ui/ui-core/api/restricted_0.1.0-dev12.txt
index bded631..43517c7 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev12.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev12.txt
@@ -726,10 +726,6 @@
     method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
   }
 
-  public final class ParentDataKt {
-    method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-  }
-
   public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
     method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
   }
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index bded631..43517c7 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -726,10 +726,6 @@
     method public static androidx.ui.core.Modifier paint(androidx.ui.core.Modifier, androidx.ui.graphics.painter.Painter painter, boolean sizeToIntrinsics = true, androidx.ui.core.Alignment alignment = Alignment.Center, androidx.ui.core.ContentScale contentScale = ContentScale.Inside, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, boolean rtl = false);
   }
 
-  public final class ParentDataKt {
-    method @Deprecated public static inline void ParentData(Object data, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-  }
-
   public interface ParentDataModifier extends androidx.ui.core.Modifier.Element {
     method public default Object? modifyParentData(androidx.ui.unit.Density, Object? parentData);
   }
diff --git a/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt b/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
index 7b1e8ab..114bcfa 100644
--- a/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
+++ b/ui/ui-core/src/androidTest/java/androidx/ui/core/test/AndroidLayoutDrawTest.kt
@@ -52,7 +52,6 @@
 import androidx.ui.core.MeasureScope
 import androidx.ui.core.Modifier
 import androidx.ui.core.Owner
-import androidx.ui.core.ParentData
 import androidx.ui.core.ParentDataModifier
 import androidx.ui.core.PassThroughLayout
 import androidx.ui.core.Ref
@@ -2338,30 +2337,10 @@
                     PassThroughLayout {
                         FixedSize(50.ipx, LayoutTag("1"))
                     }
-                    PassThroughLayout {
-                        ParentData(LayoutTag("2")) {
-                            FixedSize(50.ipx, LayoutTag("1"))
-                        }
-                    }
-                    ParentData(LayoutTag("3")) {
-                        PassThroughLayout {
-                            ParentData(LayoutTag("2")) {
-                                FixedSize(50.ipx, LayoutTag("1"))
-                            }
-                        }
-                    }
-                    PassThroughLayout(LayoutTag("4")) {
-                        ParentData(LayoutTag("2")) {
-                            FixedSize(50.ipx, LayoutTag("1"))
-                        }
-                    }
                 }) { measurables, constraints, _ ->
                     assertEquals("1", measurables[0].tag)
                     val placeable = measurables[0].measure(constraints)
                     assertEquals(50.ipx, placeable.width)
-                    assertEquals("2", measurables[1].tag)
-                    assertEquals("3", measurables[2].tag)
-                    assertEquals("4", measurables[3].tag)
                     latch.countDown()
                     layout(0.ipx, 0.ipx) {}
                 }
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt b/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt
index 75fd646..1071299 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/ComponentNodes.kt
@@ -658,37 +658,9 @@
             return _layoutChildren
         }
 
-    /**
-     * `true` when parentDataNode has to be rediscovered. This is when the
-     * LayoutNode has been attached.
-     */
-    private var parentDataDirty = false
-
     override val parentData: Any?
         get() = layoutNodeWrapper.parentData
 
-    /**
-     * The parentData [DataNode] for this LayoutNode.
-     */
-    internal var parentDataNode: DataNode<*>? = null
-        get() {
-            if (parentDataDirty) {
-                // walk up to find ParentData
-                field = null
-                var node = parent
-                val parentLayoutNode = parentLayoutNode
-                while (node != null && node !== parentLayoutNode) {
-                    if (node is DataNode<*> && node.key === ParentDataKey) {
-                        field = node
-                        break
-                    }
-                    node = node.parent
-                }
-                parentDataDirty = false
-            }
-            return field
-        }
-
     internal val innerLayoutNodeWrapper: LayoutNodeWrapper = InnerPlaceable(this)
     internal var layoutNodeWrapper = innerLayoutNodeWrapper
 
@@ -792,7 +764,6 @@
     override fun attach(owner: Owner) {
         super.attach(owner)
         requestRemeasure()
-        parentDataDirty = true
         parentLayoutNode?.layoutChildrenDirty = true
         layoutNodeWrapper.attach()
         onAttach?.invoke(owner)
@@ -811,7 +782,6 @@
             parentLayoutNode.layoutChildrenDirty = true
             parentLayoutNode.requestRemeasure()
         }
-        parentDataDirty = true
         alignmentLinesQueryOwner = null
         onDetach?.invoke(owner)
         layoutNodeWrapper.detach()
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt b/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt
index 5da930c..a99f63e 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/InnerPlaceable.kt
@@ -59,11 +59,10 @@
     override val parentData: Any?
         @Suppress("DEPRECATION")
         get() = if (layoutNode.handlesParentData) {
-            layoutNode.parentDataNode?.value
+            null
         } else {
-            layoutNode.parentDataNode?.value
-                ?: layoutNode.layoutChildren
-                    .firstOrNull { it.layoutNodeWrapper.parentData != null }?.parentData
+            layoutNode.layoutChildren
+                    .firstOrNull { it.parentData != null }?.parentData
         }
 
     override fun findFocusWrapperWrappingThisWrapper() =
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt b/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt
index 16b05d0..ff348cc 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/Layout.kt
@@ -207,8 +207,7 @@
     LayoutNode(
         modifier = currentComposer.materialize(modifier),
         measureBlocks = measureBlocks,
-        handlesParentData =
-        false
+        handlesParentData = false
     ) {
         children()
     }
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt b/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt
index 5d3f681..44e2e86 100644
--- a/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt
+++ b/ui/ui-core/src/main/java/androidx/ui/core/ModifiedParentDataNode.kt
@@ -26,7 +26,6 @@
              * ParentData provided through the parentData node will override the data provided
              * through a modifier
              */
-            layoutNode.parentDataNode?.value
-                ?: layoutNode.measureScope.modifyParentData(wrapped.parentData)
+            layoutNode.measureScope.modifyParentData(wrapped.parentData)
         }
 }
\ No newline at end of file
diff --git a/ui/ui-core/src/main/java/androidx/ui/core/ParentData.kt b/ui/ui-core/src/main/java/androidx/ui/core/ParentData.kt
deleted file mode 100644
index 1767efb..0000000
--- a/ui/ui-core/src/main/java/androidx/ui/core/ParentData.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package androidx.ui.core
-
-import androidx.compose.Composable
-
-/**
- * Provide data for the parent of a [Layout], which can then be read from the
- * corresponding [Measurable].
- *
- * A containing [Layout] sometimes needs to mark children with attributes that can later
- * be read during layout. [data] is assigned to the [Measurable.parentData] to be read.
- * Normally [ParentData] is completely controlled by the containing Layout. For example,
- * Row and Column layout models use parent data to access the flex value of their children
- * during measurement (though that is achieved using the Inflexible and Flexible modifiers,
- * rather than using this widget).
- *
- */
-@Deprecated(
-    "ParentData composable is deprecated. You should either create a modifier which implements " +
-            "ParentDataModifier interface, or use LayoutTag modifier if you simply need to tag " +
-            "layout children to recognize them inside the measure block."
-)
-@Composable
-inline fun ParentData(data: Any, crossinline children: @Composable () -> Unit) {
-    DataNode(key = ParentDataKey, value = data) {
-        children()
-    }
-}