Remove injectReactDOMEventListener from ReactBrowserEventEmitter (#9656)
* Remove injectReactDOMEventListener from ReactBrowserEventEmitter This PR removes the injection of ReactDOMEventListener from ReactBrowserEventEmitter. Instead, the required initialization will happen directly in ReactDOMInjection. This injection was (probably) originally implemented for React Native but never used, so we can clean it up. * Mention how to see the full ouput of fiber tests
Philipp Spieß committed
May 11, 2017 at 02:05 UTC
b48107ed57cd9fa93fc85fb63b97de68734b7c46
7 files changed
+72
-100
docs/contributing/how-to-contribute.md
+1
-1
@@ -83,7 +83,7 @@ The core team is monitoring for pull requests. We will review your pull request
83
5. Make sure your code lints (`npm run lint`).
84
6. Format your code with [prettier](https://github.com/prettier/prettier) (`npm run prettier`).
85
7. Run the [Flow](https://flowtype.org/) typechecks (`npm run flow`).
86
-8. If you added or removed any tests, run `./scripts/fiber/record-tests` before submitting the pull request, and commit the resulting changes.
86
+8. If you added or removed any tests, run `./scripts/fiber/record-tests` before submitting the pull request, and commit the resulting changes. You can see the full output of fiber tests with `REACT_DOM_JEST_USE_FIBER=1 npm test`.
87
9. If you haven't already, complete the CLA.
88
89
### Contributor License Agreement (CLA)
scripts/rollup/results.json
+50
-50
@@ -9,28 +9,28 @@
9
"gzip": 5824
10
},
11
"react-dom.development.js (UMD_DEV)": {
12
- "size": 591916,
13
- "gzip": 136500
12
+ "size": 592317,
13
+ "gzip": 136560
14
},
15
"react-dom.production.min.js (UMD_PROD)": {
16
- "size": 122172,
17
- "gzip": 38559
16
+ "size": 121979,
17
+ "gzip": 38564
18
},
19
"react-dom-server.development.js (UMD_DEV)": {
20
- "size": 499074,
21
- "gzip": 120705
20
+ "size": 498439,
21
+ "gzip": 120624
22
},
23
"react-dom-server.production.min.js (UMD_PROD)": {
24
- "size": 107593,
25
- "gzip": 33517
24
+ "size": 107169,
25
+ "gzip": 33472
26
},
27
"react-art.development.js (UMD_DEV)": {
28
- "size": 348302,
29
- "gzip": 77888
28
+ "size": 349177,
29
+ "gzip": 77902
30
},
31
"react-art.production.min.js (UMD_PROD)": {
32
- "size": 96034,
33
- "gzip": 29269
32
+ "size": 96267,
33
+ "gzip": 29310
34
},
35
"react.development.js (NODE_DEV)": {
36
"size": 70293,
@@ -49,44 +49,44 @@
49
"gzip": 9216
50
},
51
"ReactDOMStack-dev.js (FB_DEV)": {
52
- "size": 494710,
53
- "gzip": 117992
52
+ "size": 494069,
53
+ "gzip": 117876
54
},
55
"ReactDOMStack-prod.js (FB_PROD)": {
56
- "size": 353169,
57
- "gzip": 84692
56
+ "size": 352489,
57
+ "gzip": 84575
58
},
59
"react-dom.development.js (NODE_DEV)": {
60
- "size": 549492,
61
- "gzip": 126720
60
+ "size": 549893,
61
+ "gzip": 126464
62
},
63
"react-dom.production.min.js (NODE_PROD)": {
64
- "size": 118381,
65
- "gzip": 37204
64
+ "size": 118192,
65
+ "gzip": 37224
66
},
67
"ReactDOMFiber-dev.js (FB_DEV)": {
68
- "size": 550414,
69
- "gzip": 127232
68
+ "size": 550815,
69
+ "gzip": 126958
70
},
71
"ReactDOMFiber-prod.js (FB_PROD)": {
72
- "size": 410323,
73
- "gzip": 94077
72
+ "size": 410570,
73
+ "gzip": 94005
74
},
75
"react-dom-server.development.js (NODE_DEV)": {
76
- "size": 447685,
77
- "gzip": 108152
76
+ "size": 447050,
77
+ "gzip": 108025
78
},
79
"react-dom-server.production.min.js (NODE_PROD)": {
80
- "size": 101966,
81
- "gzip": 31470
80
+ "size": 101542,
81
+ "gzip": 31424
82
},
83
"ReactDOMServerStack-dev.js (FB_DEV)": {
84
- "size": 446371,
85
- "gzip": 108003
84
+ "size": 445736,
85
+ "gzip": 107878
86
},
87
"ReactDOMServerStack-prod.js (FB_PROD)": {
88
- "size": 334124,
89
- "gzip": 80394
88
+ "size": 333450,
89
+ "gzip": 80260
90
},
91
"ReactARTStack-dev.js (FB_DEV)": {
92
"size": 143166,
@@ -97,20 +97,20 @@
97
"gzip": 23039
98
},
99
"react-art.development.js (NODE_DEV)": {
100
- "size": 269626,
101
- "gzip": 57755
100
+ "size": 270501,
101
+ "gzip": 57767
102
},
103
"react-art.production.min.js (NODE_PROD)": {
104
- "size": 57419,
105
- "gzip": 17338
104
+ "size": 57652,
105
+ "gzip": 17386
106
},
107
"ReactARTFiber-dev.js (FB_DEV)": {
108
- "size": 268884,
109
- "gzip": 57586
108
+ "size": 269759,
109
+ "gzip": 57590
110
},
111
"ReactARTFiber-prod.js (FB_PROD)": {
112
- "size": 207113,
113
- "gzip": 43453
112
+ "size": 208039,
113
+ "gzip": 43486
114
},
115
"ReactNativeStack.js (RN)": {
116
"size": 233993,
@@ -121,28 +121,28 @@
121
"gzip": 84001
122
},
123
"ReactTestRendererFiber-dev.js (FB_DEV)": {
124
- "size": 266386,
125
- "gzip": 56454
124
+ "size": 267261,
125
+ "gzip": 56462
126
},
127
"ReactTestRendererStack-dev.js (FB_DEV)": {
128
"size": 151770,
129
"gzip": 34846
130
},
131
"react-noop-renderer.development.js (NODE_DEV)": {
132
- "size": 258303,
133
- "gzip": 54417
132
+ "size": 259178,
133
+ "gzip": 54431
134
},
135
"react-test-renderer.development.js (NODE_DEV)": {
136
- "size": 267137,
137
- "gzip": 56637
136
+ "size": 268012,
137
+ "gzip": 56651
138
},
139
"react-dom-test-utils.development.js (NODE_DEV)": {
140
- "size": 52820,
141
- "gzip": 13580
140
+ "size": 52792,
141
+ "gzip": 13569
142
},
143
"ReactTestUtils-dev.js (FB_DEV)": {
144
- "size": 52753,
145
- "gzip": 13576
144
+ "size": 52725,
145
+ "gzip": 13564
146
},
147
"react-test-renderer-stack.development.js (NODE_DEV)": {
148
"size": 152686,
src/renderers/dom/ReactDOM.js
+1
-1
@@ -48,7 +48,7 @@ var ReactDOM = {
48
EventPropagators: require('EventPropagators'),
49
ReactControlledComponent: require('ReactControlledComponent'),
50
ReactDOMComponentTree,
51
- ReactBrowserEventEmitter: require('ReactBrowserEventEmitter'),
51
+ ReactDOMEventListener: require('ReactDOMEventListener'),
52
ReactUpdates: ReactUpdates,
53
},
54
};
src/renderers/dom/fiber/ReactDOMFiber.js
+1
-1
@@ -554,7 +554,7 @@ var ReactDOM = {
554
EventPropagators: require('EventPropagators'),
555
ReactControlledComponent,
556
ReactDOMComponentTree,
557
- ReactBrowserEventEmitter,
557
+ ReactDOMEventListener: require('ReactDOMEventListener'),
558
},
559
};
560
src/renderers/dom/shared/ReactBrowserEventEmitter.js
+15
-40
@@ -12,6 +12,7 @@
12
'use strict';
13
14
var EventPluginRegistry = require('EventPluginRegistry');
15
+var ReactDOMEventListener = require('ReactDOMEventListener');
16
var ReactEventEmitterMixin = require('ReactEventEmitterMixin');
17
18
var isEventSupported = require('isEventSupported');
@@ -92,31 +93,14 @@ function getListeningForDocument(mountAt) {
93
}
94
95
var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
95
- /**
96
- * Injectable event backend
97
- */
98
- ReactDOMEventListener: null,
99
-
100
- injection: {
101
- /**
102
- * @param {object} ReactDOMEventListener
103
- */
104
- injectReactDOMEventListener: function(ReactDOMEventListener) {
105
- ReactDOMEventListener.setHandleTopLevel(
106
- ReactBrowserEventEmitter.handleTopLevel,
107
- );
108
- ReactBrowserEventEmitter.ReactDOMEventListener = ReactDOMEventListener;
109
- },
110
- },
111
-
96
/**
97
* Sets whether or not any created callbacks should be enabled.
98
*
99
* @param {boolean} enabled True if callbacks should be enabled.
100
*/
101
setEnabled: function(enabled) {
118
- if (ReactBrowserEventEmitter.ReactDOMEventListener) {
119
- ReactBrowserEventEmitter.ReactDOMEventListener.setEnabled(enabled);
102
+ if (ReactDOMEventListener) {
103
+ ReactDOMEventListener.setEnabled(enabled);
104
}
105
},
106
@@ -124,8 +108,7 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
108
* @return {boolean} True if callbacks are enabled.
109
*/
110
isEnabled: function() {
127
- return !!(ReactBrowserEventEmitter.ReactDOMEventListener &&
128
- ReactBrowserEventEmitter.ReactDOMEventListener.isEnabled());
111
+ return !!(ReactDOMEventListener && ReactDOMEventListener.isEnabled());
112
},
113
114
/**
@@ -162,13 +145,13 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
145
) {
146
if (dependency === 'topWheel') {
147
if (isEventSupported('wheel')) {
165
- ReactBrowserEventEmitter.ReactDOMEventListener.trapBubbledEvent(
148
+ ReactDOMEventListener.trapBubbledEvent(
149
'topWheel',
150
'wheel',
151
mountAt,
152
);
153
} else if (isEventSupported('mousewheel')) {
171
- ReactBrowserEventEmitter.ReactDOMEventListener.trapBubbledEvent(
154
+ ReactDOMEventListener.trapBubbledEvent(
155
'topWheel',
156
'mousewheel',
157
mountAt,
@@ -176,36 +159,28 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
159
} else {
160
// Firefox needs to capture a different mouse scroll event.
161
// @see http://www.quirksmode.org/dom/events/tests/scroll.html
179
- ReactBrowserEventEmitter.ReactDOMEventListener.trapBubbledEvent(
162
+ ReactDOMEventListener.trapBubbledEvent(
163
'topWheel',
164
'DOMMouseScroll',
165
mountAt,
166
);
167
}
168
} else if (dependency === 'topScroll') {
186
- ReactBrowserEventEmitter.ReactDOMEventListener.trapCapturedEvent(
169
+ ReactDOMEventListener.trapCapturedEvent(
170
'topScroll',
171
'scroll',
172
mountAt,
173
);
174
} else if (dependency === 'topFocus' || dependency === 'topBlur') {
192
- ReactBrowserEventEmitter.ReactDOMEventListener.trapCapturedEvent(
193
- 'topFocus',
194
- 'focus',
195
- mountAt,
196
- );
197
- ReactBrowserEventEmitter.ReactDOMEventListener.trapCapturedEvent(
198
- 'topBlur',
199
- 'blur',
200
- mountAt,
201
- );
175
+ ReactDOMEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);
176
+ ReactDOMEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);
177
178
// to make sure blur and focus event listeners are only attached once
179
isListening.topBlur = true;
180
isListening.topFocus = true;
181
} else if (dependency === 'topCancel') {
182
if (isEventSupported('cancel', true)) {
208
- ReactBrowserEventEmitter.ReactDOMEventListener.trapCapturedEvent(
183
+ ReactDOMEventListener.trapCapturedEvent(
184
'topCancel',
185
'cancel',
186
mountAt,
@@ -214,7 +189,7 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
189
isListening.topCancel = true;
190
} else if (dependency === 'topClose') {
191
if (isEventSupported('close', true)) {
217
- ReactBrowserEventEmitter.ReactDOMEventListener.trapCapturedEvent(
192
+ ReactDOMEventListener.trapCapturedEvent(
193
'topClose',
194
'close',
195
mountAt,
@@ -222,7 +197,7 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
197
}
198
isListening.topClose = true;
199
} else if (topLevelTypes.hasOwnProperty(dependency)) {
225
- ReactBrowserEventEmitter.ReactDOMEventListener.trapBubbledEvent(
200
+ ReactDOMEventListener.trapBubbledEvent(
201
dependency,
202
topLevelTypes[dependency],
203
mountAt,
@@ -250,7 +225,7 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
225
},
226
227
trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {
253
- return ReactBrowserEventEmitter.ReactDOMEventListener.trapBubbledEvent(
228
+ return ReactDOMEventListener.trapBubbledEvent(
229
topLevelType,
230
handlerBaseName,
231
handle,
@@ -258,7 +233,7 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
233
},
234
235
trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {
261
- return ReactBrowserEventEmitter.ReactDOMEventListener.trapCapturedEvent(
236
+ return ReactDOMEventListener.trapCapturedEvent(
237
topLevelType,
238
handlerBaseName,
239
handle,
src/renderers/dom/shared/ReactDOMInjection.js
+2
-2
@@ -38,8 +38,8 @@ function inject() {
38
}
39
alreadyInjected = true;
40
41
- ReactBrowserEventEmitter.injection.injectReactDOMEventListener(
42
- ReactDOMEventListener,
41
+ ReactDOMEventListener.setHandleTopLevel(
42
+ ReactBrowserEventEmitter.handleTopLevel,
43
);
44
45
/**
src/renderers/dom/test/ReactTestUtils.js
+2
-5
@@ -28,9 +28,9 @@ var {
28
EventPluginHub,
29
EventPluginRegistry,
30
EventPropagators,
31
- ReactBrowserEventEmitter,
31
ReactControlledComponent,
32
ReactDOMComponentTree,
33
+ ReactDOMEventListener,
34
} = ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
35
36
var topLevelTypes = BrowserEventConstants.topLevelTypes;
@@ -395,10 +395,7 @@ var ReactTestUtils = {
395
*/
396
simulateNativeEventOnNode: function(topLevelType, node, fakeNativeEvent) {
397
fakeNativeEvent.target = node;
398
- ReactBrowserEventEmitter.ReactDOMEventListener.dispatchEvent(
399
- topLevelType,
400
- fakeNativeEvent,
401
- );
398
+ ReactDOMEventListener.dispatchEvent(topLevelType, fakeNativeEvent);
399
},
400
401
/**