blob: 3654224fde42437f0afbff845b19251a31cd7c6e [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/views/animation/test/ink_drop_impl_test_api.h"
#include "ui/views/animation/ink_drop_highlight.h"
#include "ui/views/animation/ink_drop_ripple.h"
#include "ui/views/animation/test/ink_drop_highlight_test_api.h"
#include "ui/views/animation/test/ink_drop_ripple_test_api.h"
namespace views {
namespace test {
//
// AccessFactoryOnExitHighlightState
//
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::Install(
InkDropImpl::HighlightStateFactory* state_factory) {
state_factory->ink_drop()->SetHighlightState(
std::make_unique<InkDropImplTestApi::AccessFactoryOnExitHighlightState>(
state_factory));
}
InkDropImplTestApi::AccessFactoryOnExitHighlightState::
AccessFactoryOnExitHighlightState(
InkDropImpl::HighlightStateFactory* state_factory)
: HighlightState(state_factory) {}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::Exit() {
state_factory()->ink_drop()->SetHovered(false);
}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::
ShowOnHoverChanged() {}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::OnHoverChanged() {}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::
ShowOnFocusChanged() {}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::OnFocusChanged() {}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::AnimationStarted(
InkDropState ink_drop_state) {}
void InkDropImplTestApi::AccessFactoryOnExitHighlightState::AnimationEnded(
InkDropState ink_drop_state,
InkDropAnimationEndedReason reason) {}
//
// AccessFactoryOnExitHighlightState
//
void InkDropImplTestApi::SetStateOnExitHighlightState::Install(
InkDropImpl::HighlightStateFactory* state_factory) {
state_factory->ink_drop()->SetHighlightState(
std::make_unique<InkDropImplTestApi::SetStateOnExitHighlightState>(
state_factory));
}
InkDropImplTestApi::SetStateOnExitHighlightState::SetStateOnExitHighlightState(
InkDropImpl::HighlightStateFactory* state_factory)
: HighlightState(state_factory) {}
void InkDropImplTestApi::SetStateOnExitHighlightState::Exit() {
InkDropImplTestApi::AccessFactoryOnExitHighlightState::Install(
state_factory());
}
void InkDropImplTestApi::SetStateOnExitHighlightState::ShowOnHoverChanged() {}
void InkDropImplTestApi::SetStateOnExitHighlightState::OnHoverChanged() {}
void InkDropImplTestApi::SetStateOnExitHighlightState::ShowOnFocusChanged() {}
void InkDropImplTestApi::SetStateOnExitHighlightState::OnFocusChanged() {}
void InkDropImplTestApi::SetStateOnExitHighlightState::AnimationStarted(
InkDropState ink_drop_state) {}
void InkDropImplTestApi::SetStateOnExitHighlightState::AnimationEnded(
InkDropState ink_drop_state,
InkDropAnimationEndedReason reason) {}
//
// InkDropImplTestApi
//
InkDropImplTestApi::InkDropImplTestApi(InkDropImpl* ink_drop)
: ui::test::MultiLayerAnimatorTestController(this), ink_drop_(ink_drop) {}
InkDropImplTestApi::~InkDropImplTestApi() {}
void InkDropImplTestApi::SetShouldHighlight(bool should_highlight) {
ink_drop_->SetShowHighlightOnHover(should_highlight);
ink_drop_->SetHovered(should_highlight);
ink_drop_->SetShowHighlightOnFocus(should_highlight);
ink_drop_->SetFocused(should_highlight);
DCHECK_EQ(should_highlight, ink_drop_->ShouldHighlight());
}
void InkDropImplTestApi::SetHighlightState(
std::unique_ptr<InkDropImpl::HighlightState> highlight_state) {
ink_drop_->highlight_state_ = std::move(highlight_state);
}
const InkDropHighlight* InkDropImplTestApi::highlight() const {
return ink_drop_->highlight_.get();
}
bool InkDropImplTestApi::IsHighlightFadingInOrVisible() const {
return ink_drop_->IsHighlightFadingInOrVisible();
}
bool InkDropImplTestApi::ShouldHighlight() const {
return ink_drop_->ShouldHighlight();
}
std::vector<ui::LayerAnimator*> InkDropImplTestApi::GetLayerAnimators() {
std::vector<ui::LayerAnimator*> animators;
if (ink_drop_->highlight_) {
InkDropHighlightTestApi* ink_drop_highlight_test_api =
ink_drop_->highlight_->GetTestApi();
std::vector<ui::LayerAnimator*> ink_drop_highlight_animators =
ink_drop_highlight_test_api->GetLayerAnimators();
animators.insert(animators.end(), ink_drop_highlight_animators.begin(),
ink_drop_highlight_animators.end());
}
if (ink_drop_->ink_drop_ripple_) {
InkDropRippleTestApi* ink_drop_ripple_test_api =
ink_drop_->ink_drop_ripple_->GetTestApi();
std::vector<ui::LayerAnimator*> ink_drop_ripple_animators =
ink_drop_ripple_test_api->GetLayerAnimators();
animators.insert(animators.end(), ink_drop_ripple_animators.begin(),
ink_drop_ripple_animators.end());
}
return animators;
}
} // namespace test
} // namespace views