@samitouri / QOS-React / commits / b48107ed57

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 /**