Merge pull request #2415 from zpao/sync-internal

Sync internal
This commit is contained in:
Paul O’Shannessy
2014-10-28 14:30:06 -07:00
3 changed files with 49 additions and 8 deletions
+23 -6
View File
@@ -62,13 +62,15 @@ var dependencies = [
topLevelTypes.topMouseUp
];
var touchDependencies = [
topLevelTypes.topTouchStart,
topLevelTypes.topTouchCancel,
topLevelTypes.topTouchEnd,
topLevelTypes.topTouchMove
];
if (EventPluginUtils.useTouchEvents) {
dependencies.push(
topLevelTypes.topTouchCancel,
topLevelTypes.topTouchEnd,
topLevelTypes.topTouchStart,
topLevelTypes.topTouchMove
);
dependencies = dependencies.concat(touchDependencies);
}
var eventTypes = {
@@ -81,6 +83,10 @@ var eventTypes = {
}
};
var usedTouch = false;
var usedTouchTime = 0;
var TOUCH_DELAY = 500;
var TapEventPlugin = {
tapMoveThreshold: tapMoveThreshold,
@@ -103,6 +109,17 @@ var TapEventPlugin = {
if (!isStartish(topLevelType) && !isEndish(topLevelType)) {
return null;
}
// on ios, there is a delay after touch event and synthetic
// mouse events, so that user can perform double tap
// solution: ignore mouse events following touchevent within small timeframe
if (touchDependencies.indexOf(topLevelType) !== -1) {
usedTouch = true;
usedTouchTime = Date.now();
} else {
if (usedTouch && (Date.now() - usedTouchTime < TOUCH_DELAY)) {
return;
}
}
var event = null;
var distance = getDistance(startCoords, nativeEvent);
if (isEndish(topLevelType) && distance < tapMoveThreshold) {
+26 -2
View File
@@ -407,8 +407,32 @@ describe('ReactPropTypes', function() {
});
it('should still work for deprecated typechecks', function() {
typeCheckPass(PropTypes.renderable, []);
typeCheckPass(PropTypes.renderable.isRequired, []);
// We can't use typeCheckPass here because the warning module may do
// something different in some environments. Luckily they should be fine
// if they detect that console.warn is spied upon.
spyOn(console, 'warn');
// typeCheckPass(PropTypes.renderable, []);
var error = PropTypes.renderable(
{testProp: []},
'testProp',
'testComponent',
ReactPropTypeLocations.prop
);
expect(error).toBe(undefined);
expect(console.warn.calls.length).toBe(1);
// typeCheckPass(PropTypes.renderable.isRequired, []);
error = PropTypes.renderable.isRequired(
{testProp: []},
'testProp',
'testComponent',
ReactPropTypeLocations.prop
);
expect(error).toBe(undefined);
expect(console.warn.calls.length).toBe(1);
});
});