.child( Wrapper.create(mContext) .delegate(content1) .visibleHandler(visibleEventHandler1) .widthPx(10) .heightPx(5)) .child( Wrapper.create(mContext) .delegate(content2) .visibleHandler(visibleEventHandler2) .widthPx(10) .heightPx(5)) .child( Wrapper.create(mContext) .delegate(content3) .visibleHandler(visibleEventHandler3) .visibilityChangedHandler(visibilityChangedHandler) .widthPx(10) .heightPx(5)) .build(), true,
childComponent = Wrapper.create(c) .delegate(childComponent) .minHeightPx(SizeSpec.getSize(heightSpec)) .build();
.child( Wrapper.create(mContext) .delegate(content) .focusedHandler(focusedHandler) .unfocusedHandler(unfocusedHandler) .widthPx(10) .heightPx(7) .marginPx(YogaEdge.TOP, 3)) .build(), true,
.child( Wrapper.create(mContext) .delegate( Wrapper.create(mContext) .delegate( Wrapper.create(mContext) .delegate(content) .visibleHandler(visibleEventHandler1) .invisibleHandler(invisibleEventHandler1) .focusedHandler(focusedEventHandler1) .unfocusedHandler(unfocusedEventHandler1) .fullImpressionHandler(fullImpressionVisibleEventHandler1) .widthPx(10) .heightPx(5) .build()) .visibleHandler(visibleEventHandler2) .invisibleHandler(invisibleEventHandler2) .focusedHandler(focusedEventHandler2) .unfocusedHandler(unfocusedEventHandler2) .fullImpressionHandler(fullImpressionVisibleEventHandler2) .build()) .visibleHandler(visibleEventHandler3) .invisibleHandler(invisibleEventHandler3) .focusedHandler(focusedEventHandler3) .unfocusedHandler(unfocusedEventHandler3) .fullImpressionHandler(fullImpressionVisibleEventHandler3)) .build(), true,
.child( Wrapper.create(mContext) .delegate(component1) .visibleHandler(visibleEventHandler1) .invisibleHandler(invisibleEventHandler1) .focusedHandler(focusedEventHandler1) .unfocusedHandler(unfocusedEventHandler1) .widthPx(10) .heightPx(10)) .build(), true); .child( Wrapper.create(mContext) .delegate(component2) .visibleHandler(visibleEventHandler2) .widthPx(10) .heightPx(10)) .build()) .build());
.child( Wrapper.create(mContext) .delegate(content) .visibilityChangedHandler(visibilityChangedHandler) .widthPx(10) .heightPx(10)) .build(), true,
.child( Wrapper.create(mContext) .delegate(content) .visibleHandler(visibleEventHandler) .invisibleHandler(invisibleEventHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true,
.child( Wrapper.create(mContext) .delegate(content) .visibleHeightRatio(0.4f) .visibleHandler(visibleEventHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true,
.child( Wrapper.create(mContext) .delegate(content) .visibleWidthRatio(0.4f) .visibleHeightRatio(0.4f) .visibleHandler(visibleEventHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true,
.child( Wrapper.create(mContext) .delegate(component) .visibleHandler(visibleEventHandler) .invisibleHandler(invisibleEventHandler) .focusedHandler(focusedEventHandler) .unfocusedHandler(unfocusedEventHandler) .fullImpressionHandler(fullImpressionHandler) .widthPx(10) .heightPx(10)) .build(), true);
@Test public void testTransientStateDoesNotTriggerVisibilityEvents() { final TestComponent content = create(mContext).build(); final EventHandler<VisibleEvent> visibleEventHandler = new EventHandler<>(content, 2); final LithoView lithoView = mountComponent( mContext, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .visibleHandler(visibleEventHandler) .widthPx(10) .heightPx(10)) .build(), true); lithoView.performIncrementalMount(new Rect(0, -10, 10, -5), true); content.getDispatchedEventHandlers().clear(); lithoView.setHasTransientState(true); assertThat(content.getDispatchedEventHandlers()) .doesNotContain(visibleEventHandler); lithoView.setMountStateDirty(); lithoView.performIncrementalMount(new Rect(0, -10, 10, -5), true); assertThat(content.getDispatchedEventHandlers()) .doesNotContain(visibleEventHandler); lithoView.setHasTransientState(false); assertThat(content.getDispatchedEventHandlers()).contains(visibleEventHandler); }
final Component wrappedContent = Wrapper.create(mContext) .delegate(content) .widthPx(10) .heightPx(5) .visibleHandler(visibleEventHandler) .invisibleHandler(invisibleEventHandler) .build();
.child( Wrapper.create(mContext) .delegate(content) .visibilityChangedHandler(visibilityChangedHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true,
@Test public void testInvisibleEvent() { final TestComponent content = create(mContext).build(); final EventHandler<InvisibleEvent> invisibleEventHandler = new EventHandler<>(content, 2); final LithoView lithoView = mountComponent( mContext, mLithoView, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .invisibleHandler(invisibleEventHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true, 10, 10); assertThat(content.getDispatchedEventHandlers()) .doesNotContain(invisibleEventHandler); lithoView.performIncrementalMount(new Rect(LEFT, 0, RIGHT, 5), true); assertThat(content.getDispatchedEventHandlers()).contains(invisibleEventHandler); }
@Test public void testFocusedOccupiesHalfViewport() { final TestComponent content = create(mContext).build(); final EventHandler<FocusedVisibleEvent> focusedEventHandler = new EventHandler<>(content, 2); final LithoView lithoView = mountComponent( mContext, mLithoView, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .focusedHandler(focusedEventHandler) .widthPx(10) .heightPx(10)) .build(), true, 10, 10); content.getDispatchedEventHandlers().clear(); lithoView.performIncrementalMount(new Rect(LEFT, 0, RIGHT, 4), true); assertThat(content.getDispatchedEventHandlers()) .doesNotContain(focusedEventHandler); lithoView.performIncrementalMount(new Rect(LEFT, 0, RIGHT, 5), true); assertThat(content.getDispatchedEventHandlers()).contains(focusedEventHandler); }
@Test public void testVisibleEventWithWidthRatio() { final TestComponent content = create(mContext).build(); final EventHandler<VisibleEvent> visibleEventHandler = new EventHandler<>(content, 2); final LithoView lithoView = mountComponent( mContext, mLithoView, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .visibleWidthRatio(0.4f) .visibleHandler(visibleEventHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true, 10, 5); assertThat(content.getDispatchedEventHandlers()).doesNotContain(visibleEventHandler); lithoView.performIncrementalMount(new Rect(LEFT, 0, 3, 10), true); assertThat(content.getDispatchedEventHandlers()).doesNotContain(visibleEventHandler); lithoView.performIncrementalMount(new Rect(LEFT, 0, 5, 10), true); assertThat(content.getDispatchedEventHandlers()).contains(visibleEventHandler); }
@Test public void testFocusedOccupiesLessThanHalfViewport() { final TestComponent content = create(mContext).build(); final EventHandler<FocusedVisibleEvent> focusedEventHandler = new EventHandler<>(content, 2); final LithoView lithoView = mountComponent( mContext, mLithoView, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .focusedHandler(focusedEventHandler) .widthPx(10) .heightPx(3)) .build(), true, 10, 10); content.getDispatchedEventHandlers().clear(); lithoView.performIncrementalMount(new Rect(LEFT, 0, RIGHT, 2), true); assertThat(content.getDispatchedEventHandlers()) .doesNotContain(focusedEventHandler); lithoView.performIncrementalMount(new Rect(LEFT, 0, RIGHT, 3), true); assertThat(content.getDispatchedEventHandlers()).contains(focusedEventHandler); }
@Test public void testFullImpressionEvent() { final TestComponent content = create(mContext).build(); final EventHandler<FullImpressionVisibleEvent> fullImpressionVisibleEvent = new EventHandler<>(content, 2); mountComponent( mContext, mLithoView, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .fullImpressionHandler(fullImpressionVisibleEvent) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true, 10, 10); assertThat(content.getDispatchedEventHandlers()) .contains(fullImpressionVisibleEvent); }
@Override protected Component onCreateLayout(final ComponentContext c) { return Wrapper.create(c) .delegate( new InlineLayoutSpec() { @Override protected Component onCreateLayout(ComponentContext c) { return TestDrawableComponent.create(c) .clickHandler(clickHandler1) .longClickHandler(longClickHandler1) .touchHandler(touchHandler1) .interceptTouchHandler(interceptTouchHandler1) .focusChangeHandler(focusChangedHandler1) .build(); } }) .clickHandler(clickHandler2) .longClickHandler(longClickHandler2) .touchHandler(touchHandler2) .interceptTouchHandler(interceptTouchHandler2) .focusChangeHandler(focusChangedHandler2) .build(); } };
@Test public void testVisibleEvent() { final TestComponent content = create(mContext).build(); final EventHandler<VisibleEvent> visibleEventHandler = new EventHandler<>(content, 2); final LithoView lithoView = mountComponent( mContext, mLithoView, Column.create(mContext) .child( Wrapper.create(mContext) .delegate(content) .visibleHandler(visibleEventHandler) .widthPx(10) .heightPx(5) .marginPx(YogaEdge.TOP, 5)) .build(), true, 10, 5); assertThat(content.getDispatchedEventHandlers()) .doesNotContain(visibleEventHandler); lithoView.performIncrementalMount(new Rect(LEFT, 0, RIGHT, 10), true); assertThat(content.getDispatchedEventHandlers()).contains(visibleEventHandler); }