Remove viewport metrics, other pageX/pageY behaviors (#9290)
* Remove viewport metrics event.pageX and event.pageY are in every browser React supports. * Rerecord tests
Nathan Hunzaker committed
Mar 30, 2017 at 21:20 UTC
bd2802523c3b1587a79d6ac06cb0e9351b3e68d8
7 files changed
+3
-98
scripts/fiber/tests-passing.txt
-1
@@ -868,7 +868,6 @@ src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js
868
* should work with event plugins without dependencies
869
* should work with event plugins with dependencies
870
* should bubble onTouchTap
871
-* should not crash ensureScrollValueMonitoring when createEvent returns null
871
872
src/renderers/dom/shared/__tests__/ReactDOM-test.js
873
* allows a DOM element to be used with a string
src/renderers/dom/shared/ReactBrowserEventEmitter.js
-38
@@ -13,7 +13,6 @@
13
14
var EventPluginRegistry = require('EventPluginRegistry');
15
var ReactEventEmitterMixin = require('ReactEventEmitterMixin');
16
-var ViewportMetrics = require('ViewportMetrics');
16
17
var getVendorPrefixedEventName = require('getVendorPrefixedEventName');
18
var isEventSupported = require('isEventSupported');
@@ -73,9 +72,7 @@ var isEventSupported = require('isEventSupported');
72
* React Core . General Purpose Event Plugin System
73
*/
74
76
-var hasEventPageXY;
75
var alreadyListeningTo = {};
78
-var isMonitoringScrollValue = false;
76
var reactTopListenersCounter = 0;
77
78
// For events like 'submit' which don't consistently bubble (which we trap at a
@@ -344,41 +341,6 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
341
handle,
342
);
343
},
347
-
348
- /**
349
- * Protect against document.createEvent() returning null
350
- * Some popup blocker extensions appear to do this:
351
- * https://github.com/facebook/react/issues/6887
352
- */
353
- supportsEventPageXY: function() {
354
- if (!document.createEvent) {
355
- return false;
356
- }
357
- var ev = document.createEvent('MouseEvent');
358
- return ev != null && 'pageX' in ev;
359
- },
360
-
361
- /**
362
- * Listens to window scroll and resize events. We cache scroll values so that
363
- * application code can access them without triggering reflows.
364
- *
365
- * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
366
- * pageX/pageY isn't supported (legacy browsers).
367
- *
368
- * NOTE: Scroll events do not bubble.
369
- *
370
- * @see http://www.quirksmode.org/dom/events/scroll.html
371
- */
372
- ensureScrollValueMonitoring: function() {
373
- if (hasEventPageXY === undefined) {
374
- hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
375
- }
376
- if (!hasEventPageXY && !isMonitoringScrollValue) {
377
- var refresh = ViewportMetrics.refreshScrollValues;
378
- ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
379
- isMonitoringScrollValue = true;
380
- }
381
- },
344
});
345
346
module.exports = ReactBrowserEventEmitter;
src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js
-16
@@ -435,20 +435,4 @@ describe('ReactBrowserEventEmitter', () => {
435
expect(idCallOrder[1] === PARENT).toBe(true);
436
expect(idCallOrder[2] === GRANDPARENT).toBe(true);
437
});
438
-
439
- it('should not crash ensureScrollValueMonitoring when createEvent returns null', () => {
440
- var originalCreateEvent = document.createEvent;
441
- document.createEvent = function() {
442
- return null;
443
- };
444
- spyOn(document, 'createEvent');
445
-
446
- try {
447
- var hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
448
- expect(document.createEvent.calls.count()).toBe(1);
449
- expect(hasEventPageXY).toBe(false);
450
- } finally {
451
- document.createEvent = originalCreateEvent;
452
- }
453
- });
438
});
src/renderers/dom/shared/eventPlugins/TapEventPlugin.js
+1
-4
@@ -16,7 +16,6 @@ var EventPluginUtils = require('EventPluginUtils');
16
var EventPropagators = require('EventPropagators');
17
var SyntheticUIEvent = require('SyntheticUIEvent');
18
var TouchEventUtils = require('fbjs/lib/TouchEventUtils');
19
-var ViewportMetrics = require('ViewportMetrics');
19
20
var isStartish = EventPluginUtils.isStartish;
21
var isEndish = EventPluginUtils.isEndish;
@@ -74,9 +73,7 @@ function getAxisCoordOfEvent(
73
if (singleTouch) {
74
return singleTouch[axis.page];
75
}
77
- return axis.page in nativeEvent
78
- ? nativeEvent[axis.page]
79
- : nativeEvent[axis.client] + ViewportMetrics[axis.envScroll];
76
+ return nativeEvent[axis.page];
77
}
78
79
function getDistance(coords: CoordinatesType, nativeEvent: _Touch): number {
src/renderers/dom/shared/syntheticEvents/SyntheticMouseEvent.js
+2
-12
@@ -12,7 +12,6 @@
12
'use strict';
13
14
var SyntheticUIEvent = require('SyntheticUIEvent');
15
-var ViewportMetrics = require('ViewportMetrics');
15
16
var getEventModifierState = require('getEventModifierState');
17
@@ -25,6 +24,8 @@ var MouseEventInterface = {
24
screenY: null,
25
clientX: null,
26
clientY: null,
27
+ pageX: null,
28
+ pageY: null,
29
ctrlKey: null,
30
shiftKey: null,
31
altKey: null,
@@ -51,17 +52,6 @@ var MouseEventInterface = {
52
? event.toElement
53
: event.fromElement);
54
},
54
- // "Proprietary" Interface.
55
- pageX: function(event) {
56
- return 'pageX' in event
57
- ? event.pageX
58
- : event.clientX + ViewportMetrics.currentScrollLeft;
59
- },
60
- pageY: function(event) {
61
- return 'pageY' in event
62
- ? event.pageY
63
- : event.clientY + ViewportMetrics.currentScrollTop;
64
- },
55
};
56
57
/**
src/renderers/dom/shared/utils/ViewportMetrics.js
deleted
-25
@@ -1,25 +0,0 @@
1
-/**
2
- * Copyright 2013-present, Facebook, Inc.
3
- * All rights reserved.
4
- *
5
- * This source code is licensed under the BSD-style license found in the
6
- * LICENSE file in the root directory of this source tree. An additional grant
7
- * of patent rights can be found in the PATENTS file in the same directory.
8
- *
9
- * @providesModule ViewportMetrics
10
- */
11
-
12
-'use strict';
13
-
14
-var ViewportMetrics = {
15
- currentScrollLeft: 0,
16
-
17
- currentScrollTop: 0,
18
-
19
- refreshScrollValues: function(scrollPosition) {
20
- ViewportMetrics.currentScrollLeft = scrollPosition.x;
21
- ViewportMetrics.currentScrollTop = scrollPosition.y;
22
- },
23
-};
24
-
25
-module.exports = ViewportMetrics;
src/renderers/dom/stack/client/ReactMount.js
-2
@@ -14,7 +14,6 @@
14
var DOMLazyTree = require('DOMLazyTree');
15
var DOMProperty = require('DOMProperty');
16
var React = require('react');
17
-var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
17
var ReactCurrentOwner = require('react/lib/ReactCurrentOwner');
18
var ReactDOMComponentTree = require('ReactDOMComponentTree');
19
var ReactDOMContainerInfo = require('ReactDOMContainerInfo');
@@ -382,7 +381,6 @@ var ReactMount = {
381
'_registerComponent(...): Target container is not a DOM element.',
382
);
383
385
- ReactBrowserEventEmitter.ensureScrollValueMonitoring();
384
var componentInstance = instantiateReactComponent(nextElement, false);
385
386
if (callback) {