From 271b9132bc7e5f3310fcce6dfe5f59cd388b449a Mon Sep 17 00:00:00 2001 From: Joshua Gross Date: Mon, 7 Feb 2022 18:18:28 -0800 Subject: [PATCH] Rename RawEventTelemetryEventEmitter to RawEventEmitter Summary: This event listener does nothing by default and will do nothing if (developer) users don't explicitly create some telemetry system for their own app. This EventEmitter makes that easier but isn't necessarily tied to telemetry, especially since it does nothing at all by default. Changelog: [Internal] Reviewed By: yungsters Differential Revision: D34060116 fbshipit-source-id: 9345a52f502e0225358fdaa1431c052a70fa54ce --- ...emetryEventEmitter.js => RawEventEmitter.js} | 17 +++++++++++++---- .../ReactPrivate/ReactNativePrivateInterface.js | 6 +++--- 2 files changed, 16 insertions(+), 7 deletions(-) rename Libraries/Core/{RawEventTelemetryEventEmitter.js => RawEventEmitter.js} (50%) diff --git a/Libraries/Core/RawEventTelemetryEventEmitter.js b/Libraries/Core/RawEventEmitter.js similarity index 50% rename from Libraries/Core/RawEventTelemetryEventEmitter.js rename to Libraries/Core/RawEventEmitter.js index be1f134eb6..cd330469cd 100644 --- a/Libraries/Core/RawEventTelemetryEventEmitter.js +++ b/Libraries/Core/RawEventEmitter.js @@ -11,7 +11,7 @@ import EventEmitter from '../vendor/emitter/EventEmitter'; import type {IEventEmitter} from '../vendor/emitter/EventEmitter'; -export type RawEventTelemetryEvent = $ReadOnly<{| +export type RawEventEmitterEvent = $ReadOnly<{| eventName: string, // We expect, but do not/cannot require, that nativeEvent is an object // with the properties: key, elementType (string), type (string), tag (numeric), @@ -20,10 +20,19 @@ export type RawEventTelemetryEvent = $ReadOnly<{| |}>; type RawEventDefinitions = { - [eventChannel: string]: [RawEventTelemetryEvent], + [eventChannel: string]: [RawEventEmitterEvent], }; -const RawEventTelemetryEventEmitter: IEventEmitter = +const RawEventEmitter: IEventEmitter = new EventEmitter(); -export default RawEventTelemetryEventEmitter; +// See the React renderer / react repo for how this is used. +// Raw events are emitted here when they are received in JS +// and before any event Plugins process them or before components +// have a chance to respond to them. This allows you to implement +// app-specific perf monitoring, which is unimplemented by default, +// making this entire RawEventEmitter do nothing by default until +// *you* add listeners for your own app. +// Besides perf monitoring and maybe debugging, this RawEventEmitter +// should not be used. +export default RawEventEmitter; diff --git a/Libraries/ReactPrivate/ReactNativePrivateInterface.js b/Libraries/ReactPrivate/ReactNativePrivateInterface.js index b4c8237fa6..d671212dca 100644 --- a/Libraries/ReactPrivate/ReactNativePrivateInterface.js +++ b/Libraries/ReactPrivate/ReactNativePrivateInterface.js @@ -21,7 +21,7 @@ import typeof flattenStyle from '../StyleSheet/flattenStyle'; import {type DangerouslyImpreciseStyleProp} from '../StyleSheet/StyleSheet'; import typeof ReactFiberErrorDialog from '../Core/ReactFiberErrorDialog'; import typeof legacySendAccessibilityEvent from '../Components/AccessibilityInfo/legacySendAccessibilityEvent'; -import typeof RawEventTelemetryEventEmitter from '../Core/RawEventTelemetryEventEmitter'; +import typeof RawEventEmitter from '../Core/RawEventEmitter'; // flowlint unsafe-getters-setters:off module.exports = { @@ -63,7 +63,7 @@ module.exports = { get legacySendAccessibilityEvent(): legacySendAccessibilityEvent { return require('../Components/AccessibilityInfo/legacySendAccessibilityEvent'); }, - get RawEventTelemetryEventEmitter(): RawEventTelemetryEventEmitter { - return require('../Core/RawEventTelemetryEventEmitter').default; + get RawEventEmitter(): RawEventEmitter { + return require('../Core/RawEventEmitter').default; }, };