| Index: ash/common/shelf/shelf_background_animator.cc
|
| diff --git a/ash/common/shelf/shelf_background_animator.cc b/ash/common/shelf/shelf_background_animator.cc
|
| deleted file mode 100644
|
| index 072f59ea21d1bb6a5bf11a8fa7a419bd3d25cc09..0000000000000000000000000000000000000000
|
| --- a/ash/common/shelf/shelf_background_animator.cc
|
| +++ /dev/null
|
| @@ -1,202 +0,0 @@
|
| -// 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 "ash/common/shelf/shelf_background_animator.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "ash/common/material_design/material_design_controller.h"
|
| -#include "ash/common/shelf/shelf_background_animator_observer.h"
|
| -#include "ash/common/shelf/shelf_constants.h"
|
| -#include "ash/common/shelf/wm_shelf.h"
|
| -
|
| -namespace ash {
|
| -
|
| -namespace {
|
| -// The total number of animators that will call BackgroundAnimationEnded().
|
| -const int kNumAnimators = 3;
|
| -
|
| -const int kMaxAlpha = 255;
|
| -} // namespace
|
| -
|
| -ShelfBackgroundAnimator::ShelfBackgroundAnimator(
|
| - ShelfBackgroundType background_type,
|
| - WmShelf* wm_shelf)
|
| - : wm_shelf_(wm_shelf) {
|
| - if (wm_shelf_)
|
| - wm_shelf_->AddObserver(this);
|
| - // Initialize animators so that adding observers get notified with consistent
|
| - // values.
|
| - AnimateBackground(background_type, BACKGROUND_CHANGE_IMMEDIATE);
|
| -}
|
| -
|
| -ShelfBackgroundAnimator::~ShelfBackgroundAnimator() {
|
| - if (wm_shelf_)
|
| - wm_shelf_->RemoveObserver(this);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AddObserver(
|
| - ShelfBackgroundAnimatorObserver* observer) {
|
| - observers_.AddObserver(observer);
|
| -
|
| - observer->UpdateShelfOpaqueBackground(opaque_background_animator_->alpha());
|
| - observer->UpdateShelfAssetBackground(asset_background_animator_->alpha());
|
| - observer->UpdateShelfItemBackground(item_background_animator_->alpha());
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::RemoveObserver(
|
| - ShelfBackgroundAnimatorObserver* observer) {
|
| - observers_.RemoveObserver(observer);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::PaintBackground(
|
| - ShelfBackgroundType background_type,
|
| - BackgroundAnimatorChangeType change_type) {
|
| - if (target_background_type_ == background_type &&
|
| - change_type == BACKGROUND_CHANGE_ANIMATE) {
|
| - return;
|
| - }
|
| -
|
| - AnimateBackground(background_type, change_type);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::OnBackgroundTypeChanged(
|
| - ShelfBackgroundType background_type,
|
| - BackgroundAnimatorChangeType change_type) {
|
| - PaintBackground(background_type, change_type);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::UpdateBackground(BackgroundAnimator* animator,
|
| - int alpha) {
|
| - OnAlphaChanged(animator, alpha);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::BackgroundAnimationEnded(
|
| - BackgroundAnimator* animator) {
|
| - ++successful_animator_count_;
|
| - DCHECK_LE(successful_animator_count_, kNumAnimators);
|
| - // UpdateBackground() is only called when alpha values change, this ensures
|
| - // observers are always notified for every background change.
|
| - OnAlphaChanged(animator, animator->alpha());
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::OnAlphaChanged(BackgroundAnimator* animator,
|
| - int alpha) {
|
| - if (animator == opaque_background_animator_.get()) {
|
| - FOR_EACH_OBSERVER(ShelfBackgroundAnimatorObserver, observers_,
|
| - UpdateShelfOpaqueBackground(alpha));
|
| - } else if (animator == asset_background_animator_.get()) {
|
| - FOR_EACH_OBSERVER(ShelfBackgroundAnimatorObserver, observers_,
|
| - UpdateShelfAssetBackground(alpha));
|
| - } else if (animator == item_background_animator_.get()) {
|
| - FOR_EACH_OBSERVER(ShelfBackgroundAnimatorObserver, observers_,
|
| - UpdateShelfItemBackground(alpha));
|
| - } else {
|
| - NOTREACHED();
|
| - }
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AnimateBackground(
|
| - ShelfBackgroundType background_type,
|
| - BackgroundAnimatorChangeType change_type) {
|
| - // Ensure BackgroundAnimationEnded() has been called for all the
|
| - // BackgroundAnimators owned by this so that |successful_animator_count_|
|
| - // is stable and doesn't get updated as a side effect of destroying/animating
|
| - // the animators.
|
| - StopAnimators();
|
| -
|
| - bool show_background = true;
|
| - if (can_reuse_animators_ && previous_background_type_ == background_type) {
|
| - DCHECK_EQ(opaque_background_animator_->paints_background(),
|
| - asset_background_animator_->paints_background());
|
| - DCHECK_EQ(asset_background_animator_->paints_background(),
|
| - item_background_animator_->paints_background());
|
| -
|
| - show_background = !opaque_background_animator_->paints_background();
|
| - } else {
|
| - CreateAnimators(background_type, change_type);
|
| -
|
| - // If all the previous animators completed successfully and the animation
|
| - // was between 2 distinct states, then the last alpha values are valid
|
| - // end state values.
|
| - can_reuse_animators_ = target_background_type_ != background_type &&
|
| - successful_animator_count_ == kNumAnimators;
|
| - }
|
| -
|
| - successful_animator_count_ = 0;
|
| -
|
| - opaque_background_animator_->SetPaintsBackground(show_background,
|
| - change_type);
|
| - asset_background_animator_->SetPaintsBackground(show_background, change_type);
|
| - item_background_animator_->SetPaintsBackground(show_background, change_type);
|
| -
|
| - if (target_background_type_ != background_type) {
|
| - previous_background_type_ = target_background_type_;
|
| - target_background_type_ = background_type;
|
| - }
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::CreateAnimators(
|
| - ShelfBackgroundType background_type,
|
| - BackgroundAnimatorChangeType change_type) {
|
| - const int opaque_background_alpha =
|
| - opaque_background_animator_ ? opaque_background_animator_->alpha() : 0;
|
| - const int asset_background_alpha =
|
| - asset_background_animator_ ? asset_background_animator_->alpha() : 0;
|
| - const int item_background_alpha =
|
| - item_background_animator_ ? item_background_animator_->alpha() : 0;
|
| -
|
| - const bool is_material = MaterialDesignController::IsShelfMaterial();
|
| - int duration_ms = 0;
|
| -
|
| - switch (background_type) {
|
| - case SHELF_BACKGROUND_DEFAULT:
|
| - duration_ms = is_material ? 500 : 1000;
|
| - opaque_background_animator_.reset(
|
| - new BackgroundAnimator(this, opaque_background_alpha, 0));
|
| - asset_background_animator_.reset(
|
| - new BackgroundAnimator(this, asset_background_alpha, 0));
|
| - item_background_animator_.reset(
|
| - new BackgroundAnimator(this, item_background_alpha,
|
| - GetShelfConstant(SHELF_BACKGROUND_ALPHA)));
|
| - break;
|
| - case SHELF_BACKGROUND_OVERLAP:
|
| - duration_ms = is_material ? 500 : 1000;
|
| - opaque_background_animator_.reset(new BackgroundAnimator(
|
| - this, opaque_background_alpha,
|
| - is_material ? GetShelfConstant(SHELF_BACKGROUND_ALPHA) : 0));
|
| - asset_background_animator_.reset(new BackgroundAnimator(
|
| - this, asset_background_alpha,
|
| - is_material ? 0 : GetShelfConstant(SHELF_BACKGROUND_ALPHA)));
|
| - item_background_animator_.reset(new BackgroundAnimator(
|
| - this, item_background_alpha,
|
| - is_material ? 0 : GetShelfConstant(SHELF_BACKGROUND_ALPHA)));
|
| - break;
|
| - case SHELF_BACKGROUND_MAXIMIZED:
|
| - duration_ms = is_material ? 250 : 1000;
|
| - opaque_background_animator_.reset(
|
| - new BackgroundAnimator(this, opaque_background_alpha, kMaxAlpha));
|
| - asset_background_animator_.reset(new BackgroundAnimator(
|
| - this, asset_background_alpha,
|
| - is_material ? 0 : GetShelfConstant(SHELF_BACKGROUND_ALPHA)));
|
| - item_background_animator_.reset(new BackgroundAnimator(
|
| - this, item_background_alpha, is_material ? 0 : kMaxAlpha));
|
| - break;
|
| - }
|
| -
|
| - opaque_background_animator_->SetDuration(duration_ms);
|
| - asset_background_animator_->SetDuration(duration_ms);
|
| - item_background_animator_->SetDuration(duration_ms);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::StopAnimators() {
|
| - if (opaque_background_animator_)
|
| - opaque_background_animator_->Stop();
|
| - if (asset_background_animator_)
|
| - asset_background_animator_->Stop();
|
| - if (item_background_animator_)
|
| - item_background_animator_->Stop();
|
| -}
|
| -
|
| -} // namespace ash
|
|
|