Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: ash/common/shelf/shelf_locking_manager.cc

Issue 2736573002: chromeos: Move files in //ash/common to //ash, part 2 (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW
« no previous file with comments | « ash/common/shelf/shelf_locking_manager.h ('k') | ash/common/shelf/shelf_locking_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698