| // Copyright 2017 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. |
| |
| #ifndef ASH_LOCK_SCREEN_ACTION_LOCK_SCREEN_ACTION_BACKGROUND_VIEW_H_ |
| #define ASH_LOCK_SCREEN_ACTION_LOCK_SCREEN_ACTION_BACKGROUND_VIEW_H_ |
| |
| #include "ash/ash_export.h" |
| #include "base/callback_forward.h" |
| #include "base/macros.h" |
| #include "ui/views/animation/ink_drop_observer.h" |
| #include "ui/views/animation/ink_drop_state.h" |
| #include "ui/views/widget/widget_delegate.h" |
| |
| namespace ash { |
| |
| // Widget delegate view that implements the contents of the lock action |
| // background widget. |
| // The widget hosts a view that contains a transparent view with a black ink |
| // drop. The view implementation provides methods to activate or hide the ink |
| // drop in the view. |
| class ASH_EXPORT LockScreenActionBackgroundView |
| : public views::WidgetDelegateView, |
| public views::InkDropObserver { |
| public: |
| LockScreenActionBackgroundView(); |
| ~LockScreenActionBackgroundView() override; |
| |
| // Request the ink drop to be activated. |
| // |done| - called when the ink drop animation ends. |
| void AnimateShow(base::OnceClosure done); |
| |
| // Requests the ink drop to be hidden. |
| // |done| - called when the ink drop animation ends. |
| void AnimateHide(base::OnceClosure done); |
| |
| // views::InkDropListener: |
| void InkDropAnimationStarted() override; |
| void InkDropRippleAnimationEnded(views::InkDropState state) override; |
| |
| // views::WidgetDelegateView: |
| bool CanActivate() const override; |
| |
| private: |
| friend class LockScreenActionBackgroundViewTestApi; |
| class NoteBackground; |
| |
| // Gets background_ as a views::View*. |
| views::View* GetBackgroundView(); |
| |
| base::OnceClosure animation_end_callback_; |
| views::InkDropState animating_to_state_; |
| |
| NoteBackground* background_ = nullptr; |
| |
| DISALLOW_COPY_AND_ASSIGN(LockScreenActionBackgroundView); |
| }; |
| |
| } // namespace ash |
| |
| #endif // ASH_LOCK_SCREEN_ACTION_LOCK_SCREEN_ACTION_BACKGROUND_VIEW_H_ |