mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add systrace for event type when calling RCTDeviceEventEmitter (#39085)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39085 Adding arguments in systrace for event emitter event types. This is helpful to understand why sometimes JS render is triggered from native side. Changelog: [Internal] - Add event type information from native to js event emitter calls Reviewed By: rshest Differential Revision: D48448904 fbshipit-source-id: cbb4b86e781384d56205fec23931cd773e4a58a8
This commit is contained in:
committed by
Facebook GitHub Bot
parent
606a92f0b3
commit
80685d52b8
@@ -10,6 +10,7 @@
|
||||
|
||||
import type {IEventEmitter} from '../vendor/emitter/EventEmitter';
|
||||
|
||||
import {beginEvent, endEvent} from '../Performance/Systrace';
|
||||
import EventEmitter from '../vendor/emitter/EventEmitter';
|
||||
|
||||
// FIXME: use typed events
|
||||
@@ -21,12 +22,22 @@ type RCTDeviceEventDefinitions = $FlowFixMe;
|
||||
*
|
||||
* NativeModules that emit events should instead subclass `NativeEventEmitter`.
|
||||
*/
|
||||
const RCTDeviceEventEmitter: IEventEmitter<RCTDeviceEventDefinitions> =
|
||||
new EventEmitter();
|
||||
class RCTDeviceEventEmitter extends EventEmitter<RCTDeviceEventDefinitions> {
|
||||
// Add systrace to RCTDeviceEventEmitter.emit method for debugging
|
||||
emit<TEvent: $Keys<RCTDeviceEventDefinitions>>(
|
||||
eventType: TEvent,
|
||||
...args: RCTDeviceEventDefinitions[TEvent]
|
||||
): void {
|
||||
beginEvent(() => `RCTDeviceEventEmitter.emit#${eventType}`);
|
||||
super.emit(eventType, ...args);
|
||||
endEvent();
|
||||
}
|
||||
}
|
||||
const instance = new RCTDeviceEventEmitter();
|
||||
|
||||
Object.defineProperty(global, '__rctDeviceEventEmitter', {
|
||||
configurable: true,
|
||||
value: RCTDeviceEventEmitter,
|
||||
value: instance,
|
||||
});
|
||||
|
||||
export default (RCTDeviceEventEmitter: IEventEmitter<RCTDeviceEventDefinitions>);
|
||||
export default (instance: IEventEmitter<RCTDeviceEventDefinitions>);
|
||||
|
||||
Reference in New Issue
Block a user