Add modern event system flag + rename legacy plugin module (#18073)
Dominic Gannaway committed
Feb 19, 2020 at 14:36 UTC
4912ba31e3dcc8d08f5b16ae38b38d74da85ea21
15 files changed
+26
-14
packages/react-dom/src/__tests__/ReactBrowserEventEmitter-test.internal.js
+8
-8
@@ -14,7 +14,7 @@ let EventPluginRegistry;
14
let React;
15
let ReactDOM;
16
let ReactDOMComponentTree;
17
-let DOMEventPluginSystem;
17
+let listenToEvent;
18
let ReactDOMEventListener;
19
let ReactTestUtils;
20
@@ -54,8 +54,7 @@ function registerSimpleTestHandler() {
54
}
55
56
// We should probably remove this file at some point, it's just full of
57
-// internal API usage. ReactBrowserEventEmitter was refactored out in
58
-// #18056 too. The majority of this code lives in DOMEventPluginSystem.
57
+// internal API usage.
58
describe('ReactBrowserEventEmitter', () => {
59
beforeEach(() => {
60
jest.resetModules();
@@ -66,7 +65,8 @@ describe('ReactBrowserEventEmitter', () => {
65
React = require('react');
66
ReactDOM = require('react-dom');
67
ReactDOMComponentTree = require('../client/ReactDOMComponentTree');
69
- DOMEventPluginSystem = require('../events/DOMEventPluginSystem');
68
+ listenToEvent = require('../events/DOMLegacyEventPluginSystem')
69
+ .legacyListenToEvent;
70
ReactDOMEventListener = require('../events/ReactDOMEventListener');
71
ReactTestUtils = require('react-dom/test-utils');
72
@@ -350,15 +350,15 @@ describe('ReactBrowserEventEmitter', () => {
350
351
it('should listen to events only once', () => {
352
spyOnDevAndProd(EventTarget.prototype, 'addEventListener');
353
- DOMEventPluginSystem.listenToEvent(ON_CLICK_KEY, document);
354
- DOMEventPluginSystem.listenToEvent(ON_CLICK_KEY, document);
353
+ listenToEvent(ON_CLICK_KEY, document);
354
+ listenToEvent(ON_CLICK_KEY, document);
355
expect(EventTarget.prototype.addEventListener).toHaveBeenCalledTimes(1);
356
});
357
358
it('should work with event plugins without dependencies', () => {
359
spyOnDevAndProd(EventTarget.prototype, 'addEventListener');
360
361
- DOMEventPluginSystem.listenToEvent(ON_CLICK_KEY, document);
361
+ listenToEvent(ON_CLICK_KEY, document);
362
363
expect(EventTarget.prototype.addEventListener.calls.argsFor(0)[0]).toBe(
364
'click',
@@ -368,7 +368,7 @@ describe('ReactBrowserEventEmitter', () => {
368
it('should work with event plugins with dependencies', () => {
369
spyOnDevAndProd(EventTarget.prototype, 'addEventListener');
370
371
- DOMEventPluginSystem.listenToEvent(ON_CHANGE_KEY, document);
371
+ listenToEvent(ON_CHANGE_KEY, document);
372
373
const setEventListeners = [];
374
const listenCalls = EventTarget.prototype.addEventListener.calls.allArgs();
packages/react-dom/src/client/ReactDOMComponent.js
+2
-2
@@ -87,7 +87,7 @@ import {
87
enableDeprecatedFlareAPI,
88
enableTrustedTypesIntegration,
89
} from 'shared/ReactFeatureFlags';
90
-import {listenToEvent} from '../events/DOMEventPluginSystem';
90
+import {legacyListenToEvent} from '../events/DOMLegacyEventPluginSystem';
91
92
let didWarnInvalidHydration = false;
93
let didWarnShadyDOM = false;
@@ -272,7 +272,7 @@ function ensureListeningTo(
272
const doc = isDocumentOrFragment
273
? rootContainerElement
274
: rootContainerElement.ownerDocument;
275
- listenToEvent(registrationName, doc);
275
+ legacyListenToEvent(registrationName, doc);
276
}
277
278
function getOwnerDocumentFromRootContainer(
packages/react-dom/src/events/DOMLegacyEventPluginSystem.js
renamed
+1
-1
@@ -307,7 +307,7 @@ export function dispatchEventForPluginEventSystem(
307
* @param {string} registrationName Name of listener (e.g. `onClick`).
308
* @param {object} mountAt Container where to mount the listener
309
*/
310
-export function listenToEvent(
310
+export function legacyListenToEvent(
311
registrationName: string,
312
mountAt: Document | Element | Node,
313
): void {
packages/react-dom/src/events/ReactDOMEventListener.js
+1
-1
@@ -60,7 +60,7 @@ import {
60
DiscreteEvent,
61
} from 'shared/ReactTypes';
62
import {getEventPriorityForPluginSystem} from './DOMEventProperties';
63
-import {dispatchEventForPluginEventSystem} from './DOMEventPluginSystem';
63
+import {dispatchEventForPluginEventSystem} from './DOMLegacyEventPluginSystem';
64
65
const {
66
unstable_UserBlockingPriority: UserBlockingPriority,
packages/react-dom/src/events/ReactDOMEventReplaying.js
+1
-1
@@ -117,7 +117,7 @@ import {
117
TOP_BLUR,
118
} from './DOMTopLevelEventTypes';
119
import {IS_REPLAYED} from 'legacy-events/EventSystemFlags';
120
-import {listenToTopLevelEvent} from './DOMEventPluginSystem';
120
+import {listenToTopLevelEvent} from './DOMLegacyEventPluginSystem';
121
122
type QueuedReplayableEvent = {|
123
blockedOn: null | Container | SuspenseInstance,
packages/react-dom/src/events/SelectEventPlugin.js
+1
-1
@@ -26,7 +26,7 @@ import getActiveElement from '../client/getActiveElement';
26
import {getNodeFromInstance} from '../client/ReactDOMComponentTree';
27
import {hasSelectionCapabilities} from '../client/ReactInputSelection';
28
import {DOCUMENT_NODE} from '../shared/HTMLNodeType';
29
-import {isListeningToAllDependencies} from './DOMEventPluginSystem';
29
+import {isListeningToAllDependencies} from './DOMLegacyEventPluginSystem';
30
31
const skipSelectionChangeEvent =
32
canUseDOM && 'documentMode' in document && document.documentMode <= 11;
packages/shared/ReactFeatureFlags.js
+3
@@ -139,3 +139,6 @@ export const warnUnstableRenderSubtreeIntoContainer = false;
139
140
// Disables ReactDOM.unstable_createPortal
141
export const disableUnstableCreatePortal = false;
142
+
143
+// Modern event system where events get registered at roots
144
+export const enableModernEventSystem = false;
packages/shared/forks/ReactFeatureFlags.native-fb.js
+1
@@ -55,6 +55,7 @@ export const disableUnstableCreatePortal = false;
55
export const deferPassiveEffectCleanupDuringUnmount = false;
56
export const runAllPassiveEffectDestroysBeforeCreates = false;
57
export const isTestEnvironment = false;
58
+export const enableModernEventSystem = false;
59
60
// Only used in www builds.
61
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.native-oss.js
+1
@@ -50,6 +50,7 @@ export const disableUnstableCreatePortal = false;
50
export const deferPassiveEffectCleanupDuringUnmount = false;
51
export const runAllPassiveEffectDestroysBeforeCreates = false;
52
export const isTestEnvironment = false;
53
+export const enableModernEventSystem = false;
54
55
// Only used in www builds.
56
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.persistent.js
+1
@@ -50,6 +50,7 @@ export const disableUnstableCreatePortal = false;
50
export const deferPassiveEffectCleanupDuringUnmount = false;
51
export const runAllPassiveEffectDestroysBeforeCreates = false;
52
export const isTestEnvironment = false;
53
+export const enableModernEventSystem = false;
54
55
// Only used in www builds.
56
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.test-renderer.js
+1
@@ -50,6 +50,7 @@ export const disableUnstableCreatePortal = false;
50
export const deferPassiveEffectCleanupDuringUnmount = false;
51
export const runAllPassiveEffectDestroysBeforeCreates = false;
52
export const isTestEnvironment = true; // this should probably *never* change
53
+export const enableModernEventSystem = false;
54
55
// Only used in www builds.
56
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+1
@@ -50,6 +50,7 @@ export const disableUnstableCreatePortal = false;
50
export const deferPassiveEffectCleanupDuringUnmount = false;
51
export const runAllPassiveEffectDestroysBeforeCreates = false;
52
export const isTestEnvironment = true; // this should probably *never* change
53
+export const enableModernEventSystem = false;
54
55
// Only used in www builds.
56
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.testing.js
+1
@@ -50,6 +50,7 @@ export const disableUnstableCreatePortal = false;
50
export const deferPassiveEffectCleanupDuringUnmount = false;
51
export const runAllPassiveEffectDestroysBeforeCreates = false;
52
export const isTestEnvironment = true;
53
+export const enableModernEventSystem = false;
54
55
// Only used in www builds.
56
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.testing.www.js
+1
@@ -50,6 +50,7 @@ export const disableUnstableCreatePortal = __EXPERIMENTAL__;
50
export const deferPassiveEffectCleanupDuringUnmount = false;
51
export const runAllPassiveEffectDestroysBeforeCreates = false;
52
export const isTestEnvironment = true;
53
+export const enableModernEventSystem = false;
54
55
// Only used in www builds.
56
export function addUserTimingListener() {
packages/shared/forks/ReactFeatureFlags.www.js
+2
@@ -112,6 +112,8 @@ export const disableUnstableCreatePortal = __EXPERIMENTAL__;
112
113
export const isTestEnvironment = false;
114
115
+export const enableModernEventSystem = false;
116
+
117
// Flow magic to verify the exports of this file match the original version.
118
// eslint-disable-next-line no-unused-vars
119
type Check<_X, Y: _X, X: Y = _X> = null;