|
13 | 13 | #include <tuple> |
14 | 14 |
|
15 | 15 | #include "base/include/auto_reset.h" |
| 16 | +#include "core/animation/css_transition_manager.h" |
16 | 17 | #include "core/base/threading/task_runner_manufactor.h" |
17 | 18 | #include "core/base/threading/vsync_monitor.h" |
18 | 19 | #include "core/renderer/css/computed_css_style_css_text_helper.h" |
@@ -5517,6 +5518,126 @@ TEST_P(FiberElementTest, DynamicViewportUpdate) { |
5517 | 5518 | CSSValue(0.f, CSSValuePattern::CALC), 1)); |
5518 | 5519 | } |
5519 | 5520 |
|
| 5521 | +TEST_P(FiberElementTest, |
| 5522 | + DynamicViewportUpdate_SkipTransitionConsume_FiberArch) { |
| 5523 | + manager->UpdateViewport(100, SLMeasureModeDefinite, 600, |
| 5524 | + SLMeasureModeDefinite, false); |
| 5525 | + |
| 5526 | + auto page = manager->CreateFiberPage("page", 11); |
| 5527 | + auto element = manager->CreateFiberView(); |
| 5528 | + element->SetStyle(CSSPropertyID::kPropertyIDWidth, lepus::Value("50vh")); |
| 5529 | + |
| 5530 | + page->InsertNode(element); |
| 5531 | + page->FlushActionsAsRoot(); |
| 5532 | + |
| 5533 | + element->css_transition_manager_ = |
| 5534 | + std::make_unique<animation::CSSTransitionManager>(element.get()); |
| 5535 | + base::Vector<starlight::TransitionData> transition_data; |
| 5536 | + starlight::TransitionData data; |
| 5537 | + data.property = starlight::AnimationPropertyType::kWidth; |
| 5538 | + transition_data.emplace_back(data); |
| 5539 | + element->css_transition_manager_->setTransitionData(transition_data); |
| 5540 | + |
| 5541 | + tasm_mediator.captured_ids_.clear(); |
| 5542 | + tasm_mediator.captured_bundles_.clear(); |
| 5543 | + manager->UpdateViewport(200, SLMeasureModeDefinite, 800, |
| 5544 | + SLMeasureModeDefinite, false); |
| 5545 | + EXPECT_FALSE(HasCaptureSignWithStyleKeyAndValuePattern( |
| 5546 | + element->impl_id(), CSSPropertyID::kPropertyIDWidth, |
| 5547 | + CSSValue(0.f, CSSValuePattern::VH), 1)); |
| 5548 | +} |
| 5549 | + |
| 5550 | +TEST_P(FiberElementTest, |
| 5551 | + DynamicViewportUpdate_SkipTransitionConsume_RadonArch_FlagOff) { |
| 5552 | + manager->UpdateViewport(100, SLMeasureModeDefinite, 600, |
| 5553 | + SLMeasureModeDefinite, false); |
| 5554 | + |
| 5555 | + auto page = manager->CreateFiberPage("page", 11); |
| 5556 | + auto element = manager->CreateFiberView(); |
| 5557 | + element->SetStyle(CSSPropertyID::kPropertyIDWidth, lepus::Value("50vh")); |
| 5558 | + element->arch_type_ = RadonArch; |
| 5559 | + manager->fix_dynamic_update_transition_consume_bug_ = false; |
| 5560 | + |
| 5561 | + page->InsertNode(element); |
| 5562 | + page->FlushActionsAsRoot(); |
| 5563 | + |
| 5564 | + element->css_transition_manager_ = |
| 5565 | + std::make_unique<animation::CSSTransitionManager>(element.get()); |
| 5566 | + base::Vector<starlight::TransitionData> transition_data; |
| 5567 | + starlight::TransitionData data; |
| 5568 | + data.property = starlight::AnimationPropertyType::kWidth; |
| 5569 | + transition_data.emplace_back(data); |
| 5570 | + element->css_transition_manager_->setTransitionData(transition_data); |
| 5571 | + |
| 5572 | + tasm_mediator.captured_ids_.clear(); |
| 5573 | + tasm_mediator.captured_bundles_.clear(); |
| 5574 | + manager->UpdateViewport(200, SLMeasureModeDefinite, 800, |
| 5575 | + SLMeasureModeDefinite, false); |
| 5576 | + EXPECT_FALSE(HasCaptureSignWithStyleKeyAndValuePattern( |
| 5577 | + element->impl_id(), CSSPropertyID::kPropertyIDWidth, |
| 5578 | + CSSValue(0.f, CSSValuePattern::VH), 1)); |
| 5579 | +} |
| 5580 | + |
| 5581 | +TEST_P(FiberElementTest, |
| 5582 | + DynamicViewportUpdate_SkipTransitionConsume_RadonArch_FlagOn) { |
| 5583 | + manager->UpdateViewport(100, SLMeasureModeDefinite, 600, |
| 5584 | + SLMeasureModeDefinite, false); |
| 5585 | + |
| 5586 | + auto page = manager->CreateFiberPage("page", 11); |
| 5587 | + auto element = manager->CreateFiberView(); |
| 5588 | + element->SetStyle(CSSPropertyID::kPropertyIDWidth, lepus::Value("50vh")); |
| 5589 | + element->arch_type_ = RadonArch; |
| 5590 | + manager->fix_dynamic_update_transition_consume_bug_ = true; |
| 5591 | + |
| 5592 | + page->InsertNode(element); |
| 5593 | + page->FlushActionsAsRoot(); |
| 5594 | + |
| 5595 | + element->css_transition_manager_ = |
| 5596 | + std::make_unique<animation::CSSTransitionManager>(element.get()); |
| 5597 | + base::Vector<starlight::TransitionData> transition_data; |
| 5598 | + starlight::TransitionData data; |
| 5599 | + data.property = starlight::AnimationPropertyType::kWidth; |
| 5600 | + transition_data.emplace_back(data); |
| 5601 | + element->css_transition_manager_->setTransitionData(transition_data); |
| 5602 | + |
| 5603 | + tasm_mediator.captured_ids_.clear(); |
| 5604 | + tasm_mediator.captured_bundles_.clear(); |
| 5605 | + manager->UpdateViewport(200, SLMeasureModeDefinite, 800, |
| 5606 | + SLMeasureModeDefinite, false); |
| 5607 | + EXPECT_TRUE(HasCaptureSignWithStyleKeyAndValuePattern( |
| 5608 | + element->impl_id(), CSSPropertyID::kPropertyIDWidth, |
| 5609 | + CSSValue(0.f, CSSValuePattern::VH), 1)); |
| 5610 | +} |
| 5611 | + |
| 5612 | +TEST_P(FiberElementTest, |
| 5613 | + DynamicViewportUpdate_SkipTransitionConsume_NoNeedTransition) { |
| 5614 | + manager->UpdateViewport(100, SLMeasureModeDefinite, 600, |
| 5615 | + SLMeasureModeDefinite, false); |
| 5616 | + |
| 5617 | + auto page = manager->CreateFiberPage("page", 11); |
| 5618 | + auto element = manager->CreateFiberView(); |
| 5619 | + element->SetStyle(CSSPropertyID::kPropertyIDWidth, lepus::Value("50vh")); |
| 5620 | + |
| 5621 | + page->InsertNode(element); |
| 5622 | + page->FlushActionsAsRoot(); |
| 5623 | + |
| 5624 | + element->css_transition_manager_ = |
| 5625 | + std::make_unique<animation::CSSTransitionManager>(element.get()); |
| 5626 | + base::Vector<starlight::TransitionData> transition_data; |
| 5627 | + starlight::TransitionData data; |
| 5628 | + data.property = starlight::AnimationPropertyType::kOpacity; |
| 5629 | + transition_data.emplace_back(data); |
| 5630 | + element->css_transition_manager_->setTransitionData(transition_data); |
| 5631 | + |
| 5632 | + tasm_mediator.captured_ids_.clear(); |
| 5633 | + tasm_mediator.captured_bundles_.clear(); |
| 5634 | + manager->UpdateViewport(200, SLMeasureModeDefinite, 800, |
| 5635 | + SLMeasureModeDefinite, false); |
| 5636 | + EXPECT_TRUE(HasCaptureSignWithStyleKeyAndValuePattern( |
| 5637 | + element->impl_id(), CSSPropertyID::kPropertyIDWidth, |
| 5638 | + CSSValue(0.f, CSSValuePattern::VH), 1)); |
| 5639 | +} |
| 5640 | + |
5520 | 5641 | TEST_P(FiberElementTest, DynamicFontScaleUpdate) { |
5521 | 5642 | manager->UpdateViewport(100, SLMeasureModeDefinite, 600, |
5522 | 5643 | SLMeasureModeDefinite, false); |
|
0 commit comments