Skip to content

Commit bd28025

Browse files
nhunzakergaearon
authored andcommitted
Remove viewport metrics, other pageX/pageY behaviors (facebook#9290)
* Remove viewport metrics event.pageX and event.pageY are in every browser React supports. * Rerecord tests
1 parent 5ad1c76 commit bd28025

File tree

7 files changed

+3
-98
lines changed

7 files changed

+3
-98
lines changed

scripts/fiber/tests-passing.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,6 @@ src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js
868868
* should work with event plugins without dependencies
869869
* should work with event plugins with dependencies
870870
* should bubble onTouchTap
871-
* should not crash ensureScrollValueMonitoring when createEvent returns null
872871

873872
src/renderers/dom/shared/__tests__/ReactDOM-test.js
874873
* allows a DOM element to be used with a string

src/renderers/dom/shared/ReactBrowserEventEmitter.js

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
var EventPluginRegistry = require('EventPluginRegistry');
1515
var ReactEventEmitterMixin = require('ReactEventEmitterMixin');
16-
var ViewportMetrics = require('ViewportMetrics');
1716

1817
var getVendorPrefixedEventName = require('getVendorPrefixedEventName');
1918
var isEventSupported = require('isEventSupported');
@@ -73,9 +72,7 @@ var isEventSupported = require('isEventSupported');
7372
* React Core . General Purpose Event Plugin System
7473
*/
7574

76-
var hasEventPageXY;
7775
var alreadyListeningTo = {};
78-
var isMonitoringScrollValue = false;
7976
var reactTopListenersCounter = 0;
8077

8178
// For events like 'submit' which don't consistently bubble (which we trap at a
@@ -344,41 +341,6 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
344341
handle,
345342
);
346343
},
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-
},
382344
});
383345

384346
module.exports = ReactBrowserEventEmitter;

src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -435,20 +435,4 @@ describe('ReactBrowserEventEmitter', () => {
435435
expect(idCallOrder[1] === PARENT).toBe(true);
436436
expect(idCallOrder[2] === GRANDPARENT).toBe(true);
437437
});
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-
});
454438
});

src/renderers/dom/shared/eventPlugins/TapEventPlugin.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ var EventPluginUtils = require('EventPluginUtils');
1616
var EventPropagators = require('EventPropagators');
1717
var SyntheticUIEvent = require('SyntheticUIEvent');
1818
var TouchEventUtils = require('fbjs/lib/TouchEventUtils');
19-
var ViewportMetrics = require('ViewportMetrics');
2019

2120
var isStartish = EventPluginUtils.isStartish;
2221
var isEndish = EventPluginUtils.isEndish;
@@ -74,9 +73,7 @@ function getAxisCoordOfEvent(
7473
if (singleTouch) {
7574
return singleTouch[axis.page];
7675
}
77-
return axis.page in nativeEvent
78-
? nativeEvent[axis.page]
79-
: nativeEvent[axis.client] + ViewportMetrics[axis.envScroll];
76+
return nativeEvent[axis.page];
8077
}
8178

8279
function getDistance(coords: CoordinatesType, nativeEvent: _Touch): number {

src/renderers/dom/shared/syntheticEvents/SyntheticMouseEvent.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
'use strict';
1313

1414
var SyntheticUIEvent = require('SyntheticUIEvent');
15-
var ViewportMetrics = require('ViewportMetrics');
1615

1716
var getEventModifierState = require('getEventModifierState');
1817

@@ -25,6 +24,8 @@ var MouseEventInterface = {
2524
screenY: null,
2625
clientX: null,
2726
clientY: null,
27+
pageX: null,
28+
pageY: null,
2829
ctrlKey: null,
2930
shiftKey: null,
3031
altKey: null,
@@ -51,17 +52,6 @@ var MouseEventInterface = {
5152
? event.toElement
5253
: event.fromElement);
5354
},
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-
},
6555
};
6656

6757
/**

src/renderers/dom/shared/utils/ViewportMetrics.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/renderers/dom/stack/client/ReactMount.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
var DOMLazyTree = require('DOMLazyTree');
1515
var DOMProperty = require('DOMProperty');
1616
var React = require('react');
17-
var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
1817
var ReactCurrentOwner = require('react/lib/ReactCurrentOwner');
1918
var ReactDOMComponentTree = require('ReactDOMComponentTree');
2019
var ReactDOMContainerInfo = require('ReactDOMContainerInfo');
@@ -382,7 +381,6 @@ var ReactMount = {
382381
'_registerComponent(...): Target container is not a DOM element.',
383382
);
384383

385-
ReactBrowserEventEmitter.ensureScrollValueMonitoring();
386384
var componentInstance = instantiateReactComponent(nextElement, false);
387385

388386
if (callback) {

0 commit comments

Comments
 (0)