delayed_animation_observer_impl.cc 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/wm/overview/delayed_animation_observer_impl.h"
  5. #include "ash/wm/overview/overview_delegate.h"
  6. #include "base/bind.h"
  7. #include "base/threading/thread_task_runner_handle.h"
  8. namespace ash {
  9. ForceDelayObserver::ForceDelayObserver(base::TimeDelta delay) {
  10. base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
  11. FROM_HERE,
  12. base::BindOnce(&ForceDelayObserver::Finish,
  13. weak_ptr_factory_.GetWeakPtr()),
  14. delay);
  15. }
  16. ForceDelayObserver::~ForceDelayObserver() = default;
  17. void ForceDelayObserver::SetOwner(OverviewDelegate* owner) {
  18. owner_ = owner;
  19. }
  20. void ForceDelayObserver::Shutdown() {
  21. owner_ = nullptr;
  22. }
  23. void ForceDelayObserver::Finish() {
  24. if (owner_)
  25. owner_->RemoveAndDestroyEnterAnimationObserver(this);
  26. }
  27. EnterAnimationObserver::EnterAnimationObserver() = default;
  28. EnterAnimationObserver::~EnterAnimationObserver() = default;
  29. void EnterAnimationObserver::OnImplicitAnimationsCompleted() {
  30. if (owner_)
  31. owner_->RemoveAndDestroyEnterAnimationObserver(this);
  32. }
  33. void EnterAnimationObserver::SetOwner(OverviewDelegate* owner) {
  34. DCHECK(!owner_);
  35. owner_ = owner;
  36. }
  37. void EnterAnimationObserver::Shutdown() {
  38. owner_ = nullptr;
  39. }
  40. ExitAnimationObserver::ExitAnimationObserver() = default;
  41. ExitAnimationObserver::~ExitAnimationObserver() = default;
  42. void ExitAnimationObserver::OnImplicitAnimationsCompleted() {
  43. if (owner_)
  44. owner_->RemoveAndDestroyExitAnimationObserver(this);
  45. }
  46. void ExitAnimationObserver::SetOwner(OverviewDelegate* owner) {
  47. DCHECK(!owner_);
  48. owner_ = owner;
  49. }
  50. void ExitAnimationObserver::Shutdown() {
  51. owner_ = nullptr;
  52. }
  53. } // namespace ash