mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Fix DOMProperty bitmask checking
This commit is contained in:
@@ -23,6 +23,10 @@
|
||||
|
||||
var invariant = require('invariant');
|
||||
|
||||
function checkMask(value, bitmask) {
|
||||
return (value & bitmask) === bitmask;
|
||||
}
|
||||
|
||||
var DOMPropertyInjection = {
|
||||
/**
|
||||
* Mapping from normalized, camelcased property names to a configuration that
|
||||
@@ -109,19 +113,19 @@ var DOMPropertyInjection = {
|
||||
|
||||
var propConfig = Properties[propName];
|
||||
DOMProperty.mustUseAttribute[propName] =
|
||||
propConfig & DOMPropertyInjection.MUST_USE_ATTRIBUTE;
|
||||
checkMask(propConfig, DOMPropertyInjection.MUST_USE_ATTRIBUTE);
|
||||
DOMProperty.mustUseProperty[propName] =
|
||||
propConfig & DOMPropertyInjection.MUST_USE_PROPERTY;
|
||||
checkMask(propConfig, DOMPropertyInjection.MUST_USE_PROPERTY);
|
||||
DOMProperty.hasSideEffects[propName] =
|
||||
propConfig & DOMPropertyInjection.HAS_SIDE_EFFECTS;
|
||||
checkMask(propConfig, DOMPropertyInjection.HAS_SIDE_EFFECTS);
|
||||
DOMProperty.hasBooleanValue[propName] =
|
||||
propConfig & DOMPropertyInjection.HAS_BOOLEAN_VALUE;
|
||||
checkMask(propConfig, DOMPropertyInjection.HAS_BOOLEAN_VALUE);
|
||||
DOMProperty.hasNumericValue[propName] =
|
||||
propConfig & DOMPropertyInjection.HAS_NUMERIC_VALUE;
|
||||
checkMask(propConfig, DOMPropertyInjection.HAS_NUMERIC_VALUE);
|
||||
DOMProperty.hasPositiveNumericValue[propName] =
|
||||
propConfig & DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE;
|
||||
checkMask(propConfig, DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);
|
||||
DOMProperty.hasOverloadedBooleanValue[propName] =
|
||||
propConfig & DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE;
|
||||
checkMask(propConfig, DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);
|
||||
|
||||
invariant(
|
||||
!DOMProperty.mustUseAttribute[propName] ||
|
||||
|
||||
@@ -158,6 +158,28 @@ describe('DOMPropertyOperations', function() {
|
||||
)).toBe('');
|
||||
});
|
||||
|
||||
it('should create markup for numeric properties', function() {
|
||||
expect(DOMPropertyOperations.createMarkupForProperty(
|
||||
'start',
|
||||
5
|
||||
)).toBe('start="5"');
|
||||
|
||||
expect(DOMPropertyOperations.createMarkupForProperty(
|
||||
'start',
|
||||
0
|
||||
)).toBe('start="0"');
|
||||
|
||||
expect(DOMPropertyOperations.createMarkupForProperty(
|
||||
'size',
|
||||
0
|
||||
)).toBe('');
|
||||
|
||||
expect(DOMPropertyOperations.createMarkupForProperty(
|
||||
'size',
|
||||
1
|
||||
)).toBe('size="1"');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('setValueForProperty', function() {
|
||||
|
||||
Reference in New Issue
Block a user