mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Merge pull request #5085 from spicyj/cdp
Extract defineProperty feature testing to one file
(cherry picked from commit 2253405dcc)
This commit is contained in:
committed by
Paul O’Shannessy
parent
fb620be2b8
commit
fdb2486b98
@@ -14,6 +14,7 @@
|
||||
var ReactCurrentOwner = require('ReactCurrentOwner');
|
||||
|
||||
var assign = require('Object.assign');
|
||||
var canDefineProperty = require('canDefineProperty');
|
||||
|
||||
// The Symbol used to tag the ReactElement type. If there is no native Symbol
|
||||
// nor polyfill, then a plain number is used for performance.
|
||||
@@ -28,16 +29,6 @@ var RESERVED_PROPS = {
|
||||
__source: true,
|
||||
};
|
||||
|
||||
var canDefineProperty = false;
|
||||
if (__DEV__) {
|
||||
try {
|
||||
Object.defineProperty({}, 'x', {});
|
||||
canDefineProperty = true;
|
||||
} catch (x) {
|
||||
// IE will fail on defineProperty
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Base constructor for all React elements. This is only used to make this
|
||||
* work with a dynamic instanceof check. Nothing should live on this prototype.
|
||||
|
||||
@@ -23,6 +23,7 @@ var ReactPropTypeLocations = require('ReactPropTypeLocations');
|
||||
var ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');
|
||||
var ReactCurrentOwner = require('ReactCurrentOwner');
|
||||
|
||||
var canDefineProperty = require('canDefineProperty');
|
||||
var getIteratorFn = require('getIteratorFn');
|
||||
var invariant = require('invariant');
|
||||
var warning = require('warning');
|
||||
@@ -298,7 +299,7 @@ var ReactElementValidator = {
|
||||
validatedFactory.type = type;
|
||||
|
||||
if (__DEV__) {
|
||||
try {
|
||||
if (canDefineProperty) {
|
||||
Object.defineProperty(
|
||||
validatedFactory,
|
||||
'type',
|
||||
@@ -317,8 +318,6 @@ var ReactElementValidator = {
|
||||
},
|
||||
}
|
||||
);
|
||||
} catch (x) {
|
||||
// IE will fail on defineProperty (es5-shim/sham too)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
var ReactNoopUpdateQueue = require('ReactNoopUpdateQueue');
|
||||
|
||||
var canDefineProperty = require('canDefineProperty');
|
||||
var emptyObject = require('emptyObject');
|
||||
var invariant = require('invariant');
|
||||
var warning = require('warning');
|
||||
@@ -129,7 +130,7 @@ if (__DEV__) {
|
||||
],
|
||||
};
|
||||
var defineDeprecationWarning = function(methodName, info) {
|
||||
try {
|
||||
if (canDefineProperty) {
|
||||
Object.defineProperty(ReactComponent.prototype, methodName, {
|
||||
get: function() {
|
||||
warning(
|
||||
@@ -141,8 +142,6 @@ if (__DEV__) {
|
||||
return undefined;
|
||||
},
|
||||
});
|
||||
} catch (x) {
|
||||
// IE will fail on defineProperty (es5-shim/sham too)
|
||||
}
|
||||
};
|
||||
for (var fnName in deprecatedAPIs) {
|
||||
|
||||
@@ -180,6 +180,8 @@ function startWatchingForValueChange(target, targetID) {
|
||||
'value'
|
||||
);
|
||||
|
||||
// Not guarded in a canDefineProperty check: IE8 supports defineProperty only
|
||||
// on DOM elements
|
||||
Object.defineProperty(activeElement, 'value', newValueProp);
|
||||
activeElement.attachEvent('onpropertychange', handlePropertyChange);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ var ReactPerf = require('ReactPerf');
|
||||
var ReactUpdateQueue = require('ReactUpdateQueue');
|
||||
|
||||
var assign = require('Object.assign');
|
||||
var canDefineProperty = require('canDefineProperty');
|
||||
var escapeTextContentForBrowser = require('escapeTextContentForBrowser');
|
||||
var invariant = require('invariant');
|
||||
var isEventSupported = require('isEventSupported');
|
||||
@@ -54,13 +55,6 @@ var STYLE = keyOf({style: null});
|
||||
|
||||
var ELEMENT_NODE_TYPE = 1;
|
||||
|
||||
var canDefineProperty = false;
|
||||
try {
|
||||
Object.defineProperty({}, 'test', {get: function() {}});
|
||||
canDefineProperty = true;
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
function getDeclarationErrorAddendum(internalInstance) {
|
||||
if (internalInstance) {
|
||||
var owner = internalInstance._currentElement._owner || null;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Copyright 2013-2015, 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 canDefineProperty
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var canDefineProperty = false;
|
||||
if (__DEV__) {
|
||||
try {
|
||||
Object.defineProperty({}, 'x', {});
|
||||
canDefineProperty = true;
|
||||
} catch (x) {
|
||||
// IE will fail on defineProperty
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = canDefineProperty;
|
||||
Reference in New Issue
Block a user