1// 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_ 48