@Nullable static InternalNode consumeCachedLayout( Component component, InternalNode holder, int widthSpec, int heightSpec) { final InternalNode cachedLayout = component.getCachedLayout(); if (cachedLayout != null) { final boolean hasValidDirection = InternalNode.hasValidLayoutDirectionInNestedTree(holder, cachedLayout); final boolean hasCompatibleSizeSpec = hasCompatibleSizeSpec( cachedLayout.getLastWidthSpec(), cachedLayout.getLastHeightSpec(), widthSpec, heightSpec, cachedLayout.getLastMeasuredWidth(), cachedLayout.getLastMeasuredHeight()); // Transfer the cached layout to the node without releasing it if it's compatible. if (hasValidDirection && hasCompatibleSizeSpec) { component.clearCachedLayout(); return cachedLayout; } else { component.releaseCachedLayout(); return null; } } else { return null; } }
|| !MeasureComparisonUtils.isMeasureSpecCompatible( lastMeasuredLayout.getLastHeightSpec(), heightSpec, lastMeasuredLayout.getHeight())) { releaseCachedLayout();
verify(componentSpy, never()).releaseCachedLayout(); verify(componentSpy, times(1)).clearCachedLayout();
verify(componentSpy, never()).releaseCachedLayout(); verify(componentSpy, times(1)).clearCachedLayout();
verify(sizeDependentComponentSpy1, never()).releaseCachedLayout(); verify(sizeDependentComponentSpy1, times(1)).clearCachedLayout(); verify(sizeDependentComponentSpy2, never()).releaseCachedLayout(); verify(sizeDependentComponentSpy2, never()).clearCachedLayout();
verify(sizeDependentComponentSpy, never()).releaseCachedLayout(); verify(sizeDependentComponentSpy, times(1)).clearCachedLayout();
verify(sizeDependentComponentSpy, never()).releaseCachedLayout(); verify(sizeDependentComponentSpy, times(1)).clearCachedLayout();