#include "chrome/browser/ui/views/tabs/tab_slot_animation_delegate.h"
TabSlotAnimationDelegate::TabSlotAnimationDelegate(TabContainer* tab_container,
TabSlotView* slot_view)
: tab_container_(tab_container), slot_view_(slot_view) {
slot_view_->set_animating(true);
view_observation_.Observe(slot_view);
}
TabSlotAnimationDelegate::~TabSlotAnimationDelegate() = default;
void TabSlotAnimationDelegate::AnimationProgressed(
const gfx::Animation* animation) {
tab_container_->OnTabSlotAnimationProgressed(slot_view_);
}
void TabSlotAnimationDelegate::AnimationEnded(const gfx::Animation* animation) {
if (slot_view_) {
slot_view_->set_animating(false);
}
AnimationProgressed(animation);
if (slot_view_) {
slot_view_->DeprecatedLayoutImmediately();
}
}
void TabSlotAnimationDelegate::AnimationCanceled(
const gfx::Animation* animation) {
AnimationEnded(animation);
}
void TabSlotAnimationDelegate::OnViewIsDeleting(views::View* observed_view) {
CHECK_EQ(slot_view_, observed_view);
slot_view_ = nullptr;
}
void TabSlotAnimationDelegate::StopObserving() {
view_observation_.Reset();
}