Allow MeasureFunc to be set to NULL no matter how many children a node has.

Summary: Within `UIView+CSSLayout`, we often nil out the measure function of a node because view hierarchy can often change. Unfortunately, this causes us to hit an assert which crashes the app. Instead, lets the measure func to be set to NULL, regardless of how many children a node might have.

Reviewed By: emilsjolander

Differential Revision: D4148727

fbshipit-source-id: 79a0f3ef1bf7b1dce9a14de96f870e35c042b78b
This commit is contained in:
Dustin Shahidehpour
2016-11-09 08:42:45 -08:00
committed by Facebook Github Bot
parent 502f3c7010
commit e54af5e854
2 changed files with 20 additions and 3 deletions

View File

@@ -28,13 +28,25 @@ TEST(CSSLayoutTest, cannot_add_child_to_node_with_measure_func) {
const CSSNodeRef root_child0 = CSSNodeNew();
ASSERT_DEATH(CSSNodeInsertChild(root, root_child0, 0), "Cannot add child.*");
CSSNodeFreeRecursive(root);
}
TEST(CSSLayoutTest, cannot_add_measure_func_to_non_leaf_node) {
TEST(CSSLayoutTest, cannot_add_nonnull_measure_func_to_non_leaf_node) {
const CSSNodeRef root = CSSNodeNew();
const CSSNodeRef root_child0 = CSSNodeNew();
CSSNodeInsertChild(root, root_child0, 0);
ASSERT_DEATH(CSSNodeSetMeasureFunc(root, _measure), "Cannot set measure function.*");
CSSNodeFreeRecursive(root);
}
TEST(CSSLayoutTest, can_nullify_measure_func_on_any_node) {
const CSSNodeRef root = CSSNodeNew();
CSSNodeInsertChild(root, CSSNodeNew(), 0);
CSSNodeSetMeasureFunc(root, NULL);
ASSERT_TRUE(CSSNodeGetMeasureFunc(root) == NULL);
CSSNodeFreeRecursive(root);
}
#endif