Changeset 287534 in webkit for trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
- Timestamp:
- Jan 3, 2022, 2:00:53 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r287487 r287534 1346 1346 } 1347 1347 1348 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationDuration(double duration) 1349 { 1350 return CSSValuePool::singleton().createValue(duration, CSSUnitType::CSS_S); 1351 } 1352 1353 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationDelay(double delay) 1354 { 1355 return CSSValuePool::singleton().createValue(delay, CSSUnitType::CSS_S); 1356 } 1357 1358 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationIterationCount(double iterationCount) 1359 { 1360 if (iterationCount == Animation::IterationCountInfinite) 1361 return CSSValuePool::singleton().createIdentifierValue(CSSValueInfinite); 1362 return CSSValuePool::singleton().createValue(iterationCount, CSSUnitType::CSS_NUMBER); 1363 } 1364 1365 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationDirection(Animation::AnimationDirection direction) 1366 { 1367 switch (direction) { 1368 case Animation::AnimationDirectionNormal: 1369 return CSSValuePool::singleton().createIdentifierValue(CSSValueNormal); 1370 case Animation::AnimationDirectionAlternate: 1371 return CSSValuePool::singleton().createIdentifierValue(CSSValueAlternate); 1372 case Animation::AnimationDirectionReverse: 1373 return CSSValuePool::singleton().createIdentifierValue(CSSValueReverse); 1374 case Animation::AnimationDirectionAlternateReverse: 1375 return CSSValuePool::singleton().createIdentifierValue(CSSValueAlternateReverse); 1376 } 1377 } 1378 1379 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationFillMode(AnimationFillMode fillMode) 1380 { 1381 switch (fillMode) { 1382 case AnimationFillMode::None: 1383 return CSSValuePool::singleton().createIdentifierValue(CSSValueNone); 1384 case AnimationFillMode::Forwards: 1385 return CSSValuePool::singleton().createIdentifierValue(CSSValueForwards); 1386 case AnimationFillMode::Backwards: 1387 return CSSValuePool::singleton().createIdentifierValue(CSSValueBackwards); 1388 case AnimationFillMode::Both: 1389 return CSSValuePool::singleton().createIdentifierValue(CSSValueBoth); 1390 } 1391 } 1392 1393 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationPlayState(AnimationPlayState playState) 1394 { 1395 switch (playState) { 1396 case AnimationPlayState::Playing: 1397 return CSSValuePool::singleton().createIdentifierValue(CSSValueRunning); 1398 case AnimationPlayState::Paused: 1399 return CSSValuePool::singleton().createIdentifierValue(CSSValuePaused); 1400 } 1401 } 1402 1403 Ref<CSSPrimitiveValue> ComputedStyleExtractor::valueForAnimationName(const Animation::Name& name) 1404 { 1405 if (name.isIdentifier) 1406 return CSSValuePool::singleton().createCustomIdent(name.string); 1407 return CSSValuePool::singleton().createValue(name.string, CSSUnitType::CSS_STRING); 1408 } 1409 1348 1410 static Ref<CSSValueList> delayValue(const AnimationList* animationList) 1349 1411 { 1350 auto& cssValuePool = CSSValuePool::singleton();1351 1412 auto list = CSSValueList::createCommaSeparated(); 1352 1413 if (animationList) { 1353 1414 for (size_t i = 0; i < animationList->size(); ++i) 1354 list->append( cssValuePool.createValue(animationList->animation(i).delay(), CSSUnitType::CSS_S));1415 list->append(ComputedStyleExtractor::valueForAnimationDelay(animationList->animation(i).delay())); 1355 1416 } else { 1356 1417 // Note that initialAnimationDelay() is used for both transitions and animations 1357 list->append( cssValuePool.createValue(Animation::initialDelay(), CSSUnitType::CSS_S));1418 list->append(ComputedStyleExtractor::valueForAnimationDelay(Animation::initialDelay())); 1358 1419 } 1359 1420 return list; … … 1362 1423 static Ref<CSSValueList> durationValue(const AnimationList* animationList) 1363 1424 { 1364 auto& cssValuePool = CSSValuePool::singleton();1365 1425 auto list = CSSValueList::createCommaSeparated(); 1366 1426 if (animationList) { 1367 1427 for (size_t i = 0; i < animationList->size(); ++i) 1368 list->append( cssValuePool.createValue(animationList->animation(i).duration(), CSSUnitType::CSS_S));1428 list->append(ComputedStyleExtractor::valueForAnimationDuration(animationList->animation(i).duration())); 1369 1429 } else { 1370 1430 // Note that initialAnimationDuration() is used for both transitions and animations 1371 list->append( cssValuePool.createValue(Animation::initialDuration(), CSSUnitType::CSS_S));1431 list->append(ComputedStyleExtractor::valueForAnimationDuration(Animation::initialDuration())); 1372 1432 } 1373 1433 return list; 1374 1434 } 1375 1435 1376 static Ref<CSSValue> createTimingFunctionValue(const TimingFunction& timingFunction)1436 Ref<CSSValue> ComputedStyleExtractor::valueForAnimationTimingFunction(const TimingFunction& timingFunction) 1377 1437 { 1378 1438 switch (timingFunction.type()) { … … 1419 1479 if (animationList) { 1420 1480 for (size_t i = 0; i < animationList->size(); ++i) 1421 list->append( createTimingFunctionValue(*animationList->animation(i).timingFunction()));1481 list->append(ComputedStyleExtractor::valueForAnimationTimingFunction(*animationList->animation(i).timingFunction())); 1422 1482 } else 1423 1483 // Note that initialAnimationTimingFunction() is used for both transitions and animations 1424 list->append( createTimingFunctionValue(Animation::initialTimingFunction()));1484 list->append(ComputedStyleExtractor::valueForAnimationTimingFunction(Animation::initialTimingFunction())); 1425 1485 return list; 1426 1486 } … … 3513 3573 const AnimationList* t = style.animations(); 3514 3574 if (t) { 3515 for (size_t i = 0; i < t->size(); ++i) { 3516 switch (t->animation(i).direction()) { 3517 case Animation::AnimationDirectionNormal: 3518 list->append(cssValuePool.createIdentifierValue(CSSValueNormal)); 3519 break; 3520 case Animation::AnimationDirectionAlternate: 3521 list->append(cssValuePool.createIdentifierValue(CSSValueAlternate)); 3522 break; 3523 case Animation::AnimationDirectionReverse: 3524 list->append(cssValuePool.createIdentifierValue(CSSValueReverse)); 3525 break; 3526 case Animation::AnimationDirectionAlternateReverse: 3527 list->append(cssValuePool.createIdentifierValue(CSSValueAlternateReverse)); 3528 break; 3529 } 3530 } 3575 for (size_t i = 0; i < t->size(); ++i) 3576 list->append(valueForAnimationDirection(t->animation(i).direction())); 3531 3577 } else 3532 3578 list->append(cssValuePool.createIdentifierValue(CSSValueNormal)); … … 3539 3585 const AnimationList* t = style.animations(); 3540 3586 if (t) { 3541 for (size_t i = 0; i < t->size(); ++i) { 3542 switch (t->animation(i).fillMode()) { 3543 case AnimationFillMode::None: 3544 list->append(cssValuePool.createIdentifierValue(CSSValueNone)); 3545 break; 3546 case AnimationFillMode::Forwards: 3547 list->append(cssValuePool.createIdentifierValue(CSSValueForwards)); 3548 break; 3549 case AnimationFillMode::Backwards: 3550 list->append(cssValuePool.createIdentifierValue(CSSValueBackwards)); 3551 break; 3552 case AnimationFillMode::Both: 3553 list->append(cssValuePool.createIdentifierValue(CSSValueBoth)); 3554 break; 3555 } 3556 } 3587 for (size_t i = 0; i < t->size(); ++i) 3588 list->append(valueForAnimationFillMode(t->animation(i).fillMode())); 3557 3589 } else 3558 3590 list->append(cssValuePool.createIdentifierValue(CSSValueNone)); … … 3563 3595 const AnimationList* t = style.animations(); 3564 3596 if (t) { 3565 for (size_t i = 0; i < t->size(); ++i) { 3566 double iterationCount = t->animation(i).iterationCount(); 3567 if (iterationCount == Animation::IterationCountInfinite) 3568 list->append(cssValuePool.createIdentifierValue(CSSValueInfinite)); 3569 else 3570 list->append(cssValuePool.createValue(iterationCount, CSSUnitType::CSS_NUMBER)); 3571 } 3597 for (size_t i = 0; i < t->size(); ++i) 3598 list->append(valueForAnimationIterationCount(t->animation(i).iterationCount())); 3572 3599 } else 3573 3600 list->append(cssValuePool.createValue(Animation::initialIterationCount(), CSSUnitType::CSS_NUMBER)); … … 3578 3605 const AnimationList* t = style.animations(); 3579 3606 if (t) { 3580 for (size_t i = 0; i < t->size(); ++i) { 3581 auto& name = t->animation(i).name(); 3582 if (name.isIdentifier) 3583 list->append(cssValuePool.createCustomIdent(name.string)); 3584 else 3585 list->append(cssValuePool.createValue(name.string, CSSUnitType::CSS_STRING)); 3586 } 3607 for (size_t i = 0; i < t->size(); ++i) 3608 list->append(valueForAnimationName(t->animation(i).name())); 3587 3609 } else 3588 3610 list->append(cssValuePool.createIdentifierValue(CSSValueNone)); … … 3593 3615 const AnimationList* t = style.animations(); 3594 3616 if (t) { 3595 for (size_t i = 0; i < t->size(); ++i) { 3596 switch (t->animation(i).playState()) { 3597 case AnimationPlayState::Playing: 3598 list->append(cssValuePool.createIdentifierValue(CSSValueRunning)); 3599 break; 3600 case AnimationPlayState::Paused: 3601 list->append(cssValuePool.createIdentifierValue(CSSValuePaused)); 3602 break; 3603 } 3604 } 3617 for (size_t i = 0; i < t->size(); ++i) 3618 list->append(valueForAnimationPlayState(t->animation(i).playState())); 3605 3619 } else 3606 3620 list->append(cssValuePool.createIdentifierValue(CSSValueRunning)); … … 3816 3830 list->append(createTransitionPropertyValue(animation)); 3817 3831 list->append(cssValuePool.createValue(animation.duration(), CSSUnitType::CSS_S)); 3818 list->append( createTimingFunctionValue(*animation.timingFunction()));3832 list->append(valueForAnimationTimingFunction(*animation.timingFunction())); 3819 3833 list->append(cssValuePool.createValue(animation.delay(), CSSUnitType::CSS_S)); 3820 3834 transitionsList->append(WTFMove(list)); … … 3827 3841 list->append(cssValuePool.createIdentifierValue(CSSValueAll)); 3828 3842 list->append(cssValuePool.createValue(Animation::initialDuration(), CSSUnitType::CSS_S)); 3829 list->append( createTimingFunctionValue(Animation::initialTimingFunction()));3843 list->append(valueForAnimationTimingFunction(Animation::initialTimingFunction())); 3830 3844 list->append(cssValuePool.createValue(Animation::initialDelay(), CSSUnitType::CSS_S)); 3831 3845 return list;
Note:
See TracChangeset
for help on using the changeset viewer.