mirror of
https://github.com/hanzoai/react.git
synced 2026-09-24 17:02:27 +00:00
Remove viewport metrics, other pageX/pageY behaviors (#9290)
* Remove viewport metrics event.pageX and event.pageY are in every browser React supports. * Rerecord tests
This commit is contained in:
committed by
Dan Abramov
parent
9beac3e3e3
commit
37e5df253c
@@ -868,7 +868,6 @@ src/renderers/dom/shared/__tests__/ReactBrowserEventEmitter-test.js
|
||||
* should work with event plugins without dependencies
|
||||
* should work with event plugins with dependencies
|
||||
* should bubble onTouchTap
|
||||
* should not crash ensureScrollValueMonitoring when createEvent returns null
|
||||
|
||||
src/renderers/dom/shared/__tests__/ReactDOM-test.js
|
||||
* allows a DOM element to be used with a string
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
var EventPluginRegistry = require('EventPluginRegistry');
|
||||
var ReactEventEmitterMixin = require('ReactEventEmitterMixin');
|
||||
var ViewportMetrics = require('ViewportMetrics');
|
||||
|
||||
var getVendorPrefixedEventName = require('getVendorPrefixedEventName');
|
||||
var isEventSupported = require('isEventSupported');
|
||||
@@ -73,9 +72,7 @@ var isEventSupported = require('isEventSupported');
|
||||
* React Core . General Purpose Event Plugin System
|
||||
*/
|
||||
|
||||
var hasEventPageXY;
|
||||
var alreadyListeningTo = {};
|
||||
var isMonitoringScrollValue = false;
|
||||
var reactTopListenersCounter = 0;
|
||||
|
||||
// For events like 'submit' which don't consistently bubble (which we trap at a
|
||||
@@ -344,41 +341,6 @@ var ReactBrowserEventEmitter = Object.assign({}, ReactEventEmitterMixin, {
|
||||
handle,
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Protect against document.createEvent() returning null
|
||||
* Some popup blocker extensions appear to do this:
|
||||
* https://github.com/facebook/react/issues/6887
|
||||
*/
|
||||
supportsEventPageXY: function() {
|
||||
if (!document.createEvent) {
|
||||
return false;
|
||||
}
|
||||
var ev = document.createEvent('MouseEvent');
|
||||
return ev != null && 'pageX' in ev;
|
||||
},
|
||||
|
||||
/**
|
||||
* Listens to window scroll and resize events. We cache scroll values so that
|
||||
* application code can access them without triggering reflows.
|
||||
*
|
||||
* ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
|
||||
* pageX/pageY isn't supported (legacy browsers).
|
||||
*
|
||||
* NOTE: Scroll events do not bubble.
|
||||
*
|
||||
* @see http://www.quirksmode.org/dom/events/scroll.html
|
||||
*/
|
||||
ensureScrollValueMonitoring: function() {
|
||||
if (hasEventPageXY === undefined) {
|
||||
hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
|
||||
}
|
||||
if (!hasEventPageXY && !isMonitoringScrollValue) {
|
||||
var refresh = ViewportMetrics.refreshScrollValues;
|
||||
ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
|
||||
isMonitoringScrollValue = true;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
module.exports = ReactBrowserEventEmitter;
|
||||
|
||||
@@ -435,20 +435,4 @@ describe('ReactBrowserEventEmitter', () => {
|
||||
expect(idCallOrder[1] === PARENT).toBe(true);
|
||||
expect(idCallOrder[2] === GRANDPARENT).toBe(true);
|
||||
});
|
||||
|
||||
it('should not crash ensureScrollValueMonitoring when createEvent returns null', () => {
|
||||
var originalCreateEvent = document.createEvent;
|
||||
document.createEvent = function() {
|
||||
return null;
|
||||
};
|
||||
spyOn(document, 'createEvent');
|
||||
|
||||
try {
|
||||
var hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
|
||||
expect(document.createEvent.calls.count()).toBe(1);
|
||||
expect(hasEventPageXY).toBe(false);
|
||||
} finally {
|
||||
document.createEvent = originalCreateEvent;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -16,7 +16,6 @@ var EventPluginUtils = require('EventPluginUtils');
|
||||
var EventPropagators = require('EventPropagators');
|
||||
var SyntheticUIEvent = require('SyntheticUIEvent');
|
||||
var TouchEventUtils = require('fbjs/lib/TouchEventUtils');
|
||||
var ViewportMetrics = require('ViewportMetrics');
|
||||
|
||||
var isStartish = EventPluginUtils.isStartish;
|
||||
var isEndish = EventPluginUtils.isEndish;
|
||||
@@ -74,9 +73,7 @@ function getAxisCoordOfEvent(
|
||||
if (singleTouch) {
|
||||
return singleTouch[axis.page];
|
||||
}
|
||||
return axis.page in nativeEvent
|
||||
? nativeEvent[axis.page]
|
||||
: nativeEvent[axis.client] + ViewportMetrics[axis.envScroll];
|
||||
return nativeEvent[axis.page];
|
||||
}
|
||||
|
||||
function getDistance(coords: CoordinatesType, nativeEvent: _Touch): number {
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
'use strict';
|
||||
|
||||
var SyntheticUIEvent = require('SyntheticUIEvent');
|
||||
var ViewportMetrics = require('ViewportMetrics');
|
||||
|
||||
var getEventModifierState = require('getEventModifierState');
|
||||
|
||||
@@ -25,6 +24,8 @@ var MouseEventInterface = {
|
||||
screenY: null,
|
||||
clientX: null,
|
||||
clientY: null,
|
||||
pageX: null,
|
||||
pageY: null,
|
||||
ctrlKey: null,
|
||||
shiftKey: null,
|
||||
altKey: null,
|
||||
@@ -51,17 +52,6 @@ var MouseEventInterface = {
|
||||
? event.toElement
|
||||
: event.fromElement);
|
||||
},
|
||||
// "Proprietary" Interface.
|
||||
pageX: function(event) {
|
||||
return 'pageX' in event
|
||||
? event.pageX
|
||||
: event.clientX + ViewportMetrics.currentScrollLeft;
|
||||
},
|
||||
pageY: function(event) {
|
||||
return 'pageY' in event
|
||||
? event.pageY
|
||||
: event.clientY + ViewportMetrics.currentScrollTop;
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/**
|
||||
* Copyright 2013-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule ViewportMetrics
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var ViewportMetrics = {
|
||||
currentScrollLeft: 0,
|
||||
|
||||
currentScrollTop: 0,
|
||||
|
||||
refreshScrollValues: function(scrollPosition) {
|
||||
ViewportMetrics.currentScrollLeft = scrollPosition.x;
|
||||
ViewportMetrics.currentScrollTop = scrollPosition.y;
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = ViewportMetrics;
|
||||
@@ -14,7 +14,6 @@
|
||||
var DOMLazyTree = require('DOMLazyTree');
|
||||
var DOMProperty = require('DOMProperty');
|
||||
var React = require('react');
|
||||
var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
|
||||
var ReactCurrentOwner = require('react/lib/ReactCurrentOwner');
|
||||
var ReactDOMComponentTree = require('ReactDOMComponentTree');
|
||||
var ReactDOMContainerInfo = require('ReactDOMContainerInfo');
|
||||
@@ -382,7 +381,6 @@ var ReactMount = {
|
||||
'_registerComponent(...): Target container is not a DOM element.',
|
||||
);
|
||||
|
||||
ReactBrowserEventEmitter.ensureScrollValueMonitoring();
|
||||
var componentInstance = instantiateReactComponent(nextElement, false);
|
||||
|
||||
if (callback) {
|
||||
|
||||
Reference in New Issue
Block a user