OLD | NEW |
| (Empty) |
1 // Copyright 2016 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 #include "ash/common/shelf/shelf_locking_manager.h" | |
6 | |
7 #include "ash/common/session/session_state_delegate.h" | |
8 #include "ash/common/shelf/wm_shelf.h" | |
9 #include "ash/common/wm_shell.h" | |
10 | |
11 namespace ash { | |
12 | |
13 ShelfLockingManager::ShelfLockingManager(WmShelf* shelf) : shelf_(shelf) { | |
14 WmShell::Get()->AddLockStateObserver(this); | |
15 SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate(); | |
16 session_locked_ = | |
17 delegate->GetSessionState() != session_manager::SessionState::ACTIVE; | |
18 screen_locked_ = delegate->IsScreenLocked(); | |
19 delegate->AddSessionStateObserver(this); | |
20 WmShell::Get()->AddShellObserver(this); | |
21 } | |
22 | |
23 ShelfLockingManager::~ShelfLockingManager() { | |
24 WmShell::Get()->RemoveLockStateObserver(this); | |
25 WmShell::Get()->GetSessionStateDelegate()->RemoveSessionStateObserver(this); | |
26 WmShell::Get()->RemoveShellObserver(this); | |
27 } | |
28 | |
29 void ShelfLockingManager::OnLockStateChanged(bool locked) { | |
30 screen_locked_ = locked; | |
31 UpdateLockedState(); | |
32 } | |
33 | |
34 void ShelfLockingManager::SessionStateChanged( | |
35 session_manager::SessionState state) { | |
36 session_locked_ = state != session_manager::SessionState::ACTIVE; | |
37 UpdateLockedState(); | |
38 } | |
39 | |
40 void ShelfLockingManager::OnLockStateEvent(EventType event) { | |
41 // Lock when the animation starts, ignoring pre-lock. There's no unlock event. | |
42 screen_locked_ |= event == EVENT_LOCK_ANIMATION_STARTED; | |
43 UpdateLockedState(); | |
44 } | |
45 | |
46 void ShelfLockingManager::UpdateLockedState() { | |
47 const ShelfAlignment alignment = shelf_->GetAlignment(); | |
48 if (is_locked() && alignment != SHELF_ALIGNMENT_BOTTOM_LOCKED) { | |
49 stored_alignment_ = alignment; | |
50 shelf_->SetAlignment(SHELF_ALIGNMENT_BOTTOM_LOCKED); | |
51 } else if (!is_locked() && alignment == SHELF_ALIGNMENT_BOTTOM_LOCKED) { | |
52 shelf_->SetAlignment(stored_alignment_); | |
53 } | |
54 } | |
55 | |
56 } // namespace ash | |
OLD | NEW |