mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-03-27 15:50:39 +08:00
flush events queue when an event cannot be coalesced (4/7)
Summary: Currently only scroll events are send through `sendEvent`, and all of them are can be coalesced. In future (further in the stack) touch events will go through there as well, but they won't support coalescing. In order to ensure js processes touch and scroll events in the same order as they were created, we will flush the coalesced events when we encounter one that cannot be coalesced. public ___ //This diff is part of a larger stack. For high level overview what's going on jump to D2884593.// Reviewed By: nicklockwood Differential Revision: D2884591 fb-gh-sync-id: a3d0e916843265ec57f16aad2f016a79764dcce8
This commit is contained in:
committed by
facebook-github-bot-4
parent
7f2b72528e
commit
91e5829419
@@ -114,7 +114,7 @@
|
||||
- (void)testCoalescedEventShouldBeDispatchedOnFrameUpdate
|
||||
{
|
||||
[_eventDispatcher sendEvent:_testEvent];
|
||||
|
||||
[_bridge verify];
|
||||
[[_bridge expect] enqueueJSCall:@"RCTDeviceEventEmitter.emit"
|
||||
args:[_testEvent arguments]];
|
||||
|
||||
@@ -123,6 +123,23 @@
|
||||
[_bridge verify];
|
||||
}
|
||||
|
||||
- (void)testNonCoalescingEventForcesColescedEventsToBeImmediatelyDispatched
|
||||
{
|
||||
RCTTestEvent *nonCoalescingEvent = [[RCTTestEvent alloc] initWithViewTag:nil
|
||||
eventName:_eventName
|
||||
body:@{}];
|
||||
nonCoalescingEvent.canCoalesce = NO;
|
||||
[_eventDispatcher sendEvent:_testEvent];
|
||||
|
||||
[[_bridge expect] enqueueJSCall:[[_testEvent class] moduleDotMethod]
|
||||
args:[_testEvent arguments]];
|
||||
[[_bridge expect] enqueueJSCall:[[nonCoalescingEvent class] moduleDotMethod]
|
||||
args:[nonCoalescingEvent arguments]];
|
||||
|
||||
[_eventDispatcher sendEvent:nonCoalescingEvent];
|
||||
[_bridge verify];
|
||||
}
|
||||
|
||||
- (void)testBasicCoalescingReturnsLastEvent
|
||||
{
|
||||
RCTTestEvent *ignoredEvent = [[RCTTestEvent alloc] initWithViewTag:nil
|
||||
|
||||
Reference in New Issue
Block a user