blob: a7dbea51bc2c25441e7b008d225d15e252a0cf43 [file] [log] [blame]
Torne (Richard Coles)f2477e02013-11-28 11:55:43 +00001// Copyright 2013 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
5#ifndef ASH_WM_IMMERSIVE_REVEALED_LOCK_H_
6#define ASH_WM_IMMERSIVE_REVEALED_LOCK_H_
7
8#include "ash/ash_export.h"
9#include "base/basictypes.h"
10#include "base/memory/weak_ptr.h"
11
12namespace ash {
13
14// Class which keeps the top-of-window views revealed for the duration of its
15// lifetime. If acquiring the lock causes a reveal, the top-of-window views
16// will animate according to the |animate_reveal| parameter passed in the
17// constructor. See ImmersiveFullscreenController::GetRevealedLock() for more
18// details.
19class ASH_EXPORT ImmersiveRevealedLock {
20 public:
21 class ASH_EXPORT Delegate {
22 public:
23 enum AnimateReveal {
24 ANIMATE_REVEAL_YES,
25 ANIMATE_REVEAL_NO
26 };
27
28 virtual void LockRevealedState(AnimateReveal animate_reveal) = 0;
29 virtual void UnlockRevealedState() = 0;
30
31 protected:
32 virtual ~Delegate() {}
33 };
34
35 ImmersiveRevealedLock(const base::WeakPtr<Delegate>& delegate,
36 Delegate::AnimateReveal animate_reveal);
37 ~ImmersiveRevealedLock();
38
39 private:
40 base::WeakPtr<Delegate> delegate_;
41
42 DISALLOW_COPY_AND_ASSIGN(ImmersiveRevealedLock);
43};
44
45} // namespace ash
46
47#endif // ASH_WM_IMMERSIVE_REVEALED_LOCK_H_