@VisibleForTesting @Override public void mountComponent(Rect currentVisibleArea, boolean processVisibilityOutputs) { super.mountComponent(currentVisibleArea, processVisibilityOutputs); }
public static void mountLithoView(LithoView lithoView) { lithoView.getComponentTree().mountComponent(null, true); }
public void performIncrementalMount(Rect visibleRect, boolean processVisibilityOutputs) { if (mComponentTree == null || !checkMainThreadLayoutStateForIncrementalMount()) { return; } if (mComponentTree.isIncrementalMountEnabled()) { mComponentTree.mountComponent(visibleRect, processVisibilityOutputs); } else { throw new IllegalStateException("To perform incremental mounting, you need first to enable" + " it when creating the ComponentTree."); } }
private boolean mountComponentIfNeeded() { if (mLithoView.isMountStateDirty() || mLithoView.mountStateNeedsRemount()) { if (mIncrementalMountEnabled) { incrementalMountComponent(); } else { mountComponent(null, true); } return true; } return false; }
mountComponent(currentVisibleArea, true); } else { if (mLithoView.getLocalVisibleRect(currentVisibleArea) mountComponent(currentVisibleArea, true);
@Test public void testChildViewGroupIncrementallyMounted() { final ViewGroup mountedView = mock(ViewGroup.class); when(mountedView.getChildCount()).thenReturn(3); final LithoView childView1 = getMockLithoViewWithBounds(new Rect(5, 10, 20, 30)); when(mountedView.getChildAt(0)).thenReturn(childView1); final LithoView childView2 = getMockLithoViewWithBounds(new Rect(10, 10, 50, 60)); when(mountedView.getChildAt(1)).thenReturn(childView2); final LithoView childView3 = getMockLithoViewWithBounds(new Rect(30, 35, 50, 60)); when(mountedView.getChildAt(2)).thenReturn(childView3); final LithoView lithoView = ComponentTestHelper.mountComponent( TestViewComponent.create(mContext).testView(mountedView)); lithoView.getComponentTree().mountComponent(new Rect(15, 15, 40, 40), true); verify(childView1).performIncrementalMount(); verify(childView2).performIncrementalMount(); verify(childView3).performIncrementalMount(); }
lithoViewParent.getComponentTree().mountComponent(new Rect(0, 0, 100, 1000), false); verify(lithoView).performIncrementalMount(any(Rect.class), eq(false)); reset(lithoView); lithoViewParent.getComponentTree().mountComponent(new Rect(0, -10, 100, -5), false); verify(lithoView, never()).performIncrementalMount(any(Rect.class), eq(false)); reset(lithoView); lithoViewParent.getComponentTree().mountComponent(new Rect(0, 0, 100, 1000), false);
.performIncrementalMount(any(Rect.class), eq(true)); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 100, 100), false);
lithoView.getComponentTree().mountComponent(new Rect(0, 0, 50, 20), true); assertThat(child.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 2); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 50, 40), true); assertThat(child.isMounted()).isTrue(); verifyLoggingAndResetLogger(2, 0); lithoView.getComponentTree().mountComponent(new Rect(30, 0, 50, 40), true); assertThat(child.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 1);
lithoView.getComponentTree().mountComponent(new Rect(0, -10, 10, -5), true); assertThat(child1.isMounted()).isFalse(); assertThat(child1.wasOnUnbindCalled()).isTrue(); assertThat(child1.wasOnUnmountCalled()).isTrue(); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 10, 5), true); assertThat(child1.isMounted()).isTrue(); lithoView.getComponentTree().mountComponent(new Rect(0, 5, 10, 15), true); assertThat(child1.isMounted()).isTrue();
lithoView.getComponentTree().mountComponent(new Rect(0, -10, 10, -5), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse(); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 10, 5), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); lithoView.getComponentTree().mountComponent(new Rect(0, 5, 10, 15), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); lithoView.getComponentTree().mountComponent(new Rect(0, 5, 10, 15), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue();
lithoView.getComponentTree().mountComponent(new Rect(0, -10, 10, -5), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 2); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 10, 5), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(0, 5, 10, 15), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(0, 15, 10, 25), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(0, 1); lithoView.getComponentTree().mountComponent(new Rect(0, 20, 10, 30), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse();
lithoView.getComponentTree().mountComponent(new Rect(0, -10, 10, -5), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 2); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 10, 5), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(0, 5, 10, 15), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(0, 15, 10, 25), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(0, 1); lithoView.getComponentTree().mountComponent(new Rect(0, 20, 10, 30), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse();
lithoView.getComponentTree().mountComponent(new Rect(0, 20, 10, 30), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 2); lithoView.getComponentTree().mountComponent(new Rect(0, 15, 10, 25), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(0, 5, 10, 15), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 10, 10), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 1); lithoView.getComponentTree().mountComponent(new Rect(0, -10, 10, -5), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse();
lithoView.getComponentTree().mountComponent(new Rect(-10, 0, -5, 10), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 2); lithoView.getComponentTree().mountComponent(new Rect(0, 0, 5, 10), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(5, 0, 15, 10), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(15, 0, 25, 10), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(0, 1); lithoView.getComponentTree().mountComponent(new Rect(20, 0, 30, 10), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse();
lithoView.getComponentTree().mountComponent(new Rect(0, 0, 5, 5), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isFalse(); verifyLoggingAndResetLogger(0, 1); lithoView.getComponentTree().mountComponent(new Rect(5, 5, 10, 10), true); assertThat(child1.isMounted()).isTrue(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(1, 0); lithoView.getComponentTree().mountComponent(new Rect(10, 10, 15, 15), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isTrue(); verifyLoggingAndResetLogger(0, 1); lithoView.getComponentTree().mountComponent(new Rect(15, 15, 20, 20), true); assertThat(child1.isMounted()).isFalse(); assertThat(child2.isMounted()).isFalse();
/** * Verify that we can cope with a negative padding on a component that is wrapped in a view * (since the bounds of the component will be larger than the bounds of the view). */ @Test public void testIncrementalMountVerticalDrawableStackNegativeMargin() { final TestComponent child1 = TestDrawableComponent.create(mContext) .build(); final LithoView lithoView = ComponentTestHelper.mountComponent( mContext, new InlineLayoutSpec() { @Override protected Component onCreateLayout(ComponentContext c) { return Column.create(c) .child( Wrapper.create(c) .delegate(child1) .widthPx(10) .heightPx(10) .clickHandler(c.newEventHandler(1)) .marginDip(YogaEdge.TOP, -10)) .build(); } }); verifyLoggingAndResetLogger(2, 0); lithoView.getComponentTree().mountComponent(new Rect(0, -10, 10, -5), true); verifyLoggingAndResetLogger(0, 0); }